ADVERTISEMENT

【Power Automate】日本時間への変換が想定外に繰り返される時の実行履歴から原因を読む方法

【Power Automate】日本時間への変換が想定外に繰り返される時の実行履歴から原因を読む方法
🛡️ 超解決

Power Automateで日本時間(JST)への変換処理を実装した際、想定外に何度も変換が繰り返されてしまう問題に遭遇したことはありませんか。例えば、Convert time zoneアクションが期待以上に実行され、同じデータが何度も変換されてしまうケースです。この問題は、フローの実行履歴を正しく読み解くことで、原因を特定しやすくなります。本記事では、実行履歴の詳細な見方と、繰り返しの原因を切り分けるための具体的な手順を解説します。

【要点】この記事で確認すること

  • 最初に見る場所: フローの実行履歴一覧から、対象の実行を開き、アクション一覧で「Convert time zone」などの変換アクションの実行回数とタイムスタンプを確認します。
  • 切り分けの軸: 繰り返しが同一フロー内のループ(Apply to eachやDo until)によるものか、フローのトリガーが複数回発生しているのかを、実行履歴のアクション順序と入力値で判断します。
  • 注意点: 会社のPCでフローの設定を変更する前に、管理者に相談してください。特にトリガー条件の変更やApply to eachの設定は、予期せぬ影響を与える可能性があります。

ADVERTISEMENT

繰り返しの原因として考えられる3つのパターン

日本時間への変換が想定外に繰り返される原因は、主に以下の3つに分類できます。それぞれのパターンによって、実行履歴の見え方が異なります。まずはこれらの概念を理解しておきましょう。

パターン1: Apply to Eachによるループ内での繰り返し

フローが配列データを処理する場合、Apply to eachループが使用されます。このループ内にConvert time zoneアクションが配置されていると、配列の要素数だけ変換が実行されます。意図した回数よりも多い場合、ループの範囲が想定より広いか、配列に不要な要素が含まれている可能性があります。

パターン2: トリガーの再実行による重複処理

トリガー(例:新しいメールが届いたとき、ファイルが作成されたときなど)が短時間に複数回発生すると、そのたびにフローが起動し、変換処理も重複して実行されます。特にクラウドストレージの変更トリガーや、メールの受信トリガーで起こりやすい問題です。

パターン3: Do Untilまたはループの制御ミス

Do Untilループを使用している場合、終了条件が適切に設定されていないと無限ループが発生します。その結果、変換アクションが延々と繰り返されることがあります。実行履歴では、アクションが何百回も連続して実行されているように見えます。

実行履歴の基本: どこを見れば繰り返しがわかるか

