CSVファイルをLogicAppで読み込もうとしたのですが、LogicAppsの既存アクションとして存在しておらず、四苦八苦しながら実装したのでメモとして残したいと思います
(MicrosoftさんはそろそろCSV読み込みをどの製品でも標準実装してほしい。。。)
CSVファイルを実際に読み込む
SharePoint上に配置されたCSVファイルを読み込む
今回はSharePointOnline上にあるCSVファイルを対象として読み込みを実施します
LogicAppsのSharePoinコネクタ内の「ファイル コンテンツの取得」を使用して対象CSVファイルを読み込みます
読み込むCSVファイルに日本語が含まれている場合
CSVファイル内に日本語が含まれる場合は、ファイルを保存する際に文字コードを「UTF8 BOM付(UTF8 with BOM)」でないと読み込んだ際に文字化けが発生します
読み込んだCSVファイルを使えるデータに変換する
次に読み込んだデータをLogicAppsのデータ操作機能の「作成」内でSplit関数を使用して
使えるように変換します
Split関数内は以下の内容にしています
split(base64ToString(outputs('ファイル_コンテンツの取得')?['body']?['$content']), decodeUriComponent('%0D%0A'))
・?['body']?['$content'] : SharePointコネクタで取得したファイル内容をすべて取得する
・%0D%0A : ANSIエンコードされたファイルでの改行コード
CSVファイルが読み込めましたが、末尾に不要な行が含まれています
末尾の不要な行を削除する
次に読み込んだデータをLogicAppsのデータ操作機能の「作成」内でTake関数を使用して
末尾の空行を削除します
Take関数内は以下です
take(outputs('CSVファイルを使用できるように修正'),add(length(outputs('CSVファイルを使用できるように修正')),-1))
末尾の空行を削除することができました
1行目を削除する
読み込んだデータをLogicAppsのデータ操作機能の「作成」内でSkip関数を使用して
1行目を削除します
Skip関数は以下です
skip(outputs('余分な最後の1行を削除する'),1)
最初の名称の一行を削除できました
最後に各列名を設定する
読み込んだデータをLogicAppsのデータ操作機能の「選択」を使用して各列名を設定します
Split関数内は以下です(末尾の数字は適宜変えてください)
split(item(),',')?[0]
各列名が付いた状態で値が保持されて、読み込んだCSVファイルデータを使用できるようになりました
ここまで手間をかけずに1アクションでCSVデータを使えるように早くしてもらいたいものです