Power Automate Desktop でCSVの列名が正しいかIFで確認

当ページのリンクには広告が含まれています。

「CSVファイルから読み取る」を使う場合に、取得したCSVが意図したファイルかを確認する方法を考えました。

全く違うCSVを読み取ってエラーで停止という症状を回避したいためです。

ついでに複数条件のIFの説明もあります。

目次

実行環境

  • Windows 11 Pro 22H2
  • Power Automate Desktoop バージョン 2.34.187.23206

作業手順

1. CSVファイルを列名含めて読み取る

  1. CSV ファイルから読み取るフローを作成。
  2. 最初の行に列名が含まれていますをONにします。

2. 条件IFで列名をチェックする

正解は1列目が「ライブラリー」2列目が「データベースID」のCSVとします。

  1. IFのフローを作成。
  2. 最初のオペランドを次のように指定します。

%CSVTable.ColumnHeadersRow[0] = ‘ライブラリー’ AND CSVTable.ColumnHeadersRow[1] = ‘データベースID’%

  1. 演算子を「と等しくない(<>)」、2 番目のオペランドに true を設定します。
  2. 最初のオペランドを次のように指定します。
ふぅたこ

列数が2つ以下の場合にエラーが出てしまう課題発見・・・。

[変数].ColumnHeadersRow[0]は一番左の列です。[ ]内の数字が増えるごとに右の列名になります。

And を Or に変えるとOr条件でも指定可能です。

3. 正しくない列名の場合は処理を止める

  1. 2. の条件と違ったCSVファイルを読み込んだ場合はIFの処理に進みます。
  2. エラーメッセージを表示したり、フローを停止する処理を入れればOKです。

今回のソース

Power Automate Desktop

コピー貼り付けで利用できます

Display.SelectFileDialog.SelectFile Title: $'''CSVファイルを指定してください。''' FileFilter: $'''*.csv''' IsTopMost: False CheckIfFileExists: True SelectedFile=> SelectedFile ButtonPressed=> ButtonPressed
IF ButtonPressed = $'''Cancel''' THEN
    EXIT Code: 0
END
File.ReadFromCSVFile.ReadCSV CSVFile: SelectedFile Encoding: File.CSVEncoding.SystemDefault TrimFields: True FirstLineContainsColumnNames: True ColumnsSeparator: File.CSVColumnsSeparator.SystemDefault CSVTable=> CSVTable
IF (CSVTable.ColumnHeadersRow[0] = 'ライブラリー' AND CSVTable.ColumnHeadersRow[1] = 'データベースID') <> $'''true''' THEN
    Display.ShowMessageDialog.ShowMessage Title: $'''エラーです''' Message: $'''指定のCSVではありません。
列名は\'ライブラリー, データベースID\'の形式にしてください。
''' Icon: Display.Icon.ErrorIcon Buttons: Display.Buttons.OK DefaultButton: Display.DefaultButton.Button1 IsTopMost: False
    EXIT Code: 0
END

テスト用のCSVファイル

正しい判定になるCSV

誤った判定になるCSV

まとめ

意図したCSVファイルと違ったファイルを読み込み、「よくわからないエラーが出る」という相談を受けたため解決方法を考えてみました。

複数条件のIF文も使い方がわかったため他のパターンでも使えそうです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次