Workflowのレシピ内で他のレシピを発動させる方法(その1)

情報管理LOGの@yoshinonです。
先日のiWorkspace の記事でWorkflowのワークフロー(IFTTTでいうところのレシピ。以下、紛らわしいので「レシピ」とします。)において、他のワークフロー(レシピ)を呼び出すことは難しいのではないか?
ということを、最後の方に書きました。
気になることがあれば、即実験せずにはいられない性分なので、色々と実験してみました。今回は、色々途中過程なのですが、Workflowのレシピ内で他のレシピを呼び出すということをしてみたいと思います。
【 Workflowのレシピ内で他のレシピを発動させる方法(その1) 】 1.iWorkspaceの完全再現に向けて 2.Workflowのレシピ内で他のレシピを呼び出す挙動実験 3.レシピ内レシピ呼び出しの解決編? |

先日、iWorkspaceという連続起動させるアプリをWorkflowで再現できないか?ということで、iWorktaskというレシピを作成してみました。
Bookmarklet: instantly generate a Card for any web page. | Embedly
これによって、アプリを指定間隔で連続起動させることに成功させました。
ある意味、iWorkspaceの再現という意味では、1つの解決をみたわけですが、しかしコトはそう簡単ではありません。iWorkspaceでは、Workflowのレシピを起動させるということもできていました。しかし、Workflowでは、レシピA内でレシピBを走らせるということが、可能なのかどうなのか分からず、棚上げにしたまま、前回の記事を終えていました。これでは、iWorkspaceの完全再現とはいきません。というわけで、以下のように実験してみました。
Workflowのレシピ内で他のレシピを呼び出してみます。
今回用意したのは、単に通知センターに「Hello World!」と表示させるだけのレシピです。

まずは、Workflowにはレシピの共有ができるので、そこから呼び出したいレシピのURLスキームをコピーします。

面倒なので、前回作成したiWorktask内で走らせてみます。
しかし、立ち上がったのは、レシピのダウンロードが表示されるか、Safariが立ち上がりエラーページが表示されるだけでした。

どうやら、共有からコピーできるURLからは、他のレシピを発動させることはできないようです。
iWorkspaceの時も、同じような問題に当たった時に、Launch Center Proというランチャーアプリをかますことで上手くいったことを思い出しました。
Workflowは、Launch Center Proに直接レシピをショートカットとして登録することができるのです。これを使いましょう。
歯車アイコンから

まずは、起動させたいレシピをLaunch Center Proに登録します。

そして、登録されたランチャーを編集します。歯車アイコンをタップして

さらに、Workflowのアイコンをタップします。

そうすると、レシピを発動させるURLスキームが現れます。

これを、先ほどのiWorktask内に貼り付けます。
ちなみに、”x-callback-url/”と”-source={{Launch Center~”以下の部分は、削除しても構いません。

そして、発動させると…できました!

できたー!
と思ったものの、実はぬか喜びでした。
というのは、レシピA内でレシピBを発動させると、レシピBは確かに発動されるものの、元のレシピAはその時点でストップしてしまうのです。

さすがにこればっかりは、にっちもさっちもいきませんでした。
さて、どうすれば良いか…。
で、解決策の1つとして、このように考えました。
1.レシピAでレシピBを起動させる。
2.レシピBで残りのレシピA'を起動させる。
かなり強引な手法ですが、これでそれらしい挙動はできそうです。


iWorkspaceの完全再現まで、後もう少し!
さて、今回はLaunch Center Proを使用して、Workflowのレシピを発動させましたが、実は他にもやり方があるのです。というわけで、この話題は、もう少し続きます。
Workflowは、奥が深いですね。
ノーベル文学賞を受賞したカズオ・イシグロの「わたしを離さないで」の映画が、199円でレンタルできますね。
- 関連記事
-
- Workflowのレシピ内で他のレシピを発動させる方法(その2)
- Workflowのレシピ内で他のレシピを発動させる方法(その1)
- 複数のクラウドサービスをまたいで、ファイルの移動やコピーをする【2017年度版】