本記事では、Power Automateを使ってSharePointリストのデータをcsv出力する際の方法・注意点・応用案についてご紹介します。
業務データでSharePointリストを使用し、活用を考えている方の参考となれば幸いです。
Power Automateフローの作成方法
早速Power Automateフローの作成方法について説明していきます。
フローの全体像としては、アクションの名前が英語表記で分かりづらいですが、下記の5ステップとなっています。
- Manually trigger a flow(手動実行)
- Get items (複数の項目の取得)
- Select(選択)
- Create CSV table(CSVテーブルの作成)
- Create file(ファイルの作成)
今回は、出力したcsvファイルをSharePointサイトのドキュメントライブラリに保存するため、ステップ5ではSharePointのコネクタを利用しています。
ステップ2以降の各アクションの設定内容について説明していきます。
Get items (複数の項目の取得)
このステップでは、対象のSharePointリストのアイテム(レコード)を全て取得します。
- Site Address:SharePointリストが存在するサイトを選択
- List Name:対象のSharePointリストを選択
Select(選択)
このステップでは、先ほど取得したSharePointリストのアイテムの中から今回使用するSharePointリストの列を指定しています。
※Get items(複数の項目の取得)では、内部列を含めた全ての情報を取得しているため、ここで欲しい情報(列)を指定する必要があります。
- Form:valueを選択
- Map:csvファイルで取得したいSharePoint列を選択
- 左の列はcsvファイルのヘッダーの名前を登録
- 右の列は情報を取ってくるSharePointリストの列名を選択
Create CSV table(CSVテーブルの作成)
このステップでは、先ほどのSelect(選択)で指定した情報を元にPower Automateフローの内部で保持するcsvテーブルのデータを作成しています。
- Form:Output(出力)で選択の出力結果を選択
Create file(ファイルの作成)
このステップでは、先ほど作成したcsvテーブルをcsvファイルとして、指定したパス(今回はSharePointサイトのドキュメント上)に保存しています。
- Site Address:ファイルを保存したいフォルダのあるSharePointサイトを選択
- Folder Path:ファイルを保存したいフォルダを選択
- File Name:Date(日付)を選択し、ファイル名の最後は必ず「.csv」とする
- File Content:数式で「decodeUriComponent('%EF%BB%BF')」と入力して追加し、その後ろに「Output」(出力)を追加する
以上でフローの作成手順は終了です。
※ 例えば、このフローを2023/9/15に実行した場合のファイル名は「2023-09-15_test.csv」となります。
注意点
ファイルの作成アクションのFile Contentの設定内容で、作成のOutputの前に「decodeUriComponent('%EF%BB%BF')」を設定しますが、これが重要な項目になります。
この設定をOutputの前に入れずに直接File Contentを「Output」とした場合、下の画像のように文字化けした状態で表示されます。
文字化けが発生する原因について説明します。
まず、Power Automateでは文字列は全てUTF-8で処理され、保存したファイルもUTF-8となります。
しかし、Excelは文字コードがUTF-8であることを判定できず、Shift JISでファイルを開いてしまうため、今回の現象が発生します。
解決策の一つとして、ExcelにこのファイルをUTF-8であることを認識させる必要がありますが、そのためにはBOM付UTF-8として保存する必要があることが分かりました。
元々がBOM無しのUTF-8ですので、このBOMを追加する設定を加えました。それがOutput前の「decodeUriComponent('%EF%BB%BF')」であったというわけです。
※ BOMの付与についてはこちらのサイトを参考にしました
プログラムがテキストデータを読み込む際に先頭の数バイトによりUnicodeのデータであることやどの種類の符号化形式を採用しているのかを判別しています。BOM付きのUTF-8であれば先頭の3バイトがBOMであり、<0xEF 0xBB 0xBF>というデータになります(引用:UTF-8のBOM付き・BOM無しの違いと確認方法 | UX MILK)
この設定を行ったのが、本記事で紹介したフローです。文字化けせず正しく文字が表示されるようになっています。
応用案
最後に、今回紹介した「SharePointリストのcsv出力」の応用案を考えましたのでご紹介します。
複数の項目の取得のアクションの設定項目「フィルタークエリ」で、日付データが登録された列に対してフィルタークエリを設定します。
(画像の例では、2021年度のデータのみを取得するようにしています。)
取得するSharePointリストは2019年~2021年までのテストデータが登録されたものです。
無事2021年のみのデータを取得することに成功しました。
今回はフィルター条件に固定の日付を設定しましたが、動的な値も指定することができます。
動的な日時データは、データ操作や上の画像ように日時アクションの組合せで、先月初日や先月末日などの日付情報を取得できます。
これらを利用して「業務データが格納されたデータソースから、毎月フローをスケジュール実行し、各月の必要なデータのみを抽出し出力する」ことが可能となり、指定のフォルダに、「2023-09分受注」、「2023-10分受注」というデータを毎月自動で取得できるようになります。
まとめ
今回は、Power AutomateでSharePointリストのデータをcsv形式で出力する方法についてご紹介しました。
基本的な部分のみを説明しましたが、応用案のように工夫すれば業務の様々なところで活用できる可能性を秘めていると思います。
Power AutomateでcsvファイルやSharePointリストを扱う際は是非参考にしてみてください!
坂井 颯斗(日本ビジネスシステムズ株式会社)
中部HC部に所属。現在はIoTシステムの保守作業とPowerPlatformのQA対応を行っています。 最近クラフトビールにハマっています。HazyとベルジャンIPAがお気に入りです。
担当記事一覧