ぺんちゃん日記

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

Chrome で開いているタブの URL を取得して作業ウインドウを判定する【AutoHotkey】。

f:id:yasushiito:20190403184928p:plain

これまでの経緯。

タイトルだけでは意味が分かりませんよね?
私は Google Chrome のウィンドウを2枚開いて、一枚は Google documentによる音声入力ウィンドウとして使い、もう一枚は調べ物をしたりブログ執筆などの作業ウィンドウとして使っています。

f:id:yasushiito:20190909102059p:plain

普段はこんな感じで二つの画面を行き来しながら作業しています。
1日のほとんどはこの二つのウィンドウで進んでいきますね。
作業の中でAuto HOT Key からChrome を操作することが結構あります。
例えば、 はてブしたり検索する時には作業ウィンドウを使います。
音声入力されたテキストを取り込むことも多いです。
Auto HOT Key から chrome を使い分けるためにウィンドウの判別処理を用意しています。
その判別処理が「音声入力document開いていれば音声入力ウィンドウ」「それ以外は作業ウィンドウ」といった具合に。

            pos := RegExMatch(title,"音声入力用")
            if pos > 0
            {
                WinGet,editor,ID,%idstr%
            }
            else
            {
                WinGet,work,ID,%idstr%
            }

myahk/detectchrome.ahk at master · yasushiito/myahk

問題がある。

それ以外なら作業Windowって……。
これだと 3枚以上の Chrome ウィンドウを開いたときに期待する処理になりません。
誰が見てもこのソースコードはまずいっていますよ。
過去ログを振り返ってみれば、問題のコードが作りこまれたのはこの辺ですね。
Chrome ウィンドウは何枚も開くようなものではないので実害はないのですが、こんないい加減な処理ではソースコードを眺めるたびに凹むので何枚開いても動くようにしたいです。

この問題を避けるために、 Ctrl + tab で一つ一つ開いているタブを確認して作業ウインドウを見つける処理も書いています。
しかし、今開いているタブの情報を使って何らかの処理をしたいような場合には、タブを切り替えるわけにはいきません。
タブを一切動かさずに全てのタブの情報を取得できれば良いのですけど……。

Chrome 拡張が使えるんじゃない?

以前に導入した Chrome Extension Copy All URLs+を使えば開いているタブの URL を改行区切りで一気に取得できます。

でも開いているタブの URL だけを取得したいこともある。
Copy all URL +は1ペアのキーボードショートカットと動作しか対応していないので、 全タブの情報取得に割り当ててしまうとカレントタブの URL だけを取得する手立てがなくなってしまいます。
状況に合わせて URL 取得の方法を選択できたらなあ。

それならもう一つ別の拡張を入れれば良いのでは?

その手があった。

URL をクリップボードにコピーというそのまんまのネーミングの Chrome 拡張があるので、これをインストールして ALT + C に割り当てて、カレントタブの URL 取得はこいつを使うことにします。

問題のコードが作りこまれたのはこの辺

そしてこれまで使っていたcopy all URLs+の方は ALT + SHIFT + C のショートカットを割り当てて、 ウィンドウで開いているタブの URL を全て取得できるようにします。

このエクステンション、これまで適当に使っていましたが、 オプションの意味がやっとわかりました。

f:id:yasushiito:20190909102158p:plain

  • Copy highlighted tabs only

これをチェックしておくとカレントタブの URL だけを取得します。
Chrome は Ctrl を押しながらタブをクリックすると複数の任意のタブを選択することができます。
その場合もこのオプションをチェックしてあれば、選択されたタブだけを URL 取得できます。

これをチェックしておくと全ての Chrome ウィンドウのタブの URL を取得します。
Chrome はいくつもウインドウを開けるのですが、このこのオプションのチェックが外れている場合は利用しているウィンドウのタブだけを URL の取得対象とします。
このオプションがチェックされていれば、すべてのウィンドウで開かれているタブを一切合切かき集めて URL 取得します。

今回の私は利用中のウィンドウのすべてのタブの URL を取得したいので、どちらもチェックを外しておきます。

これで ALT + C を入力すればカレントタブの URL を、 ALT + SHIFT + C を入力すれば全てのタブをの URL を取得できるようになりました。

作業ウインドウを判定する。

クリップボードを空にして Chrome ウィンドウに対して ALT + SHIFT + C を 送ります。
クリップボードの中身を確認して作業ウィンドウ特有のページの URL を文字列検索します。
私の場合は作業ウィンドウでは必ず Google ドライブのホームページを開いているので、その URL が見つかれば作業ウィンドウということになります。

今日のところはこれまでにしておきます。

ちなみにこの記事は入院前に書きためた1ヶ月以上前の内容です。


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

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