Power Automateで前月分データをSharePointからExcelへ出力する方法|落とし穴も解説
この記事では、Power Automate を使って次の処理を自動化する際に詰まりやすかったポイントをまとめます。
- 毎月1日に自動実行する
- SharePoint Online リストから前月分のデータを取得する
- Excel テンプレートをコピーして新しいファイルを作る
- 取得したデータを1件ずつ Excel テーブルに追加する
- 必要に応じて PDF 化する
先に結論
Power Automate で前月分データを SharePoint から Excel に出力する場合、特に詰まりやすいのは次の4点です。
- SharePoint の列は表示名ではなく内部名で扱う必要がある
- 前月フィルターは日付条件を明示しないと取りこぼしや余計な取得が起きやすい
- Excel 側はテーブル化が必須で、
表に行を追加には 1 行オブジェクトが必要 - 実行成功直後でも、Excel への保存反映に少し時間差がある
この4点を先に理解しておくと、かなり詰まりにくくなります。
前提条件
今回の前提は次のとおりです。
- Power Automate のクラウドフローを使う
- データ元は SharePoint Online リスト
- 出力先は Excel Online のテーブル
- 毎月1日に前月分だけを抽出して出力する
フロー全体
今回やりたかったフロー全体はこうです。
- スケジュールで毎月1日に実行
- SharePoint Online リストから前月分データを取得
- Excel テンプレートをコピーして当月用ファイルを作成
Apply to eachで 1 件ずつテーブルへ追加- 保存反映を待ってから後続処理を実行
- 必要に応じて PDF 化
個々のアクション自体は珍しくありませんが、つなぎ込みでハマるポイントが多い構成でした。
用語を最小限だけ整理
Power Automate
Microsoft の自動化ツールです。
トリガーとアクションをつないで、クラウド上で処理を流せます。
SharePoint Online リスト
表形式でデータを持てるリストです。
今回の用途では、利用日や所属、氏名などを持つ一覧データとして使っています。
フィルタークエリ
SharePoint Online から取得するデータを条件付きで絞り込むための式です。
前月分だけ取得したいときはここが重要になります。
Excel テーブル
Power Automate の 表に行を追加 は、ただのセル範囲ではなく Excel のテーブルを対象にします。
テーブル化されていないシートに対しては基本的にうまく動きません。
内部名
SharePoint Online の列には、画面上の表示名とは別に内部名があります。
日本語列では特に、内部名がエンコードされたような形になりやすいです。
1. SharePoint の列名が表示名のままでは使えない
起きたこと
利用日、所属、氏名 のような列をそのまま参照しても、式の中で正しく読めませんでした。
保存時には、Apply_to_each や 表に行を追加 まわりでテンプレートエラーが出ることもありました。
原因
SharePoint の取得結果では、表示名と内部名が一致しないことがあります。
たとえば 利用日 は、実際には次のようなキー名になっていました。
- 表示名:
利用日 - 内部名:
OData__x5229__x7528__x65e5_
このため、式で ['利用日'] を指定しても存在しない扱いになります。
対処
フローをテスト実行して、複数の項目の取得 の出力を確認します。
生データを見ると、実際に使うべきキー名が分かります。
Power Automate で SharePoint を扱うときは、「表示名ではなく内部名を使う」が基本だと考えた方が安全です。
2. 前月フィルターは日付条件を具体化した方がよい
タイトルどおり「前月分データを出力する」フローにしたいなら、フィルター条件を曖昧にしない方がよいです。
考え方としては、
- 前月の開始日以上
- 今月の開始日未満
の 2 条件で範囲指定するのが分かりやすいです。
たとえば利用日列の内部名が OData__x5229__x7528__x65e5_ なら、概念的には次のような条件になります。
OData__x5229__x7528__x65e5_ ge 前月初日
and
OData__x5229__x7528__x65e5_ lt 今月初日
実際の式は環境や列型に合わせて調整が必要ですが、
「前月っぽい文字列でなんとなく絞る」のではなく、日付の開始・終了で範囲を切る方が安定します。
3. Excel の 表に行を追加 はテーブル前提
起きたエラー
最初の方で出たのがこれです。
A value must be provided for item
原因
表に行を追加 の item は、単一セルの値ではなく「1 行分のオブジェクト」を要求します。
さらに、追加先の Excel 側はテーブル化されている必要があります。
つまり必要なのは、
- Excel シートをテーブル化しておく
- 1 行分のデータをオブジェクトとして渡す
の 2 点です。
実際のイメージ
{
"利用日": "2026/02/17",
"所属": "鰻屋",
"氏名": "藤井"
}
この形で 1 件ずつ Apply to each から渡していくと、意図した動きに近づきます。
4. 成功しているのに Excel が空に見えることがある
起きたこと
Power Automate 上では成功になっているのに、Excel を見ると何も入っていないように見えました。
実際はどうだったか
実行履歴を見ると、
statusCode: 200- 追加した行データ
は返ってきていました。
つまり処理そのものは成功していました。
原因
問題は、処理成功から実際の保存・反映まで少し時間差があることでした。
体感では 30 秒程度のラグがあるケースがありました。
対処
後続処理に進む前に 遅延 を入れて、保存反映の待ち時間を確保しました。
クラウドフローの成功表示だけを見てすぐ次へ進むと、見た目上「空に見える」ことがあります。
5. 本番移行時に接続破損が起きることがある
発生したエラー
'表に行を追加' の接続が破損しています。
接続を修正してください。
原因
Power Automate の接続は、次の情報に紐づきます。
- ユーザーアカウント
- 環境(開発 / 本番)
- 認証トークン
そのため、開発環境で作った接続が本番環境ではそのまま使えないことがあります。
確認方法
方法1: アクション単位で確認
- フローを編集モードで開く
- 問題のアクションをクリック
- 右側パネル上部の接続欄を確認する
方法2: 接続一覧から確認
- 左メニューから
データ 接続- エラー状態の接続を探す
対処
接続を修正を押す- 新しい接続を作成する
- 必要なら問題のアクションを作り直す
私の環境では、再認証だけで直らず、失敗していたブロックを削除して作り直した方が早いケースもありました。
まとめ
Power Automate で SharePoint Online の前月分データを Excel に出力する処理自体は実現できますが、次の点でつまずきやすいです。
- SharePoint は内部名で扱う
- 前月フィルターは日付範囲で考える
- Excel 側はテーブル化が必須
- 保存反映の遅延を考慮する
- 本番環境では接続破損も疑う
個々のアクションだけを見ると簡単そうでも、実際には「つなぎ込み」でハマりやすいので、
最初にこの5点を意識しておくとかなり進めやすくなるはずです。