Power Automate でよくあるつまずき10個|原因と直し方と、止まりにくくするコツ

Power Automate 実践・Tips

📝 この記事は、Power Automate でよく相談を受けるつまずきを、原因ごとに整理したものです。
式や関数の仕様はMicrosoft 公式(ワークフロー式の関数リファレンス)で確認しています。

🧭 なぜこの記事を書いたのか
2022年から社内で Power Automate を広めてきて、受ける相談はだいたい同じ場所に集まります。
人が違っても、止まるところは似ています。
つまり先に知っておけば避けられるということです。

テストは通るのに本番で動かない。エラーの文面が意味不明。変数がいつのまにか空になっている。
どれも、原因が分かってしまえば対処は短いものばかりです。
この記事では、相談の多い10個を、原因と直し方の順でまとめます。

相談を受ける場所は、だいたいこの10個のどれかです。
並べる順番は、出会いやすいものから上にしました。上の5つは、始めて1か月のうちに一度は通るところだと思います。

つまずく場所は、だいたい決まっている作っているとき① Apply to each が出る③ 選択が分からない④ 日付の式が読めない⑤ 動的コンテンツに無い⑥ 変数の型で事故る動かしたとき② 条件が通らない⑦ 実行履歴が読めない⑩ 本番でだけ止まるしばらく運用して⑧ 接続が切れている⑨ 共有したら動かない
上の5つは最初の1か月で必ず出会う。下の2つは動き出してから来る

① Apply to each が勝手に出てくる

原因|一覧を取得するアクションは配列を返します。
その中の値を使おうとすると、Power Automate が「全件まわしますね」と判断して自動で追加します。

直し方|1件しか要らないなら、先に絞ります。
フィルター配列で条件を付けるか、first() で最初の1件を取り出せば、ループは不要になります。

② 条件が通らない

見た目が同じでも、型が違えば一致しない“100”文字列equals100数値一致しないint() を通してそろえるint(“100”)equals100一致する
日付も同じ。表示が同じでも、書式が違えば一致しない

原因|比べているが違っています。文字列の "100" と数値の 100 は一致しません。

直し方|そろえてから比べます。数値は int()、文字は string()
日付は formatDateTime() で書式をそろえます。

③ 選択(Select)が何をしているか分からない

原因|画面が「キー」と「値」の対応表になっていて、
何を作っているのかが見えにくいためです。

直し方配列の形を作り直すアクション、と捉えると分かります。
元の配列から欲しい項目だけ抜いて、新しい形に並べ替えています。
出力を実行履歴で見ると、何が起きたか一目で分かります。

④ 日付の式が呪文に見える

原因|関数を入れ子で書くため、1行が長くなるからです。

直し方内側から読むと分かります。
startOfMonth(addMonths(utcNow(), 1)) なら、
「今 → 1か月進める → その月の頭」の順です。
それでも長いときは、作成アクションに分けて名前を付けます。

⚠️ あわせて確認:utcNow() は UTC です
日本時間との差は9時間あります。
日付だけを見て判断するフローは、朝のうちに動くと1日ずれることがあります。
日付を扱うなら convertTimeZone() で日本時間に直してから使います。

⑤ 動的コンテンツに出てこない

原因|受け取った値が、まだ「ただの文字列」として扱われています。
中に何が入っているかを Power Automate が知らないためです。

直し方JSON の解析を通します。スキーマは「サンプルから生成」で
実データを貼り付ければ自動で作られます。
1つだけ欲しいなら、解析せず作成アクションに式を書くほうが早いこともあります。

⑥ 変数の型で事故る

原因|変数の種類は初期化のときに決まり、あとから変えられません
数を数えたいのに文字列で作ってしまうと、足し算ができません。

直し方|作る前に「何を入れる箱か」を決めます。
数えるなら整数、文字をためるなら文字列、真偽なら Boolean。
ループの中で値を足していくなら、必ず整数で作るのが基本です。

⑦ 実行履歴が読めない

