ぺんちゃん日記

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

Chrome で URL を取得するために最適な Chrome Extension を見つける。【AutoHotkey】。

f:id:yasushiito:20190403184928p:plain

これまでの経緯。

Autohotkey から Google Chrome の URL を取得して自動操作するスクリプトを作っています。
Google Chrome の仕様変更により JavaScript の空撃ちによる入力フォームへのフォーカス戻しが不可能になりました。
やはりここはどうしても妥協できないので何とかして編集フォームからフォーカスを動かすことなくページの URL を取得したいものです。

実現可能性が一番高そうなのが Chrome Extension を導入です。
現在使っている Chrome Extension がワンキーでクリップボードにコピーできて ですが便利なのですが、。機能不足でキー入力を取りこぼしているだけかもしれません。
入力フォーム上ではキーボードショートカットを Chrome では実行できない仕様になっているのだと思い込んでいましたが、色々弄り回しているうちにはてブ Extension だと普通にポップアップが開いてくれます。
ということは不可能ではないということ。

はてブツールバーのキーボードショートカットの設定はどこでやったっけ?
すっかり忘れてしまったのでスクリーンショット付きで説明するよ。

Chrome のメニューを開いてその他のツールの中から拡張機能を選びます。

f:id:yasushiito:20190624091143p:plain
f:id:yasushiito:20190624091213p:plain

左上のメニューアイコンからキーボードショートカット選んで各エクステンションに割り当てられたキーボードショートカットを一覧できます。

f:id:yasushiito:20190624091306p:plain
f:id:yasushiito:20190624091331p:plain
f:id:yasushiito:20190624091403p:plain

きっとクロームにお願いして特定の組み合わせのキーが入力されたら通知してもらうような仕組みを利用していればエクステンションを起動できるのでしょう。
Copy URL+はここに表示されないところを見ると、自前でキー入力をフックしているのかな?

ここまで事情が分かれば後は対応したエクステンションを探すだけです。

要求通りのエクステンション。

いくつかの URL 取得を行うChrome Extension を試してみた結果、 Copy All Urlsが要求通りの仕様で実装されていました。

chrome.google.com

defaultの動作では開いているすべてのタブの URL を一気にコピーします。
さすがにそれでは使いにくいので、設定を 現在のタブだけコピーするように変更します。

設定ページは Chrome の右上のアイコンをクリックしてメニューからオプションを選びます。

f:id:yasushiito:20190624093559p:plain

f:id:yasushiito:20190624093625p:plain

設定ページが開きます。

f:id:yasushiito:20190624093702p:plain

Copy highlighted tabs onlyの項目をチェックして選択中のタブだけに限定します。
f:id:yasushiito:20190624093842p:plain

mime Type の選択ボックスではplain Textを選ぶことで URL だけをクリップできます。
f:id:yasushiito:20190624093907p:plain

初期状態でキーボードショートカットを割り当てられています。
ALT + C でクリップボードにコピー、 ALT + V でペーストです。
キーの割り当てを変更するには、上の方で説明した Chrome のキーボードショートカット設定を開いてくださいね。
f:id:yasushiito:20190624091403p:plain

コードの修正。

キーボードショートカットの動作が確認できたところでAuto HOT key スクリプトを修正します。
ブラウザの URL を取得する処理はすべてgetbrowserurl.ahkにまとめられています。
URL バーにフォーカスを移してコピペするまでもなく、一発キーボードショートカットを送信するだけ。

ただし URL の末尾に改行コードがついているので削除しなければなりません。
本来は複数(全て)のタブの URL を取得するためのエクステンションなので、 URL が区切られているのは当然であります。
本音を言えば URL が一つだった場合は改行を入れないようにして欲しかったところですが……。

これで ALT + C を入力すれば Chrome で表示したページの URL をクリップボードにコピーできるようになりました。

最終確認。

ブラウザから URL を取得するスクリプトは様々なシーンで呼び出されます。
Firefox のタブを選択する場合にも利用されます。
ということは、 Firefox 側でも同様のキーボードショートカットで URL をコピーできなければなりません。
もし Firefox に同等機能のアドオンがなければ、スクリプト Chrome 用と Firefox 用に分けなければならないかもしれません。
それは結構修正の手間がかかります。
できれば避けたいので気合を入れて Firefox アドオンを探してみます。
ありがたいことに? Firefox のアドオンCopyTabTitleUrlが既にインストールされており、同じように ALT + C で URL をクリップボードに転送してくれるように設定できています。
と言うか多分昔自分でやったんだな。
全く記憶にないよ。

addons.mozilla.org

終わってみて。

既存のスクリプトが突然動かなくなってめちゃくちゃ焦りましたが、 なんとか克服することができました。
しかも操作手順が少なくなったおかげで URL による探索の速度が大幅に改善されました。
いくつものソフトウェアをインストールして設定を弄り回しては削除するという繰り返しにうんざりしましたが、最終的にはその作業が一番の近道だったということですね。
ソフトウェアの選定は面倒くさがらずに入念に行いという知見が得られました。