Power Automateを使ってSharePointのリストやライブラリ内の複数項目を更新するフローは、日常業務の効率化に欠かせません。しかし、いざ動かしてみると「一部の項目だけ更新されない」「フローが途中で止まる」といったトラブルに遭遇することがあります。特に会社の管理下にある環境では、設定変更の影響範囲が広くなるため、原因を特定して安全に再設定する必要があります。この記事では、SharePointの複数項目更新でつまずく主な原因と、会社PCや管理者設定を考慮した安全な再設定の手順を具体的に解説します。
【要点】この記事で確認すること
- 最初に見る場所: フローの実行履歴とSharePointリストのアクセス許可設定を確認します。
- 切り分けの軸: 端末側(Power Automateのバージョンやコネクタ)、アカウント側(権限やライセンス)、管理設定側(テナント制限やカスタムコネクタ)の3軸で原因を特定します。
- 注意点: 会社PCで共有のSharePointリストに対してフローを編集する場合は、影響範囲を事前に確認し、管理者の承認を得てから変更を行ってください。
ADVERTISEMENT
目次
複数項目の更新がうまくいかない原因は多岐にわたりますが、会社環境では特に以下の3つの原因が頻繁に報告されています。それぞれについて、具体的な症状と背景を説明します。
権限不足による更新スキップ
Power AutomateでSharePointを操作する際、フローを実行するユーザー(通常はトリガーをかけた人)のアクセス権限がベースになります。リストの一部の項目に対して「編集」権限がない場合、その項目の更新はスキップされます。また、フロー内で使用するコネクタの種類(ユーザー委任型とアプリ専用型)によっても権限のスコープが変わります。会社環境では、IT管理者が「特定のユーザーグループのみ編集可能」といった制限をかけているケースがあり、フローの実行アカウントがそのグループに含まれていないとエラーになります。
列の型や値の不一致
更新対象の列に、フローで指定した値の型が合わない場合もエラーの原因です。例えば、数値型の列に文字列を代入しようとしたり、参照先のリストで存在しないIDを指定したりすると、その行だけ更新に失敗します。特に「ユーザーまたはグループ」列や「参照」列は、内部的なIDの形式が複雑で、Power Automateで正しく設定しないとエラーになりやすいです。会社のSharePoint環境では、カスタム列やビジネス要件に合わせた列が多数設定されているため、この問題が発生しがちです。
同時実行とスロットリング制限
Power Automateには1分間あたりの実行回数や同時リクエスト数に制限があります。会社のテナント全体で多くのフローが動作していると、スロットリングが発生して一部の更新が処理されないことがあります。また、フロー内で「Apply to each」を使ってリストの全項目をループ更新する場合、ループ内で毎回SharePointへのAPI呼び出しが発生するため、大量項目の更新では制限に引っかかりやすくなります。
原因を切り分けるための確認手順
問題が発生したら、まず以下の手順で原因を切り分けてください。会社の環境では、安易にフローの設定を変更する前に、必ずログや設定値を確認することが安全です。
- フローの実行履歴を確認する:Power Automateポータルで該当のフローを開き、「実行履歴」タブから最新の失敗した実行をクリックします。各アクションの「入力」と「出力」を確認し、どのアクションでエラーが発生しているか特定します。エラーメッセージには「Access denied」「ItemNotFound」などのキーワードが含まれています。
- SharePointリストのアクセス許可を確認する:更新対象のリストで「設定」→「リストのアクセス許可」を開き、フローを実行するユーザー(または共有アカウント)が「編集」以上の権限を持っているか確認します。また、リストの「詳細設定」で「アイテムレベルのアクセス許可」が設定されている場合は、自分が作成したアイテムのみ編集可能などの制限がかかっていないか確認してください。
- 列の設定とデータ型を確認する:リストの設定で、更新対象となる各列の「列の種類」をメモします。特に「ユーザーまたはグループ」列は「ユーザーの選択肢」と「人物またはグループ」の2種類があり、それぞれ値の指定方法が異なります。Power Automateのアクションで「更新する項目」の列に正しい値が設定されているか、動的コンテンツや式を使って確認してください。
- スロットリングの兆候を確認する:フローの実行履歴で、エラーが「429 Too Many Requests」や「一時的に利用できません」といったメッセージの場合は、スロットリングが原因です。Power Automateの「設定」→「コネクタ」で使用しているSharePointコネクタのAPI制限を確認するか、管理者にテナント全体の制限状況を問い合わせてください。
- テスト用の小規模リストで再現する:安全な環境として、テスト用のSharePointリスト(項目数10程度)を作成し、同じフローを実行してみます。正常に動作すれば、元のリストの項目数や権限設定が問題である可能性が高まります。
失敗パターンとその判断基準
実際に遭遇しやすい失敗パターンを、症状と原因から判断する基準と共にまとめます。
パターン1:全く更新されない
フローは正常終了しているのに、リストの項目が一件も更新されない場合があります。これは多くの場合、フロー内で使用している「条件」や「フィルター」の設定ミスです。例えば、「項目を取得する」アクションで取得する項目数を制限しすぎていたり、「Apply to each」の対象が空の配列になっていることが考えられます。実行履歴で「Get items」の出力を確認し、期待する項目が取得できているかをチェックしてください。
パターン2:一部の項目だけ更新されない
特定の項目だけ更新されない場合、その項目の権限が他と異なる可能性があります。また、列の値に特殊文字(改行や引用符)が含まれていると、Power AutomateのJSONパースで失敗することがあります。エラーメッセージが「BadRequest」の場合は、更新するデータの形式を見直してください。更に、リストに「バージョン管理」が有効で、かつ「アイテムをチェックアウトする必要がある」設定になっていると、チェックアウトされていない項目は更新できません。
パターン3:フローが途中でタイムアウトする
大量の項目(例えば1000件以上)を一度に更新しようとすると、Power Automateのアクション実行時間制限(2分)を超えてタイムアウトすることがあります。この場合、フローを分割するか、バッチ処理を導入する必要があります。会社環境では、テナント全体のフロー実行時間にも制限があるため、長時間実行フローは特に注意が必要です。
会社環境で安全に再設定する手順
原因が特定できたら、次の手順で安全にフローを再設定します。必ず事前にフローのコピーを作成し、元のフローには影響を与えないようにしてください。
- フローを複製してテスト用フローを作成する:Power Automateで該当フローを開き、「名前を付けて保存」で別の名前(例:「テスト用-更新フロー」)で保存します。テスト用フローで修正を加え、問題が解決するか検証します。
- 権限エラーが原因の場合:フローで使用する接続参照を確認します。現在の接続がユーザー委任(個人アカウント)になっている場合、サービスプリンシパル(アプリ専用)に変更することを検討します。ただし、アプリ専用コネクタの使用にはSharePoint管理者による承認が必要です。管理者に「SharePointアプリ専用アクセス許可」の設定を依頼し、その後にPower Automateで新しい接続を作成してください。
- 列の型不一致が原因の場合:更新アクションの「詳細設定」で、各列の値に式を使って明示的に型を変換します。例えば数値列には
int(variables('数値変数'))、ユーザー列にはstring(outputs('Get_user_profile')?['body/Id'])などの式を組み込みます。また、空の値を送信する必要がある場合は、nullではなくconcat('')を使用してください。 - スロットリング回避策:Apply to eachループ内に「遅延」アクションを挿入し、各API呼び出しの間に0.5秒~1秒の待機時間を設けます。また、一度に更新する項目数を制限するため、「フィルタークエリ」で分割して複数のフローで実行するか、バッチ処理を実装します。具体的には、すべての更新データをJSON配列にまとめ、SharePoint REST APIを直接呼び出す「HTTP」アクションを使う方法もあります。
- フローを本番環境に反映する:テスト用フローで問題が解決したら、元のフローに同様の修正を加えます。このとき、一度元のフローを無効にしてから編集し、再度有効にすることをお勧めします。変更後は、少ない項目数でテスト実行し、安全を確認してください。
管理者に確認すべき設定と比較表
会社環境では、個人では変更できない管理者設定が原因となっていることがあります。以下の表で、管理者に確認すべきポイントと、各設定の影響をまとめました。
| 確認項目 | 影響の内容 | 対応方法 |
|---|---|---|
| SharePointテナントの「APIアクセス許可」 | Power AutomateからSharePointへのアクセスが制限されている場合、更新が失敗する | 管理者が「SharePoint Online」の委任アクセス許可を確認し、必要なら追加 |
| Power Automateの「データ損失防止(DLP)ポリシー」 | SharePointコネクタが「ビジネスデータ」グループに制限されていると、フローで使用できない | 管理者にDLPポリシーを確認してもらい、必要なコネクタを許可するよう依頼 |
| SharePointリストの「要求の制限」 | 1回のAPI呼び出しで更新できる項目数に上限がある | フロー内でページング処理やチャンク分割を実装 |
| Power Automateの「実行リミット」 | 1フローあたりの最大実行時間やループ回数に制限がある | フローを複数に分割するか、長時間実行に備えた設計に変更 |
管理者に問い合わせる際は、上記の表を参考に具体的な設定を確認するとスムーズです。また、変更を依頼する場合は、その変更が他のフローやユーザーに影響しないことを事前に説明してください。
よくある質問とその回答
Q1. フローを修正したのに、なぜ同じエラーが続くのですか?
フローを修正しても、Power Automateのキャッシュが残っている可能性があります。一度フローを無効にしてから再度有効にする、またはPower Automateポータルをリロードしてからテスト実行してみてください。それでも改善しない場合は、修正内容が正しく保存されているか(「保存」ボタンを押したか)確認してください。
Q2. アプリ専用コネクタを使うべきか迷っています。判断基準はありますか?
ユーザー委任型では、フローを実行したユーザーの権限が適用されます。そのため、複数のユーザーがフローを実行する場合や、ユーザーが退職した場合に権限問題が発生しやすいです。一方、アプリ専用型は単一のサービスアカウントで動作するため安定しますが、管理者の設定と追加の承認が必要です。業務で長期的に使用する重要なフローであれば、アプリ専用コネクタへの移行を検討してください。
Q3. 一度に1000件以上の項目を更新したいのですが、どうすればよいですか?
大量更新の場合は、フロー内で「ページング」処理を実装することをお勧めします。「Get items」アクションで「トップカウント」を100に設定し、次に「次のリンク」を使って次の100件を取得するループを作成します。または、Power Automateの「並列分岐」を使って複数の更新を同時実行することも可能ですが、スロットリングに注意してください。会社環境では、一度に大量のAPI呼び出しを発生させると他のユーザーに影響を与える可能性があるため、可能であれば段階的に更新する設計にしてください。
まとめ
SharePointの複数項目更新でつまずく原因は、権限、列の型、スロットリングの3つに大別されます。会社環境では、個人の判断で変更できない管理者設定が関わることが多いため、原因を特定したらまず管理者に確認を取ることが安全です。フローを修正する際は、必ずコピーを取ってからテスト環境で検証し、本番に適用する前に少ない項目で動作確認を行ってください。この記事で紹介した手順や比較表を参考に、安定した自動化を実現してください。
ADVERTISEMENT
超解決 リモートワーク研究班
Microsoft 365の導入・保守を専門とするエンジニアグループ。通信障害やサインイン不具合など、ビジネスインフラのトラブル対応に精通しています。
Office・仕事術の人気記事ランキング
- 【Outlook】添付ファイルが「Winmail.dat」に化ける!受信側が困らない送信設定
- 【神技】保存せずに閉じたExcel・Wordファイルを復元する!消えたデータを復活させる4つの救出法
- 【Teams】メッセージを「保存済み」にして後で読む!重要なチャットをブックマークして整理する技
- 【Word】差し込み印刷で数字の桁を整える!金額にカンマ(桁区切り)を入れる設定
- 【Word】校閲機能の基本!赤字(変更履歴)とコメントで修正を見える化する
- 【PDF】PDFに入力した文字の「フォント・サイズ・色」を変更するプロパティ設定
- 【PDF】結合するPDFの「用紙サイズ」がバラバラな時、すべてを「A4サイズ」に強制リサイズしてから結合する
- 【Excel】矢印キーで「セルが動かず画面がスクロールする」!ScrollLockの解除方法(ノートPC対応)
- 【Teams】会議の「参加者リスト」を出席後にダウンロードする!誰が参加したか確認する手順
- 【Teams】画面共有時に「音声」も共有する方法!音が流れない時の設定手順
