ぺんちゃん日記

食と歴史と IT と。 Web の旅人ぺんじろうが好奇心赴くままに彷徨います 。

新規エントリーを立ち上げる時にテンプレートを読み込んで本文に適用する【AutoHotkey】。

f:id:yasushiito:20190403184928p:plain

繰り返し作業はありませんか?

今年に入ってからAutoHotkeyの話題が非常に多いです。
はてなブログで新規エントリをブラウザに準備しながら、音声入力されたテキストをタイトルに利用するところまでは自動化できています。
おかげで新規エントリ作業はストレス無く出来るようになりました。
ここからが問題です。
その都度AutoHotkeyのロゴをアイキャッチとして記事の先頭に貼り付ける作業を繰り返しております。
それに加えて最近はスクリプトのダウンロード方法や説明書への誘導をフッターとして差し込む作業も発生しています。
もちろんAutoHotkey以外の記事も書きますから、常にこれらを展開されても邪魔なだけです。
AutoHotkeyに関する記事だけ定型文を準備したいです。
新規エントリスクリプトに特殊ケースの処理を用意するすることになるので、なかなか着手できずにいました。
Auto HOT key 記事には必要な繰り返し作業ですから思い切って自動化したいと思います。

どんな機能にしましょう?

AutoHotkeyに関連する記事のタイトルにはほとんどの場合【AutoHotkey】がついています。
実はこの括弧付き見出しは、eltestでクリップボードにコピーする際にタイトル中に含まれる ahk を検索置換しています。
その処理を Auto HOT key のスクリプトに任せて、タイトルに/ahk が含まれていたら本文の入力フィールドに特定のテンプレートを貼り付けてしまえば良いと思います。
もちろんタイトルの修正も行います。

テンプレートは特定のディレクトリにテキストファイルとして用意してファイルを読み込んでしまいましょう。
好きなようにテンプレートファイルを書き換えれば運用も簡単だと思います。
とりあえずテンプレートのディレクトリは呼び出し側スクリプトの下のtemplateディレクトリとします。
ダウンロードされたディレクトリ構成はこんな感じになってますよね?

autohotkey
    lib
    ex
    sample
    template

AutoHotkey 記事のテンプレートのファイル名はblogahk.txtとします。
blogahk.sampleというファイルがあらかじめ用意されているので、これをblogahk.txtとしてコピーして内容を参考にしつつ編集してくださいね。

実装してみた。

ソースコード全体はもうちょい下に掲載するとして、今回のポイントは次の部分です。

    pos := RegExMatch(t, "\/ahk")
    if pos > 0
    {
        t := RegExReplace(t, "\/ahk", "【AutoHotkey】")
        FileRead, Clipboard,%A_ScriptDir%\template\blogahk.txt
        If ErrorLevel <> 0
            Clipboard = テンプレートファイルが開けませんでした。
  • タイトルが入った変数 tを正規表現で検索します。
  • タイトルのキーワード部分/ahkを見出しに置換します。
  • FileReadでテンプレートファイルを読み込んでクリップボードに転送します。

受け取りの変数をClipboardにすれば直接クリップボードに移せます。
テンプレートファイルは、%A_ScriptDir%(この関数を呼び出したスクリプトがあるディレクトリ)の下のtemplateディレクトリの下にあるblogahk.txtファイルを使います。

  • FileReadは読み込みに失敗するとErrorLevelが0以外になります。
  • ファイルが見つからないなどの障害が想定されるので、その場合のエラー情報はブログ本文の入力エリアにコピペされることにします。

出来上がったスクリプト全体は次のようになりました。


最後に。

将来的にはAutoHotkey以外の記事でもテンプレートを用意できるようにしたいです。
新規エントリースクリプトにダラダラと書くの気持ち悪くてゾワゾワするので将来的にはカテゴリごとに分けたいと思います。
表示されているソースコードは既に変更されてるかもしれませんね。

この記事に登場するAutohotkey スクリプトについて

この記事の中で私が作成したプログラムは、全て自由に使うことができます。
詳しくはこちら