AlfredWorkflowで遊ぶページ

Lesson9.ブラウザからURLを取得する

開発メモ

ワークフロー

1.ページ翻訳のコア

 google翻訳を利用します
 最終的なURLは下記なので、U=の部分に翻訳したいURLを入れればよさそうですね

https://translate.google.com/translate?sl=en&tl=ja&u= 

2.選択中の文字列を取得する

 HOTKEYワークフローの設定で実装できます
 具体的には、HOTKEYの設定タブのArgumentでSelection in macOSを選択すればOK
 
 Hotkey
 

3.クリップボードの内容を取得する(特定の変数をスクリプトに渡す)

 Alfredワークフローで利用できる変数の{clipboard:0}を利用します
 数字は0が直近のクリップボード、1が1つ前、2が2つ前というように履歴参照ができます

 シェルスクリプトで利用させるためにArg and Valsユーティリティを利用します
 Variables:に下記の項目を追加します。
 Name:clipboard Value:{clipboard:0} 
 こうすると、後続のワークフローで$clipboardという変数として扱えます

 ※選択アイテムがない場合にクリップボードを取得するロジックを作っていますが、
  実際には、直近のクリップボードがURLかどうかユーザーは覚えていないので実用的ではないです
  まあ、クリップボード利用の練習と思ってください
 
 Arg and Vals
 
 
 RunScript
 

4.正しいURLかどうか確認する

 AlfredのConditionalユーティリティを利用します
 このユーティリティは正規表現を条件に指定できるので、URLのチェックに使ってみました
 ネットから下記の正規表現を拾ってきましたが、ちんぷんかんぷんですっ!
 https?://[\w!\?/\+\-_~=;\.,\*&@#\$%\(\)'\[\]]+

 あとConditionalユーティリティでちょっと躓きました
 thenとelseの後にテキストボックスがあるので、後続に受け渡すパラメータを書くのかと
 思ったりしましたが、違いました。ワークフローをわかりやすくするためのテキストです
 今回は、URLパターンにマッチしたら『翻訳』、アンマッチなら『エラー』としています
 ワークフローの緑色のオブジェクトを開いてみてくださいね
 
 Conditional
 

5.翻訳させる

 Open URLを使ってページ翻訳をしています。翻訳は英語→日本語固定です
直前のスクリプトで対象ページのURLをechoして{query}に受け渡しています
 ちなみにですが、日本語ページを英語ページに変えるほうが見ていて面白いですね
 
 OpenURL
 

6.エラー処理をつける 

 HOTKEYスタートなので、エラーの際のフィードバックとしてLargeTypeを使ってみました
 
 LargeType
 

7.追加機能:

 ・HOTKEY『⌥s』を押すとsafariで開いているページを翻訳
 ・HOTKEY『⌥c』を押すとchromeで開いているページを翻訳
 (ホットキーはご自身での設定が必要です)

8.ブラウザで表示されているURLを取得する:

 上記の機能の実装は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で起動 (ホットキーはご自身で設定が必要です)

修正履歴

ver1.1(2021-04-04):

 シェルスクリプトをbashからzshに変更

トップページに戻る