見るのは「入力」と「出力」の2か所だけフォームの回答項目の取得条件メールを送信止まったアクションを開く入力想定した値が入っているか?出力エラーの内容はここに出る入力が想定と違う→ 原因は「その手前」入力は正しいのに失敗→ 原因は「そのアクション」
エラーの文面を読むより、この切り分けのほうが速い

原因|どこを見ればいいか分からないためです。情報自体はすべて残っています。

直し方|開くのは赤いアクションの「入力」と「出力」の2か所だけです。
入力に想定した値が入っていなければ、原因はその手前にあります。
入力は正しいのに出力がエラーなら、原因はそのアクションです。
この切り分けだけで、原因の場所はほぼ特定できます。

⑦は、自分の中でいちばん効いたところです。
エラーの文面を読むより、入力と出力を見るほうが速い。それに気づいてから、調べる時間がかなり減りました。

⑧ 接続が切れている

原因|コネクタは、作った人のアカウントで接続を持っています。
パスワード変更や多要素認証の再設定をきっかけに、この接続が無効になることがあります。

直し方|フローの一覧に警告が出ていないかを確認します。
接続の画面から、該当のコネクタを作り直すと復旧します。
定期的に動くフローなら、失敗時に自分へ通知が飛ぶようにしておくと、気づくのが早くなります。

⑨ 共有したら動かなくなった

原因|フローは共有できますが、接続まで一緒に渡るわけではありません
受け取った人の権限で、参照先のファイルやリストを開けない場合に止まります。

直し方|相手の環境で接続を作り直してもらうか、参照先の権限を見直します。
チームで使うフローなら、
個人の OneDrive ではなく SharePoint に置くほうが、あとから引き継ぎやすくなります。

⑩ テストは通るのに本番で止まる

原因|テストで使ったデータが、たまたま都合の良いものだったケースがほとんどです。
任意項目が全部埋まっていた、対象が1件だけだった、といった具合です。

直し方|次の3つを、わざと作って試します。

  • 空欄があるデータ|任意項目を空にして送る
  • 0件になる条件|絞り込みが1件も返らない状態
  • 件数が多いデータ|上限にかかるかを見る

この3つを通れば、本番で止まる確率はかなり下がります。

エラーが出たあとの動き方

止まったフローは、直したあとに再実行できます
実行履歴から該当の実行を開いて再送信すれば、同じ入力でもう一度走ります。

ただし、すでに完了している処理ももう一度動きます
メール送信を含むフローを再実行すると、同じメールが2通届きます。

💡 直す前に、まず1件だけで再現させる
大量のデータで試すと、原因の切り分けに時間がかかります。
失敗した1件だけを手動で流す形にすると、確認が一気に速くなります。
手動トリガーのテスト用フローを1本持っておくと、この確認がラクになります。

相談を受けるときに最初に聞く3つ

社内で相談を受けるとき、この3つを聞けば、たいてい場所が絞れます。

  • 「実行履歴は赤いですか、それとも成功していますか」|成功しているなら、条件の分岐先が違っています
  • 「止まっているアクションの入力に、想定した値は入っていますか」|入っていなければ、原因は手前です
  • 「前は動いていましたか」|動いていたなら、接続かデータの変化を疑います

エラーの文面を読むより、この3つのほうが速いです。

止まりにくいフローにするために

✅ 作るときの4つの習慣

  • 1アクション足すごとにテストする|まとめて作ると、どこで壊れたか分からなくなります
  • 式は作成アクションに逃がす|名前を付けておくと、実行履歴で追えます
  • 0件と空欄を想定するlength() で分岐、coalesce() で既定値
  • 失敗時の通知を入れる|「実行条件の構成」で失敗のときだけ自分に飛ばします

作る前に決めておく3つ

ここまでは、止まったあとの話でした。最後に、止まりにくくするために先に決めておくことを書きます。

1置き場所を決める

参照するファイルやリストを、個人の領域に置かない
異動や退職でフローごと使えなくなります。
チームで使うものは、最初から共有の場所に置きます。

2名前の付け方を決める

