Lesson9.ブラウザからURLを取得する
ワークフロー
google翻訳を利用します
最終的なURLは下記なので、U=の部分に翻訳したいURLを入れればよさそうですね
https://translate.google.com/translate?sl=en&tl=ja&u=
HOTKEYワークフローの設定で実装できます
具体的には、HOTKEYの設定タブのArgumentでSelection in macOSを選択すればOK
Hotkey
Alfredワークフローで利用できる変数の{clipboard:0}を利用します
数字は0が直近のクリップボード、1が1つ前、2が2つ前というように履歴参照ができます
シェルスクリプトで利用させるためにArg and Valsユーティリティを利用します
Variables:に下記の項目を追加します。
Name:clipboard Value:{clipboard:0}
こうすると、後続のワークフローで$clipboardという変数として扱えます
※選択アイテムがない場合にクリップボードを取得するロジックを作っていますが、
実際には、直近のクリップボードがURLかどうかユーザーは覚えていないので実用的ではないです
まあ、クリップボード利用の練習と思ってください
Arg and Vals
RunScript
AlfredのConditionalユーティリティを利用します
このユーティリティは正規表現を条件に指定できるので、URLのチェックに使ってみました
ネットから下記の正規表現を拾ってきましたが、ちんぷんかんぷんですっ!
https?://[\w!\?/\+\-_~=;\.,\*&@#\$%\(\)'\[\]]+
あとConditionalユーティリティでちょっと躓きました
thenとelseの後にテキストボックスがあるので、後続に受け渡すパラメータを書くのかと
思ったりしましたが、違いました。ワークフローをわかりやすくするためのテキストです
今回は、URLパターンにマッチしたら『翻訳』、アンマッチなら『エラー』としています
ワークフローの緑色のオブジェクトを開いてみてくださいね
Conditional
Open URLを使ってページ翻訳をしています。翻訳は英語→日本語固定です
直前のスクリプトで対象ページのURLをechoして{query}に受け渡しています
ちなみにですが、日本語ページを英語ページに変えるほうが見ていて面白いですね
OpenURL
HOTKEYスタートなので、エラーの際のフィードバックとしてLargeTypeを使ってみました
LargeType
・HOTKEY『⌥s』を押すとsafariで開いているページを翻訳
・HOTKEY『⌥c』を押すとchromeで開いているページを翻訳
(ホットキーはご自身での設定が必要です)
上記の機能の実装はAppleScriptを利用しています
AppleScriptというのは例のアプリケーションにTellする独特な言語です
osascriptコマンドで、AppleScriptが利用できるようになります
以下の構文です
osascript -e 'AppleScript'
さて具体的に、Safariで表示しているURLを取得するには以下
osascript -e 'tell app "safari" to get the url of the current tab of window 1'
もうひとつChromeの場合はこうです
osascript -e 'tell app "google chrome" to get the url of the active tab of window 1'
そしてこれらのosascriptコマンドの結果をOpen URLに受け渡すためバックスラッシュ(`)で囲って
エコーしています。多層ネストスクリプトです!これは世界がひろがりますね
※Alfred4がアプリケーションへアクセスすることを許可する必要があります
システム環境設定→セキュリティとプライバシー→プライバシータブ→オートメーション
Alfred4にsafariやgoogle chromeを制御する許可を付与
RunScript
選択中もしくはクリップボードのURLのサイトを日本語に翻訳する
※ワークフローのArg and Vals,Conditionalユーティリティを利用するサンプルです
1.alfredworkflowをダウンロード
2.ファイルをダブルクリックしてワークフローに登録
翻訳したいのページのURLを選択(もしくはブラウザで表示させて)してHOTKEYで起動 (ホットキーはご自身で設定が必要です)
シェルスクリプトをbashからzshに変更
トップページに戻る