ぺんちゃん日記

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

【AutoHotkey】Google Chrome 表示中のページのリンクを選択範囲文字で差し込む

f:id:yasushiito:20190401185150p:plain

昨日に引き続いてリンクを差し込みます。
前回は埋め込みリンクでしたが、今日は選択範囲のリンクを差し込みます。上の行の「昨日に引き続いて」の部分のようにリンクされているやつですね 。
埋め込みリンクはノークリックでも概要がなんとなく分かるというメリットはありますが、邪魔で読みづらくなるデメリットもありますからね。
なんでもかんでも埋め込みリンクというわけにはいきません。
埋め込みリンクの次に使いやすいのは選択範囲のリンク挿入ではないでしょうか?

マニュアル操作での挿入方法は簡単です。
はてなブログの編集フォームのテキストエリアに本文を入力します。
必要な範囲をマウスドラッグで選択します。

f:id:yasushiito:20190402160426p:plain

リンクボタンをクリックして参照するページのURL を入力したらプレビューします。
リンクの形式の選択範囲を選べるようになります。

f:id:yasushiito:20190402160450p:plain

今回はこれを自動化します。
と言っても挿入されるリンクの文字列を次のようなスタイルになっていますから、 Auto HOT key のスクリプトでこれを生成するだけです。

[http://ページの URL:title=選択文字列]

参照するページの URL と選択文字列の二つを取得できれば OK ですね 。

動作条件として、ブログ編集ページの入力フォームでリンクを挿入したい場所のテキストを選択していることと、同じ Chrome のウィンドウに参照するページのタブをカレントタブで開いていることを要求します。

出来上がったスクリプトはこちら。

#+=::
    editor := 0
    work := 0
    WinGet, windows, list
    loop ,%windows%
    {
        idstr := "ahk_id " . windows%A_Index%
        WinGetTitle,title,%idstr%
        pos := RegExMatch(title,"- Google Chrome$")
        if pos > 0
        {
            pos := RegExMatch(title,"音声入力用")
            if pos > 0
            {
                WinGet,editor,ID,%idstr%
            }
            else
            {
                WinGet,work,ID,%idstr%
            }
        }
    }
    If (editor = 0) return
    If (work = 0) return
    Sleep 500
    WinActivate,ahk_id %work%
    Sleep 500
    Send,^l
    Sleep 500
    Send,^a
    Sleep 500
    Send,^c
    WinGetActiveTitle, current
    Sleep 500
    url := clipboard
    Loop
    {
        Send,^{Tab}
        Sleep 500
        IfWinExist,ブログ記事編集 - はてなブログ
        {
            Send,^x
            Sleep 500
            t := clipboard
            u := "[" . url . ":title=" . t . "]"
            clipboard = %u%
            Sleep 500
            Send,^v
            break
        }
        WinGetActiveTitle, active
        if current = %active%
        {
            Send,^t
            Sleep 500
            SendInput,http://blog.hatena.ne.jp/yasushiito/yasushiito.hatenablog.com/edit
            Send,{enter}
            Sleep 3000
            Send,^v
            break
        }
    }
    return

選択文字列をショートカットで切り取りしてクリップボードの内容を変数に取り込んでしまえば、挿入したい場所を失うことなくリンクを挿入できます 。

注意点は前回のリンク差し込むスクリプトと同じです 。
それに加えて一つ問題を発見したので対処します。

はてなブログでページの上の方に表示されている[記事を書く]をクリックして開いた編集フォームでは期待通りに動作しません。
f:id:yasushiito:20190402160839p:plain

ページタイトルと URL を見ていただければわかりますが、新規エントリにページ遷移していないですね。
新規エントリータブの判定はタイトルの文字列が新規エントリー用のものであることを利用しているのですから当然動きません。
はてなが提供しているプログラムの仕様に漏れがあると言いたいところですが、文句を言っても始まらないので運用で回避します。
はてなブログで新規エントリーする場合は ダッシュボードのサイドメニューから開くか、プルダウンメニューから開きます。
f:id:yasushiito:20190402161102p:plain
f:id:yasushiito:20190402160959p:plain