ショートカットにある機能オートメーションは、その機能のオンオフは原則として編集画面で手打ちする必要があり、外側からの制御はできません.
しかし外部の力を借りることでこれを擬似的に実現することができます.
※価格は記事執筆時のものです. 現在の価格はApp Storeから確認ください.
レビュー時のiOSバージョン : iOS16.6
スポンサーリンク
パラメータを読み書きするためのファイルを作る
まずオートメーションのオンオフの変わりとなるパラメータを保存・管理するデータを作ります.
例えばautoというキーを使った
{"auto":true}
というテキストを「ファイル」アプリに保存します.
テキストでもjsonでもいいです.
ようはこれはautoというキー一つだけのデータで、キーautoの値はtrue、つまり真です.
jsonがわからない場合はこちらでも同じ内容でOKです.
こうして作ったデータに対して、これまで普通に作っていたオートメーションに対して
- キーautoをオンオフするレシピ
- キーautoのオンオフに応じて処理をするオートメーション
を作ります.
キーautoをオンオフするレシピ
まずは指定のキーをオンオフするレシピを作ります.
「ファイル」アクションで先程作ったパラメータファイルを読み込み、辞書に変換、今回使うキーautoの値を取得してこれに対してif文を追加します.
ここでif文の入力の種類は「ブール値」にしておきます.
直前で取り出した値が明らかにブール値であってもif文の入力としてはデフォルトではそのように解釈してくれないようです.
画像のように「もし 辞書の値 ならば」となればOKです.
次にif文の中身、入力が真である場合、つまり読み込んだ辞書のキーautoが真である場合です.
このときはキーautoをオフにしたいので「アラート」アクションを使って適当な文章を入れておきます.
オプションの「"キャンセル"ボタンを表示」はオンにしておきます.
これによって、キャンセルを選択した場合以降の処理はされず終了し、okを選択した場合だけ次の処理が行われます.
さて辞書のキーautoをオフ、つまりfalseにしたいのですが、「辞書の値を設定」で値をfalseにするとうまくいきません.
それを行うと{"auto":"false"}になるわけですが、jsonでは"で囲まれた中身はテキストとして扱われます.
つまり{"auto":"false"}のfalseはブール値のfalseでなくテキストのfalseです.
そこでやむなくキーを含めた全体を「テキストを置き換え」でtrueからfalseに変更します.
ここであえてキーを含めて置き換えているのは今後パラメータが増えることを想定したものです.
こうして置き換えた結果を上書き保存します.
if文のその他の場合も同じように、こちらはfalseからtrueになるようアクションを追加します.
オートメーションの作成
次はオートメーション側です.
既に作ったオートメーションを使いまわしてもいいです.
画像はアプリが開いた場合のものです.
アクションの基本構造は以下となります.
- パラメータファイルを読み込む
- 1を辞書として必要なキーの値を取り出す
- 2をブール値としてif文で場合分けする
画像の赤で囲った部分が真(オン)の場合、青で囲った部分は偽(オフ)の場合です.
画像では通知だけですが好きなアクションを追加します.
オンだけ、オフだけにしたい場合は片方はなにも入れないでおくだけです.
こうして作ったオートメーションは常に有効にしておきます.
実行例
レシピの方を実行すると、今回はキーautoの値はtrueだったのでオンの状態です.
このメッセージでOKをタップすればオフになるはずです.
オフにしたのでこの状態で該当アプリを開けば希望の通知が表示されます.
オンにした場合も同様です.
〆
やや面倒ですが、一度作っておくと一つのレシピで複数のオークションを制御できるようになります.
制御するのに使うのがレシピおよび外部ファイルなので、それをまた別のレシピやオートメーションで制御することもできます.
あまり複雑にするのはよくないですが、オートメーションの自由度は確実に上がります.