Power Automateの実行履歴には、各フロー実行の詳細情報が含まれています。繰り返しの有無を確認するには、以下の手順でアクションごとの実行回数とタイミングを調べます。

  1. Power Automate(https://make.powerautomate.com)にサインインし、問題が発生しているフローを開きます。
  2. フローのメニューから「実行履歴」を選択し、実行日時が新しいものから順に一覧を表示します。
  3. 想定外の繰り返しが発生したと思われる実行(通常は実行時間が異常に長いか、ステータスが「成功」でも処理が重複しているもの)をクリックして詳細を開きます。
  4. アクション一覧で、Convert time zoneアクションのアイコンを確認します。繰り返し回数が多い場合、アイコンの横に「×N」のように回数が表示されることがあります。
  5. 各アクションの入力と出力を順に確認し、同じ入力値が複数回出現していないか、または入力値が変化しながらループしているかを把握します。

この手順で、どのアクションが何回実行されたかが一目でわかります。特に、変換アクションが配列の要素数以上に実行されている場合は、ループの範囲に問題があります。

具体例で読み解く: 実行履歴から原因を特定する方法

例1: Apply to each内で変換が毎回実行されるケース

あるフローでは、SharePointのリストから複数のアイテムを取得し、それぞれの日付フィールドを日本時間に変換していました。しかし、実行履歴を見ると、変換アクションがアイテム数よりも多く実行されていることに気づきました。詳細を確認すると、Apply to eachの設定が「件名」フィールドなどの余分なデータに対して適用されていることが判明しました。この場合、変換アクションの入力値を調べると、同じ日付が複数回変換されていることがわかります。

対策としては、Apply to eachに渡す配列を、「value」や「items」などの必要なデータのみに絞り込むことが挙げられます。また、条件付きのフィルターを追加して、変換が必要な場合だけ実行するようにします。

例2: トリガーが複数回発生して変換が重複するケース

メール受信をトリガーにしたフローで、Convert time zoneを使用していました。しかし、同じメールが何度も変換されているように見えました。実行履歴を調べると、トリガーの発生時刻がほぼ同じで、異なる実行IDが複数生成されていました。これは、メールの受信トリガーが同じメールに対して複数回起動した可能性があります。

原因は、トリガー条件の設定が緩すぎるか、コネクタのポーリング間隔が短いことです。対策として、トリガーに「Subject」などのフィルターを追加して不要な起動を減らすか、フロー内で重複チェックを入れます。実行履歴では、トリガーの発生回数が異なる実行IDとして記録されるため、フロー全体の実行回数が増えていることで判断できます。

状況別比較表: 繰り返しパターンの実行履歴での特徴

状況 実行履歴の特徴 主な原因
Apply to each内での繰り返し 変換アクションが複数回実行され、それぞれ入力値が異なる(配列の各要素に対応)。実行全体のアクション数が配列要素数に比例する。 Apply to eachの対象配列が広すぎる、または不要な要素が含まれている。
トリガーの重複 複数の実行がほぼ同時刻に生成され、それぞれの中に変換アクションが1回ずつ含まれる。変換の入力値が同一の場合がある。 トリガー条件が緩い、コネクタのポーリング間隔が短い、または同一イベントが重複して送信されている。
Do Untilの無限ループ アクション数が極端に多く(数百~数千)、変換アクションが連続して実行されている。終了条件が満たされず、ループが続く。 Do Untilの終了条件が適切でない、またはループ内の変数が更新されていない。

原因特定後の対処法と管理者への確認事項

繰り返しの原因が特定できたら、フローの設定を修正します。ただし、会社のPower Automate環境では、以下の点に注意して管理者に相談してください。

  • ライセンス制限: フローの実行回数やアクション数にはライセンスごとに上限があります。繰り返しの多いフローは制限に抵触し、他のフローがブロックされる可能性があります。管理者に現在の使用状況を確認してもらいましょう。
  • コネクタの権限: トリガーの重複を減らすために、トリガー条件にカスタムフィルターを追加する場合、該当するコネクタの設定が必要なことがあります。例えば、Exchange Onlineのメールトリガーでは、高度なフィルターに管理者の承認が必要な場合があります。
  • 変更の影響範囲: Apply to eachの範囲を変更するときは、他の処理に影響が出ないか確認しましょう。テスト環境で検証してから本番に適用することをおすすめします。
  • 実行履歴の保存期間: 実行履歴は標準で28日間保存され、その後自動削除されます。証拠が必要な場合は、履歴をエクスポートするか、スクリーンショットを残しておきましょう。

管理者に相談する際は、「どのアクションが何回繰り返されたか」「トリガーの発生回数は適切か」など、実行履歴から得た具体的な情報を伝えるとスムーズです。

よくある質問(FAQ)

Q1. 実行履歴でアクションの実行回数が表示されないのはなぜですか?

Power Automateの実行履歴では、同じアクションが複数回実行された場合、デフォルトで回数が表示されないことがあります。アクション名の横に「…」や数字がない場合は、アクションを展開して個別の実行を確認してください。また、フローのバージョンによっては表示形式が異なる場合がありますので、詳細表示を活用しましょう。

Q2. トリガーの重複を完全に防ぐことはできますか?

完全に防ぐのは難しいですが、トリガー条件に一意な識別子(メールのメッセージID、ファイルのetagなど)を含めることで、同一イベントの再実行を抑制できます。また、フロー内で変数にフラグを持たせ、既に処理済みのデータはスキップするロジックを追加する方法もあります。

Q3. 無限ループが発生した場合、強制的に停止できますか?

はい、Power Automateのフローページで「停止」ボタンをクリックすることで、実行中のフローを中断できます。また、実行履歴から該当の実行を選択し、「キャンセル」することも可能です。ただし、すでに実行されたアクションの取り消しはできません。

Q4. 会社のポリシーでApply to eachの上限が設定されている場合はどうすれば?

Power Automateには既定でApply to eachの同時実行数やループ回数の上限がありますが、管理者が変更している場合があります。上限を超えるとエラーになるため、その場合はループ内の処理を分割するか、別のフローに委ねることを検討してください。管理者に上限値を確認し、設計を見直しましょう。

まとめ

日本時間への変換が想定外に繰り返される問題は、実行履歴を丁寧に読み解くことで原因を特定できます。Apply to eachのループ範囲、トリガーの重複、Do Untilの制御ミスという3つのパターンを念頭に置き、アクションの実行回数と入力値を確認することがポイントです。また、原因を特定したら、会社のポリシーを考慮しながら、管理者と連携して適切な対策を実施しましょう。実行履歴はトラブルシューティングの強力な手がかりです。今回紹介した方法を活用して、安定したフロー運用を目指してください。

ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。

ADVERTISEMENT