PowerAutomateでCSVをつなげる

まとめ

Power Automate for Desktop で複数のCSVファイルをつなげたい。そのためのフローを作ってみた。なお、各元CSVファイルのそれぞれ1行目は、見出し行となっている。

やりたいこと

Power Automate for Desktop で、複数のCSVファイルをつなげたい。
各CSVファイルのそれぞれ1行目は見出し行となっているが、つなげた後には余計な見出し行が途中に残っていないようにしたい。

環境

  • OS: Windows 11 Pro  24H2
  • 使うソフト: Microsoft Power Automate for Desktop  バージョン: 2.58.00134.25188

やったこと

以下のようなフローを従来のRobinで作ってみた。
内容は、デスクトップにある csv_test_A.csv, csv_test_B.csv, csv_test_C.csv という3つのファイルを1つのCSVにまとめてファイル名の末尾に日付となる数字をつけて保存するというもの。
見出しについては、つなげた後に1行目に挿入するようにした。

コードを以下に貼り付ける。

# フェーズ:必要な変数の宣言
# 保存先とするファイルのファイル名の基幹とする文字列を指定
SET FileNameInWorking TO $'''csv_test_result'''
# フェーズ:複数の読み込み元ファイル名の可変部分をリストアップ
Variables.CreateNewList List=> List
Variables.AddItemToList Item: $'''A''' List: List
Variables.AddItemToList Item: $'''B''' List: List
Variables.AddItemToList Item: $'''C''' List: List
# フェーズ:複数のCSVファイルを読み込んで1つのファイルに追記していく。その際、列のタイトルである1行目は省く。
LOOP FOREACH CurrentItem IN List
    File.ReadFromCSVFile.ReadCSV CSVFile: $'''C:\\Users\\user\\OneDrive\\デスクトップ\\csv_test_%CurrentItem%.csv''' Encoding: File.CSVEncoding.SystemDefault TrimFields: True FirstLineContainsColumnNames: True ColumnsSeparator: File.CSVColumnsSeparator.SystemDefault CSVTable=> CSVTable
    File.WriteToCSVFile.WriteCSV VariableToWrite: CSVTable CSVFile: $'''C:\\Users\\user\\OneDrive\\デスクトップ\\%FileNameInWorking%.csv''' CsvFileEncoding: File.CSVEncoding.SystemDefault IncludeColumnNames: False IfFileExists: File.IfFileExists.Append ColumnsSeparator: File.CSVColumnsSeparator.SystemDefault
END
# フェーズ:仕上げ。1行目に列のタイトルを付けて、ファイル名に日付の数字を付けて保存する。
File.ReadTextFromFile.ReadText File: $'''C:\\Users\\user\\OneDrive\\デスクトップ\\%FileNameInWorking%.csv''' Encoding: File.TextFileEncoding.DefaultEncoding Content=> FileContents
File.WriteText File: $'''C:\\Users\\user\\OneDrive\\デスクトップ\\%FileNameInWorking%.csv''' TextToWrite: $'''id,name,price,date
%FileContents%''' AppendNewLine: False IfFileExists: File.IfFileExists.Overwrite Encoding: File.FileEncoding.DefaultEncoding
File.RenameFiles.RenameAddDateOrTime Files: $'''C:\\Users\\user\\OneDrive\\デスクトップ\\%FileNameInWorking%.csv''' DateTimeToAdd: File.DateTimeToAdd.Current DateTimePosition: File.AddTextPosition.AfterName DateTimeSeparator: File.Separator.Underscore DateTimeFormat: $'''yyyyMMdd''' IfFileExists: File.IfExists.Overwrite RenamedFiles=> RenamedFiles

とりあえず、想定した通りに動いた。

タイトルとURLをコピーしました