かんたんなワークフローのつくりかた(ブラウザでサイトを開く)

 Alfredのワークフロー作成ガイドの二回目。
 ブラウザでサイトを開くワークフローのテクニックを紹介してみるね。

特定のサイトを開く

キーワードで特定のURLを開くワークフロー

 これは簡単。

  1. ワークフロー一覧右下のボタンをクリック
  2. [Templates]→[Web and URLs]→[Open Custom URL in Specified Browser]を選択
  3. 必要な項目を入力してワークフローを作成
  4. Keywordのパーツをダブルクリックしてキーワードを入力
  5. Open URLのパーツをダブルクリックしてURLを指定

 これだけでいい。
 入力した文字列をURLに含めたい場合は、{query}プレースホルダーを使ってね。

URLを開くワークフローを作成するコマンド

 でも、これだけなら、カスタムサーチで同じことが可能だよね。
 ワークフローを使った場合はなにがうれしいのかな?

特定のサイトを特定のブラウザで開く

 ワークフローの利点その一。
 ワークフローを使えば、指定したURLを、デフォルト以外のブラウザで開くことができるんだ。

ワークフローのOpen URLダイアログ

 ブラウザを指定するには、まず、Open URLパーツをダブルクリック。
 表示されたダイアログの下側にBrowserのドロップダウンリストがあるから、ここでブラウザを指定する。

Open URLのブラウザ選択ドロップダウン

 たとえば、安全を考えてOSにFlash Playerをインストールしていない環境で、ふだんは別のブラウザを使っているけど、Flashが必須のサービス(たとえばRadikoらじる★らじる)を利用するときだけChromeを起動したいとき、こういうワークフローを作ると便利だよ。

サイトに複数の引数を渡す

 サイトによっては、検索に複数の引数を渡したいときがあるよね。
 たとえば、乗り換え案内系のサイトで、二駅間のルート検索の結果を表示したいとき。
 そういうときは、スクリプトを使って、受け取った引数を分割してやればいいんだ。

 まず、ワークフローにスクリプトを追加し、それをほかのパーツと連結する。

NSAppleScriptの位置

  1. ワークフロー作成画面上で右クリック
  2. [Actions]から[Run Script](または[Run NSAppleScript])を選択
  3. スクリプトを入力文字列のフィルタとして使用するために、ワークフローの部品を繋ぎなおす

ワークフローの接続関係を繋ぎかえる

 繋ぎなおすのは本当に簡単。
 パーツの上にポインタを乗せると、しっぽみたいにぴょこっと飛び出る部分があるから、それを繋ぎたいパーツにドラッグ&ドロップすればいい。

 接続を切りたいときは、接続を選択した状態でDeleteを押せばいいよ。


 例として、空白(スペース)を区切り文字(デリミタ)にして、AppleScriptで引数を分解するときのサンプルを紹介するね。([Run NSAppleScript]用だよ!)

 このサンプルではNavitimeの検索結果にリンクを張っているよ。

on alfred_script(q)
  set AppleScript's text item delimiters to " "
  set l to every text item of q

  return "http://www.navitime.co.jp/transfer/searchlist?orvStationName=" & item 1 of l & "&dnvStationName=" & item 2 of l
end alfred_script

 加工したURL全体をクエリーとして返しているから、Open URL側の入力欄には{query}と入力するだけでいいよ。

サイトに複数の引数を渡す(Alfred3で可能になった方法)

Chaining Inputsのワークフローサンプル

 Alfred3では、ワークフローがユーザーに複数回入力をうながせるようになった。
 つまり、キーワード(と引数)を入力してEnterを押したあとに、二つ目、三つ目、あるいはそれ以上の引数を受け付けるボックスを開けるようになったんだ。

 複数の引数をどうやって扱ってるのかって?
 Alfred3では、ワークフロー内で変数を保持できるんだ!

 受け付けた入力を変数にするには、

Arg and Varsアクションの位置

  1. ワークフロー作成画面上で右クリックして、[Utilities]→[Arg and Vars]を選択
  2. 作成されたパーツをダブルクリック
  3. Argument欄は次のパーツに引き渡される入力。入力欄を空にしたいので、ここを空にする
  4. Variables欄右下のボタンをクリックして、変数を追加
  5. Name欄に変数名、Value欄に値を入れる
  6. 今回は入力内容をそのまま変数にしたいので、Value欄に{query}と入力

Arg and Varで入力を変数化する

 こうして作ったパーツを、一つ目のKeywordの直後に接続する。
 追加した変数は、{var:変数名}プレースホルダーで参照できるよ。

 ただし、ふつうに接続しただけでは、キーワード入力後にAlfredが消えてしまうので、接続の設定を変更する必要がある。

入力後にAlfredを閉じないためのチェックボックス

  1. 上でKeywordとArg and Varsのパーツを繋いだ線(中間に丸●がついている)をダブルクリックする
  2. ダイアログいちばん下の[Window Behaviour]の欄、[Don't close the Alfred Window on actioning result]にチェックを入れる
  3. 中間の記号が丸●から四角■に変化する

 この後に、Arg and Varsの次に二つ目のKeywordパーツを追加。
 きれいな書き方がしたいなら、二つ目の入力もArg and Varsで変数化する。

 でも、入力が二つしかないのなら、二つ目の入力は{query}で受けちゃってもいいかもね!


 くわしくは、ワークフロー作成ボタンの[Getting Started]→[Chaining Inputs]で作成されるサンプルを見てね!