😺はじめに
皆さんはブラウザのブックマークをよく使いますか?
バリバリ活用してる人なんかだと、ブックマーク数が1000を超えて、フォルダ分けやタイトル付けに凝る人もいると思います。
そうやってブックマークが充実すればするほど、その情報をブラウザ外からも活用したくなりますよね??(圧)
もちろんエクスポートして活用する道もありますが、ブックマークマネージャで選択中のブックマークから情報を取得したいこともあります。
ここでは、ブックマークのタイトルが色んな形式で書かれているものとし、そこから情報を抜き出す単純なタスクをAutoHotkeyで実装してみましょう。これが出来ればコマンドライン引数に用いるなどして、色んなことができますね。
🐺ブックマークマネージャを表示しているかの検知
「ブックマーク - Google Chrome」というウィンドウ名を検知したいというので、まずこう書いてみます。
# If WinActive("ブックマーク - Google Chrome ahk_exe chrome.exe")
;any code here
# If
しかし、これではマッチ形式が明示的に指定されていないので、例えば「はてなブックマーク - Google Chrome」を開いたウィンドウにもヒットしてしまう場合があります。そこでこうします。
Set_TitleMatchMode(x){
SetTitleMatchMode, %x%
return 1
}
# Include <mylib1>
# If Set_TitleMatchMode(3) and WinActive("ブックマーク - Google Chrome ahk_exe chrome.exe")
;any code here
# If
🐘ypで商品名をコピー、ymでメーカー名をコピー、みたいな処理
例えばあるフォルダ下では色んな商品の記事をブクマしている。その中のあるブクマを選択した状態で「yp」と入力すると商品名をコピーし、「ym」と入力するとメーカー名をコピーできる、というような処理を実装しましょう。
タイトルは次の形式とします。
{商品名}◆{メーカー名}
コードはこうなります。
y::
Input, c, L1 T2, {Enter},p,m
if(ErrorLevel = "Match"){
if c in p,m
{
n := ({"p": 1, "m": 2})[c]
SendInput, {AppsKey}
Sleep, 10
SendInput, {Down}{Enter}
clipboard :=
SendInput, ^c
clipwait, 1
If(ErrorLevel){
MsgBox, failed to copy
}else{
SendInput, {Enter}
RegExMatch(clipboard, "O)^(.+)◆(.+)$", mat)
clipboard :=
clipboard := mat[n]
clipwait, 1
}
}
}
return
🐾さいごに
この要領でタイトルやURLを解析して色んなコピーが可能ですね。ここではL1をInputに指定しているので1文字だけの入力を待機していますが、L2にして1文字目でブックマークの種別を指定して2文字目でコピー対象の種別を指定するといった処理も可能です。