ルドルフもわたるふもいろいろあってな

Microsoft 365、Power Platform、PowerShellについて調べたことや検証したことなどを投稿します。技術の話は面白い。

【質問回答】【Power Automate】ダブルクォーテーションの無いCSVを取り込む

ましゅまろで質問をいただいたので回答します。


この質問に応えて作成したフロー「CSVの中身をSharePointリストに登録(ダブルクォーテーションなしのCSV」をGitHubで公開しました。

下記リンク先からダウンロードしてください。
github.com

こんなましゅまろをいただきました。

これは以前、このブログで公開しました「CSVの中身をSharePointリストに登録する」フローに関連する質問ですね。

CSVの中身をSharePointリストに登録する」フローとは

CSVの中身をSharePointリストに登録する」フローについてはこちらを参照してください。
wataruf.hatenablog.com

このフローはCSVの中身をフローで読み取ってそのデータをSharePointリストにアイテムとして投稿するフローです。

質問に記載頂いている「簡易版JSONdictionaryのKeyとValueの配列を作る所」というのは、CSVに記載されている列名とデータを紐づけてJSON形式のデータに変換している処理を指しています。

質問内容と回答方針

簡易版JSONdictionaryのKeyとValueの配列を作る所が上手くいかず

とのことですが、どう上手くいかなかったのか(= 期待と異なりどのような出力になったのか)については触れられていませんでした。

なので、なぜ上手くいかなかったのかではなくどうすれば要望通り「ダブルクォーテーションなしのカンマ区切り+改行のみのCSVが取り込めるのか」について解説する方針とします。

というわけで、まずは要望通りのフローを作成してみました。

このフローは「CSVの中身をSharePointリストに登録する」フローをベースに作成しています。そのため、フローの処理内容はほとんど同じです。

フロー図

アクションの設定を閉じた状態のフロー図


開いた状態のフロー図


フローの使用イメージ

ダブルクォーテーションなしのカンマ区切り+改行のCSVを作成します。

作成したCSVをOneDriveにアップロードします。

フローを実行します。

JSON Dictionary を作成するアクションの出力を確認します。期待通りのKeyとValueで構成されたJSONが作成されたのが分かります。

SharePoint リストにアイテムが正しく登録されました。

解説

「CSVの中身をSharePointリストに登録する」フローとの変更点を解説します。

フローの変更点のもとになるのはCSVのフォーマットの違いです。

ベースにしたフローがインプットとしているCSVのフォーマットは以下の通りです。すべての項目にダブルクォーテーションが付いています。

今回ましゅまろでいただいたCSVのフォーマットは以下の通りです。こちらはダブルクォーテーションがありません。

この2つのフローがCSVを読み込むために行う文字列操作には下図のような違いがあります。

つまり、ベースとなるフローの処理内容を以下の通り変更することでご要望通りのフローになります。

  • 「両端の1文字を削除する」アクションを削除する。
  • データの区切り文字を「","」から「.」に変更する。


まずはヘッダーの文字列処理を変更していきましょう。

次に、データ部分の文字列処理も変更します。

CSVのフォーマットに合わせて文字列処理を適切に変更することで、後続のJSON Dictionary の作成アクションで配列が正しく作成されます。

解説は以上です。ましゅまろをいただいたかた、参考になりましたでしょうか。

(`・ω・´) ノシ

このフローをGitHubで公開しました。(再掲)

フローをGitHubで公開しました。下記リンク先からダウンロードしてください。この投稿の冒頭で記載しているリンクと同じです。
github.com


今回は以上です。

2022/9/24追記:質問いただいた方から「上手くいきました」というましゅまろをいただきました。

お力になれたようで嬉しいです。
m(__)m