アクション名を既定のままにすると、
実行履歴を開いたときに「作成」「作成2」「作成3」が並びます。
何をしているかが分かる名前に変えておくだけで、あとの調査が速くなります。

3失敗に気づく方法を決める

「実行条件の構成」で失敗時の通知を1つ。
これだけで、止まったことに自分で気づけます。

名前を付けるのは、作っているあいだはいちばん面倒に感じるところです。
ただ、半年後に直すのは自分です。「作成7」と書かれたアクションの中身は、私は思い出せませんでした。それ以来、面倒でも付けるようにしています。

それでも分からないときの調べ方

エラーの文面をそのまま検索しても、出てこないことがあります。
そういうときは、固有の部分を外してから検索します。

ファイル名やIDが含まれていたら、そこを削ります。
残った部分が、同じ現象を踏んだ人と共通する言葉になります。

もう1つ有効なのが、アクション名で調べる方法です。
「Power Automate 選択 テキストモード」のように、
使っているアクションの名前と、やりたいことを並べます。
エラー文より、アクション名のほうが情報が見つかりやすいです。

補足:エラーメッセージの読み方

文面は英語のことが多いですが、見るのは2か所だけです。

どのアクションで起きたか|実行履歴で赤くなっている場所です。
文面より先に、ここを見ます。

何が足りないと言っているか
「見つからない」「型が違う」「権限がない」のどれかであることがほとんどです。
この3つに当てはめてしまえば、次に見る場所は決まります。

  • 見つからない|参照先のファイル名・リスト名・列名を確認します。名前を変えていませんか
  • 型が違う|数値と文字列が混ざっています。int()string() でそろえます
  • 権限がない|接続しているアカウントで、その場所を開けるか確認します

直したあとに必ずやること

直して動いたら、そこで終わりにせず2つだけやっておきます。

同じ原因が他のフローにも無いか見る
1本で起きたことは、たいてい他でも起きます。
日付のずれや空欄の扱いは、特に横に広がりやすいところです。

何が原因だったかを1行残す
フローの説明欄でも、メモでも構いません。
半年後に同じところで止まったとき、この1行があるだけで復旧が早くなります。

直した記録は、次に同じ相談を受けたときの答えになります
社内で広めていくなら、ここを残しておくかどうかが効いてきます。

止まらないフローを作るより、止まったときにすぐ直せるフローを作るほうが現実的だと思っています。
データも業務も変わるので、いつかは必ず止まります。気づける仕組みと、追える名前を先に用意しておく。私はここに時間を使うようにしました。

この記事に挙げた10個は、どれも一度踏めば次からは避けられるものばかりです。
止まったこと自体より、原因の場所を絞れるかどうかが効いてきます。

まとめ

📌 この記事のポイント

  • Apply to each が出たら配列を扱っているサイン。要らないなら先に絞る
  • 条件が通らないときは。比べる前にそろえる
  • 動的コンテンツに出ないときはJSON の解析
  • 変数の型は初期化のときに決まる。あとから変えられない
  • 困ったら実行履歴の入力と出力。切り分けはこの2つで足りる

📚 仕様の出典

utcNow()convertTimeZone()first()coalesce() などの仕様は、ワークフロー式の関数リファレンス(Microsoft Learn)に記載されている内容です。

PA45 は毎週やっています

テーマを1つに絞った45分のオンライン講座です。プログラミング未経験でも、手を動かしながら1つずつ覚えられます。

次回のPA45を見る

※ 本記事は公開日時点の内容です。筆者が実際に試した手順をまとめたもので、Power Automate の仕様は今後変わる可能性があります。
※ 記事の構成・図解の一部は、AIを壁打ち相手にしながら作成しています。

\ 最新情報をチェック /

💌

最新のPower Automate Tipsを毎日チェック

1枚スライドで関数・概念をわかりやすく解説しています。

𝅧 @isamu_Automate をフォロー →

PA45 — 45分でPower Automateを一緒に学ぼう

毎週木曜夜・オンライン・無料のハンズオン講座。初心者歓迎。

次回PA45に参加する →

コメント

PAGE TOP