いまや多くの仕事でインターネットによる調べごとが欠かせない。そうなると、特定のサイトやページの情報をなんらかのかたちで、他のアプリに取り込む必要が出てくる。情報としては、URLとページやサイトの名前程度でいいのだが、こうしたWebページ情報の扱いは、受け取る側のアプリケーションによって異なるのが普通だ。そうなると、何らかの処理を挟んで、受け取り側アプリの形式に合わせた形式に変換する必要がある。
最も、単にURLやその他の情報を手でコピーして貼り付けるときに、形式を合わせるといった「根性」処理も可能なのだろうが、2回目は許しても、3回も同じことを繰り返すというのは、何か「負けた」ような気がする性格。ここはスクリプトを作成するしかない。
おそらくスクリプト自体は簡単なものになると考えられる。ブラウザの開いているページから「ページタイトル」と「URL」を得て、これを対象アプリの要求する形式に変換する。アプリ側への転送には、クリップボードを使えば、ユーザーが情報の書き込み位置を指定できる。対象とするアプリはいくつも想定できるが、ここでは、ExcelのHyperlink関数を含んだ式を最終成果物してクリップボードに入れておくことにする。ExcelのHyperlink関数は、インターネットのWebページをリンク先とする場合、
HYPERLINK("ページのURL" , "ページタイトル文字列")
という形式となり、関数の前に等号「=」を付けた文字列を作成することでExcelの式とすることができる。
基本的なアルゴリズムとしては、
ブラウザの開いているページからページタイトルとURLを得る
文字列「=HYPERLINK("URL" , "ページタイトル")」を作成しクリップボードに格納する
というものだ。これ自体は特に難しいことではない。ただ、利用する言語にDOMツリーを扱うライブラリがないと、ブラウザから情報を得るために少し苦労するかもしれない。
一番の問題は、このプログラムを、どこに置いて、どうやって実行するか? という問題である。もちろん、ちゃんとしたGUIを持つWindowsのアプリケーションをC#やC++で作って、スタートメニューに登録するというのも1つの手ではある。しかし、スターメニューを開いて、アイコンをクリック、処理を行わせるというのは手順としては煩雑だ。
こういうときに便利なのが、俗にブックマークレットと呼ばれるものだ。これは、ブラウザのブックマークにURLではなく、JavaScriptのプログラムを登録し、ブラウザのブックマークバーに配置しておき、ブックマーク(アイコンやテキスト)のクリックでプログラムを実行させるものだ。
言語はJavaScriptに限られることと、特殊な表記方法が必要だが、ブラウザで現在開いているページから情報を得るのには最適の場所である。(リスト01)は、ブックマークのURL欄に登録するJavaScriptのプログラムだ。全体が無名の関数になっていて、これを実行するようになっている。prompt関数の注釈を外すと、クリップボードにコピーする文字列が入力ボックスに表示される。スクリプトがエラーになると、その後が実行されないので、最後にPrompt関数を入れて置くことで、スクリプトにエラーがあるかどうかを判定できる。利用時に注意するのは、クリップボードにコピーするnavigator.clipboard.writeText関数は、HTTPSで開いたページなど、安全な環境でないと動作しない点だ。
これをブラウザのブックマーク編集ページでURL欄に貼り付ける(写真01)。
■リスト01
javascript:(
function(){
var r='=Hyperlink("'+document.location.href+'","'+document.title+'")';
navigator.clipboard.writeText(r);
/* prompt("Excel用",r); */
}
)();
-

写真01: ブックマークバーに配置したブックマーク(ここでは“H”)のURLとして、リスト01のスクリプトを貼り付ける。あとは、必要なページでブックマークをクリックすると、クリップボードにExcel用のHyperlink関数と引数としてURLとページタイトルが入った数式がコピーされる
今回のタイトルネタは、ダグラス・アダムスの「銀河ヒッチハイク・ガイド」である。オリジナルは、英国BBCのラジオ(脚本がアダムス)なので、筆者は聞いたこともないが、その小説版の日本語訳(1982年。新潮文庫)を読んだ。一定年齢以上の一定人数の人は、これを「傑作」ということがある。
