Power Automate Desktop (以下、PAD) を使用して、指定した時間後に自動的にフローを実行するタイマー機能を作成する方法を解説します。無料版のPADにはスケジュール実行機能がありませんが、工夫することでタイマーのような機能を実現できます。本記事では、初心者の方でも簡単に実装できるよう、アクションの詳細や設定方法を丁寧に説明します。
目次
タイマー機能の概要
今回作成するタイマー機能は以下の構成を持ちます:
- 待機時間の入力: ユーザーが待機時間を入力するためのポップアップ画面を表示します。
- 条件分岐: 入力内容を確認し、「OK」ボタンが押された場合は指定時間待機。「キャンセル」ボタンが押された場合はフローを終了します。
- 待機処理: 指定した時間待機した後、処理が完了したことを知らせるメッセージを表示します。
- エラーハンドリング: 入力内容が無効(例:全角数字など)の場合はエラーを検出し、再入力を促す画面を表示します。
フローの作成手順
以下の手順に従って、タイマー機能を構築しましょう。
1. ポップアップ画面の表示
まず、ユーザーが待機時間を入力するためのダイアログを作成します。
- アクション「入力ダイアログの表示」を追加します。
- タイトル: 「タイマー設定」
- メッセージ: 「待機時間を秒単位で入力してください」
- デフォルト値: 空白でOKです。
- 出力の設定: 入力された値を保存するために、
入力された値という名前で変数を作成します。
2. 条件分岐の追加
ユーザーが入力を完了したか、キャンセルを押したかを判定します。
- アクション「条件」を追加します。
- 条件:
入力された値が空白の場合(キャンセルされた場合) - 処理: キャンセル時はフローを終了させます。具体的には「フローの終了」アクションを挿入します。
- 条件:
3. 待機処理
入力された時間をもとに待機させる処理を設定します。
- 「入力された値」を数値に変換します。
- アクション「変数の設定」を追加し、以下の内容を設定します。
- 変数名:
待機時間(秒) - 値:
int(入力された値)
- 変数名:
- アクション「変数の設定」を追加し、以下の内容を設定します。
- 「待機」アクションを追加します。
- 待機時間:
待機時間(秒)を指定します。
- 待機時間:
4. メッセージ表示
待機が終了したことを知らせるメッセージを表示します。
- アクション「メッセージボックスを表示」を追加します。
- タイトル: 「タイマー完了」
- メッセージ: 「指定された時間が経過しました」
5. エラー処理の追加
ユーザーが無効な値(例: 全角数字や文字列)を入力した場合に備え、エラー検出と再入力の処理を加えます。
- アクション「条件」を追加し、入力値が数値でない場合を判定します。
- 条件:
isnumeric(入力された値)がFalse - 処理: 再度「入力ダイアログの表示」を実行させるために、ラベルを使って最初のステップに戻します。
- 条件:
- ラベルアクションの追加:
- 再入力処理を円滑にするために、「ラベル」を挿入し、ポップアップ画面の最初に戻れるように設定します。
他のフローからタイマー機能を呼び出す方法
タイマー機能を他のフローで利用したい場合は、「サブフロー」を作成して再利用できるようにします。
- タイマー機能をサブフローとして保存します。
- フローエディタ内で右クリックし、「サブフローを作成」を選択。
- 名前を「タイマー機能」として保存します。
- 呼び出し元のフローでサブフローを呼び出す:
- アクション「サブフローを呼び出す」を追加し、「タイマー機能」を選択します。
- 呼び出し元のフロー内で、タイマーの結果に応じた処理を行います。
実演とテスト
- タイマー機能を実行し、ダイアログに「5」秒と入力して「OK」を押します。
- フローが5秒間待機し、その後「タイマー完了」というメッセージが表示されることを確認します。
- 入力値に全角数字(例: 「5」)を入力した場合、再入力を求める画面が表示されることを確認します。
- 「キャンセル」ボタンを押した場合、フローが即座に終了することを確認します。
よくある質問 (FAQ)
Q1. 全角数字をエラーとして検出するには?
全角数字はPADでは文字列として扱われます。そのため、isnumeric 関数で検出可能です。全角数字が入力された場合、「再入力を求める」条件分岐を用意しておくと便利です。
Q2. 入力時間を分や時間で指定したい場合は?
「入力ダイアログ」にて、時間単位(例: 「分」や「時間」)を選べる選択肢を追加できます。選択に応じて、入力値を秒に換算して「待機」アクションに渡すように設定します。
Q3. タイマー終了後に別の処理を自動的に開始できますか?
可能です。「待機後の処理」に別のフローやアクションを追加すれば、タイマー終了後に特定のタスクを実行することができます。
