Power AutomateでSharePointリストをCSV出力する方法
2021-10-05
azblob://2022/11/11/eyecatch/2021-10-04-power-automate-sharepoint-csv-000.jpg

こんにちは、あおいです。
最近、業務でPower BIやPower Automate Desktop(略してPAD)をゴリゴリに使っていたので、いつかその辺の知見も発信していこうかなぁ~と思います。

さて、SharePointを普段利用されている方はご存じかと思いますが、SharePointにはリストを自動でCSV出力してくれる機能があります。
[Apple製品リスト]というリストを事前に作成したので、CSV形式でリストを出力してみます。
そうすると、CSV出力自体は成功しますが、残念ながら文字化けを起こします。

文字化けの原因は文字コードが関係しています。
SharePoint のリストやライブラリでエクスポートされるCSVファイルは UTF-8 という文字コードで出力されますが、 Excel では Shift-JIS という文字コードで開いてしまいます。




ググれば解決策はいくつかあります。
例えば、ご利用のPCがWindowsの場合、メモ帳を開いて文字コードを ANSI に変換して新しいファイル名で保存すれば、文字化けが解消されます。Macの場合、テキストエディットを開いて Shift JIS に変換します。


最初は「まぁ、これでいっか。」と思っていましたが、何回か同じ作業を繰り返すうちに「いちいち手動でカチカチ設定するのめんどくさい!!!」となりました。



そこで、今回はPower AutomateでSharePointリストをCSV出力する方法について紹介したいと思います。もちろん、Excelで開いても文字化けしない方法です。


まず、Power Automateで[インスタントクラウドフロー]を選択して、[手動でフローをトリガーします]をトリガーとします。




[SharePoint]コネクタの[複数の項目の取得]アクションを選択します。
サイトのアドレス[適当なSharePointサイトアドレスを選択]、リスト名[Apple製品リスト]、ビューによる列の制限[すべてのアイテムを選択]など各項目を設定していきます。




一旦、この状態で保存してフローを実行してみましょう。
実行後、フローが成功していると思われるので、出力から[クリックしてダウンロードします]を選択します。




別タブが開き、以下のような出力結果が表示されます。
valueの [ ] の記号で括られたArray(配列)型データを利用します。value値(赤枠部分)を範囲選択してコピーします。


組み込みタブの[データ操作]コネクタから[JSONの解析]アクションを選択します。
コンテンツ[動的なコンテンツからvalueを選択]、スキーマ[サンプルから生成を選択し、先ほどコピーした値を貼り付けて完了]など各項目を設定していきます。




スキーマが自動生成されて以下のようになります。
ここで一点大事な確認があります。
typeがArray(配列)型であることを必ず確認してください。Array型でないとフロー実行はエラーになります。




組み込みタブの[データ操作]コネクタから[CSVテーブルの作成]アクションを選択します。
開始[動的なコンテンツから本文を選択]、列[カスタム]、ヘッダー[SharePointリストの列名入力]、値[動的なコンテンツから該当の値を選択]など各項目を設定していきます。
※SharePointリストの列が選択肢型の場合、動的なコンテンツから Value を選択します。




[SharePoint]コネクタの[ファイルの作成]アクションを選択します。
サイトのアドレス[適当なSharePointサイトアドレスを選択 ]、フォルダーのパス[任意のパスを指定]、ファイル名[任意のファイル名 + 拡張子(.csv)]など各項目を設定していきます。

また、ファイルコンテンツは動的なコンテンツから出力を選択しますが、残念ながらそのまま選択してフロー実行すると文字化けが発生します。
Power Automateでは文字列は UTF-8 で処理されてしまい、 Excelでは UTF-8 であることを認識できずに Shift-JIS でファイルを開いてしまいます。冒頭で説明した文字化けと同じ原因です。




Power Automateで文字化けの対処方法に関してはこちらの記事を参考にしてみてください。
Power AutomateでCSVを保存したときにコンテンツが文字化けする - 解決策

紹介した記事を参考に以下の手順でファイルコンテンツの項目を設定していきます。
①式タブからconcat関数を選択し、第1引数に decodeUriComponent('%EF%BB%BF') を入力する。
②動的なコンテンツタブから[出力]を選択して、concat関数の第2引数にセットする。




これでSharePointリストのCSV出力フローは完成しました!
試しにフローを実行して確認してみましょう!




指定したフォルダにCSVファイルがきちんと保存されていますね!
また、文字化けすることなく、CSV出力も正常に動作しています!


今回はPower AutomateでSharePointリストをCSV出力する方法について紹介させていただきました。
Dataverseのデータも同様の方法でCSV出力することが可能です!

DataverseのCSV出力方法はこちらの記事で紹介しています!是非ご覧ください!
Power AutomateでDataverseのデータをCSV出力する方法 | cloud.config Tech Blog