日記

日本語の勉強のためのブログ

【Android/Automate】「Time Window?」ブロックを用いて、ある時刻から指定時間だけ実行させる

注意: Microsoftが提供しているPower Automateとは関係ありません!!!!

Android用自動化アプリ「Automate」(以下リンク参照)についての記事。

llamalab.com

やっとわかったのでメモ。

やりたいこと

ある時刻から、指定時間だけ動作するようなフローを作りたい。
(例) 14:30から30分間のみ動作し、30分過ぎたら(15:00以降になったら)終了する

「Time Window?」ブロックが使えそうだと思ったが、公式ドキュメント*1を読んでもあまり理解できなかった。
そのため、まずはフロー例がおいてあるサイト(記事末尾で説明)を閲覧し、自分でもテストをした上で、このブロックの動作についてまとめてみる。

「Time Window?」ブロックの動作

このブロックは、開始時刻もしくは終了時刻になったかどうかを判定するブロックである。
オプションのProceedの値により異なる挙動を見せる。

  • Immediatelyの場合、現在時刻が開始時刻~終了時刻の間にあればYesに、なければNoに分岐する
    • 開始or終了時刻になるまで待機はせず、判定後即分岐する
  • Exact or Inexactの場合、開始時刻もしくは終了時刻になるまで待機し、現在時刻が開始時刻になったらYesに、終了時刻になったらNoに分岐する
    • 現在時刻が開始~終了時刻の間にあるかは一切考慮されない

「14:30から15:00までの30分間だけ動く」処理をするには

今回目標とする処理を行うには、[1]開始時刻になるまで待機し、[2]その後終了時刻になるまでループする必要がある。
そのため、

  1. 現在時刻が開始時刻14:30になるまで(別ブロックを用いて)待機する
  2. 「Time Window?」ブロック(ProceedImmediatelyに設定)を用いて、現在時刻が14:30~15:00内にあるならループし、なければループを抜ける

ようにフローを組めばよい。具体的にどう組めばよいか、以下で説明する。

具体的な組み方

「Time Window?」ブロックのOptionを以下のように設定する。

  • Proceedを"Immediately"にする
  • Timestampは空欄のまま(デフォルトで現在時刻が入る)
  • Durationに何分間動作させたいかを入力
    • ここでは30分間動作させたいので"30m"とした
  • Time of dayに開始時刻を入力
    • ここでは14:30から実行開始させたいので"14:30"とした
  • その他は変更なし

これにより、現在時刻が14:30~15:00の範囲内か判定することができる。
範囲内にあれば"Yes"、範囲外なら"No"に処理が進む。

あとはこのブロックを使い、以下のようにフローを組めば目的は達成できる。

図1. 完成したフロー

補足情報

以下サイトではAutomateの様々なフロー例が紹介されている。

Tutorials & Examples ⋅ Community ⋅ Automate for Android