ショートカットアプリとChatGPT、先日紹介したAutomation Controlに加えて少し前に流行った「心の声」の合作です.
※価格は記事執筆時のものです. 現在の価格はApp Storeから確認ください.
※価格は記事執筆時のものです. 現在の価格はApp Storeから確認ください.
レビュー時のiOSバージョン : iOS18.1.1
スポンサーリンク
アプリを開くたびに不安を煽るオートメーションを作ってみる
前回紹介した範囲ではオートメーションらしさがなかったため今回はオートメーションに組み込んで使ってみます.
以下の仕組みを作ることを考えます.
- アプリを開くたびにカウントアップ+ログ記入
Input:カウンタ
Status:回数制限(オーバーしたらオフ) - 指定回数内ならStatusオン、来れるとオフ
- 日付をまたいだらInputはクリア(=0)
Automation Controlのアイテムを作成
オートメーションを組む前にAutomation Controlで必要なアイテムを新規作成しておきます.
Nameはわかりやすいものを、Inputは0、Enabledは以下で組むレシピの内容上どちらでもいいです(タグは必須でないので自由です).
レシピ
オートメーションなのでオートメーション内でレシピを組むべきですが、アクション数が増えると編集・管理の面で一度レシピとして組んでから「ショートカットを実行」で動かした方が良い場合があります.
そのため今回は一度レシピとして作る方法で行きます.
まず回数制限とする数を「数字」アクションで指定しておきます.
更に"Manage Item Input Variable"で先程作ったAutomation Controlの入力を、更にそれに1を加算した値をそれぞれ取得して(今回は)last value、current countとでも置きます.
今回の仕様だとlast valueは前回の実行回数、current countは(オートメーションで発火したためその1回加算された)今回の実行回数と言えます.
上で取得したcurrent countが最初に指定した数字(制限回数)を上回るかどうかでAutomation ControlアイテムのStatusを上書きします.
超えれいればオフ、そうでないならオンにします.
次はAutomation Controlアイテムのログを取得します.
"Manage Logs for Item"アクションで指定のアイテムを、"Select Log Action"は"Get Last Logged Run Time"を選びます.
最新のログしか取得できないのが残念ですね.
またこの出力は日付以外の内容を含むテキストなので「入力から日付を取得」で日時だけ取り出します.
変数は今回はlast timeと置きました.
次は日付をまたいでInputをクリアする必要があるため、上で取得したlast timeと現在の日時を比較します.
結果が0なら同日、そうでないなら日をまたいた…とみなせますよね.
新規作成したアイテムには当然ログが残っていないため、そのままでは「日付間の時間を取得」がエラーになる場合があります.
そのため"last time"が空の場合を踏まえてif文で処理分けします.
ちなみにそのまま2つの日付を日単位で計算しても丸めによって望んだ値になりません.
例えば2024/11/1 23:00と2024/11/2 01:00で計算すると1日でなく0日になってしまいます.
そこでそれぞれに入れた日付のマジック変数をタップし、「日付フォーマット」を「カスタム」にし、下に出てきた入力欄をyyyy/MM/dd 00:00に置き換えます.
これで例えば上の場合は強制的に2024/11/1 00:00と2024/1/2 00:00の間を計算することになり、1日として取得できます.
上で処理したif文の結果は「日をまたいでないなら0、そうでないなら0でない」ので、"Manage Item Input Variable"でAutomation Controlの指定アイテムを以下に定めます.
- 0と等しい
Action:Set Variable
Variable Value:current count(前回のinputに1足した値) - その他の場合
Action:Set Variable
Variable Value:0
ChatGPTに回答させる情報は整ったのでそれを含めた質問文でChatGPTを使います.
- 回数制限
- 現時点での実行回数current count
- 前回のログlast time
ChatGPTの回答を通知などで出力し、"Log Last Run for Controller"で忘れずログを記録しておきます(アイテムがSchedulerの場合は"Log Last Run for Scheduler").
オートメーション
次はオートメーションです.
ショートカットアプリの「オートメーション」タブから「アプリ」を選びます.
適用したいアプリを選択し、「開いている」のみにチェックが入った状態、「すぐに実行」にチェックを入れ「次へ」をタップします.
「新規の空のオートメーション」をタップし、編集画面から「ショートカットを実行」アクションを追加し、先程作ったレシピを指定して「完了」をタップして終わります.
結果
これで指定したアプリが開くごとに組み込んだ内容の通知が表示されます.
日付フォーマットのバグがあるので日付に関する文言に矛盾が生じることがあります.
Automation Control側で見ても、回数制限を超えるとちゃんとステータスが変わっています.
〆
今回はシンプルに回数にしましたが入力を工夫することで自由度は更に上がります.