数年前からTogglの時間追跡サービスTimeryを使って時間を管理していますが、タイマーを止めるのを忘れないようにはなりましたが、それでも時々忘れてしまいます。そこで、「Stop Long Timer」というショートカットを作りました。これは、タイマーが長時間動作していないかどうかを定期的にチェックし、自動的に停止してくれるものです。もし停止を断ると、「Stop Long Timer」は、あなたが今やっていることを終わらせられるよう、しばらく放置することを提案してくれます。
一定時間実行中のタイマーを停止するのは簡単です。Timeryには、現在のタイマーの継続時間を確認するアクションと、タイマーを停止するアクションがあります。しかし、私が求めていたのはもっと柔軟な機能でした。プロジェクトの真っ最中で、タイマーが長時間実行されていることがあるからです。そのような場合は、タイマーを停止したくありません。というか、二度とバグに悩まされたくもありません。Stop Long Timerのこの部分は少し複雑で、ショートカットの外部にデータを保存して参照ポイントとして使用できる良い例です。
その前に、まずは最初から始めましょう。Stop Long Timer は、Long Timer というフォルダと LongTimer.txt というファイルの場所を、ショートカット全体で使用される変数として保存することから始めます。次に、Stop Long Timer は File 変数に値があるかどうかを確認します。値がない場合、LongTimer.txt は存在しないため、ショートカットは現在の日時を内容として LongTimer.txt を作成します。
これらの設定アクションが完了すると、「Stop Long Timer」はLongTimer.txtから日付と時刻のフォーマットされたテキストを取得し、現在の日付と時刻と比較します。差が負の場合、ショートカットは停止します。一見奇妙な結果に思えるかもしれませんが、このチェックが必要な理由については後ほど説明します。
次に、Stop Long Timer は Timery の「現在の時間エントリを確認」アクションを使って現在のタイマーの継続時間をチェックし、「Timer Duration」という変数に保存します。このショートカットは、「Minimum Duration」という別の変数も定義します。これは、「Stop Long Timer」がタイマーの停止を提案するまでの最小経過時間です。私は通常、1つのプロジェクトに4時間以上は集中して作業しないので、「Minimum Duration」を4時間に設定していますが、作業スタイルに合わせて任意の時間に設定できます。
続く「if」ブロックは、現在のTimeryタイマーの経過時間が最小継続時間(デフォルトでは4時間)を超えているかどうかを確認します。タイマーが最小継続時間よりも長く動作している場合、「Stop Long Timer」は現在のタイマーを終了するかどうか尋ねます。「はい」と答えると、ショートカットが停止し、タイマーが終了します。
「いいえ」と答えた場合、「ロングタイマー停止」では、ショートカットが再び中断する前に、作業時間を1時間、2時間、または3時間延長するオプションが表示されます。ここで、現在の時刻とLongTimer.txtに記録された時刻との照合が機能します。「ロングタイマー停止」による中断を延期すると、ショートカットは選択した時刻を現在の時刻に追加し、LongTimer.txtに保存します。こうすることで、「ロングタイマー停止」が実行され、現在の時刻から将来の時刻が減算されるたびに、延期時間が経過するまで結果はマイナスになり、タイマーが設定された制限を超えたことを警告することなくショートカットが停止します。
Stop Long Timer は日付と時刻を iCloud Drive にプレーンテキストファイルで保存しますが、Data Jar などのアプリやその他のソリューションを使用することもできます。私は単一のデータのみを保存する必要があったため、プレーンテキストファイルを選択しました。他のソリューションは状況によっては過剰だと感じました。
もちろん、「長時間タイマーを停止」を最適に機能させるには、自動的に実行される必要があります。ショートカットを手動で実行することを覚えておけば、代わりに実行中のタイマーを簡単に停止できるからです。
Stop Long Timer を通知をオフにした個人オートメーションとして実行しています。少なくとも 4 時間実行されているタイマーについてのみ通知するようにショートカットを設定したので、最初のタイマーチェックは午前中に行われます。これは、タイマーが 4 時間以上実行されている可能性がある最も早い時間です。その後は、通常就寝する時間まで、個人オートメーションで 1 時間ごとにタイマーをチェックするようにしています。私はほとんどの日、iPad Pro をユニバーサルコントロールモードで使用しているため、個人オートメーションは iPad にのみ設定し、iPhone や Mac には設定していません。また、Mac には個人オートメーションがないため、代わりにカレンダーから Stop Long Timer のドックアプレットバージョンを実行することをお勧めします。
Stop Long Timer から時間チェックのロジックを取り除けば、非常にシンプルなショートカットになります。このショートカットが外部データソースを使用して、ユーザーにロングタイマーを通知するタイミングを判断する方法は、この手法がショートカットの強化にどのように活用できるかを示す好例ですが、同時に、スケジュールに従ってショートカットを実行するツールがいかに初歩的であるかを浮き彫りにしています。Shortcuts が解決策を提供するまでは、Stop Long Timer で使用されているプレーンテキストファイルや、Data Jar などのサードパーティ製アプリなどの手法が優れた解決策となります。
追加コンテンツと特典にアクセスする
Club MacStories は 2015 年に設立され、ほぼ 10 年間にわたって毎週独占コンテンツを提供してきました。
毎週、毎月の電子メール ニュースレターから始まったものが、すべての MacStories ファン向けに設計されたメンバーシップ ファミリーに成長しました。
詳細については、こちらおよびクラブの FAQ をご覧ください。
Club MacStories : アプリ、ヒント、自動化ワークフロー、長文執筆、MacStories Unwind ポッドキャストへの早期アクセス、定期的な景品など、盛りだくさんの情報を満載した、電子メールと Web 経由の週刊および月刊ニュースレター。
Club MacStories+ : Club MacStories が提供するすべての機能に加え、アクティブな Discord コミュニティ、クラブの過去のカタログ全体を閲覧するための高度な検索機能とカスタム RSS 機能、ボーナス コラム、多数のアプリ割引などが含まれます。
Club Premier : 上記のすべてに加え、早期に、広告なしで、高ビットレートのオーディオで配信される当社の主力ポッドキャストの拡張バージョンである AppStories+ が含まれます。