CSVのカラム(列)を入れ替えるPAD

とりあえず動くPower Automate DeskTopを作成しました。

前回と同じように、

BBB,DDD,EEE,AAA,CCC

1, 2, 3, 4, 5

AAA,BBB,CCC,DDD,EEE

4, 1, 5, 2, 3

というように列ごと入れ替えるスクリプトを Power Automate DeskTop で組んでみました。

フォルダ構成

デスクトップ

├ Input.txt

└ TargetCSV.csv

Power Automate DeskTopでソースコードの公開する都合上、入出力変数を使用しないようにするため、デスクトップにしています。

Input.txt

AAA
BBB
CCC
DDD
EEE

TargetCSV.csv

BBB,DDD,EEE,AAA,CCC
1,2,3,4,5
1,2,3,4,5
1,2,3,4,5
1,2,3,4,5
1,2,3,4,5
1,2,3,4,5
1,2,3,4,5

ソースコード

Folder.GetSpecialFolder SpecialFolder: Folder.SpecialFolder.DesktopDirectory SpecialFolderPath=> SpecialFolderPath
File.ReadTextFromFile.ReadTextAsList File: $'''%SpecialFolderPath%\\Input.txt''' Encoding: File.TextFileEncoding.UTF8 Contents=> FileContents
File.ReadFromCSVFile.ReadCSV CSVFile: $'''%SpecialFolderPath%\\TargetCSV.csv''' Encoding: File.CSVEncoding.UTF8 TrimFields: True FirstLineContainsColumnNames: False ColumnsSeparator: File.CSVColumnsSeparator.SystemDefault CSVTable=> CSVTable
LOOP LoopIndex FROM 0 TO FileContents.Count - 1 STEP 1
    SET NewVar TO FileContents[LoopIndex]
    LOOP LoopIndexCSV FROM 0 TO CSVTable.Columns.Count - 1 STEP 1
        Variables.RetrieveDataTableColumnIntoList DataTable: CSVTable ColumnNameOrIndex: LoopIndexCSV ColumnAsList=> ColumnAsList
        IF NewVar = ColumnAsList[0] THEN
            IF LoopIndex = 0 THEN
                SET CSVTable02 TO {ColumnAsList[:ColumnAsList.Count] }
            ELSE
                SET Data TO ColumnAsList[:ColumnAsList.Count]
                SET CSVTable02 TO CSVTable02 + Data
            END
            EXIT LOOP
        END
    END
END
Variables.RetrieveDataTableColumnIntoList DataTable: CSVTable02 ColumnNameOrIndex: 0 ColumnAsList=> ColumnAsList2
SET CSVOutTable TO {ColumnAsList2 }
LOOP LoopIndex2 FROM 1 TO CSVTable02.Columns.Count - 1 STEP 1
    Variables.RetrieveDataTableColumnIntoList DataTable: CSVTable02 ColumnNameOrIndex: LoopIndex2 ColumnAsList=> ColumnAsList3
    SET CSVOutTable TO CSVOutTable + ColumnAsList3
END
File.WriteToCSVFile.WriteCSV VariableToWrite: CSVOutTable CSVFile: $'''%SpecialFolderPath%\\output02.csv''' CsvFileEncoding: File.CSVEncoding.UTF8 IncludeColumnNames: False IfFileExists: File.IfFileExists.Overwrite ColumnsSeparator: File.CSVColumnsSeparator.SystemDefault

上記ソースコードをPower Automate DeskTopに貼り付けることができます。

Power Automate DeskTop 画面

前半のLoopではInput.txtによる順番の入れ替えと行列が逆になったテーブルが作成されます。

AAA,1

BBB,2

といった出力になります。

後半のLoopでは行列を入れ替えています。

書籍紹介

Kindle Unlimitedで読める本があります。契約している人は試しに読んでみてはどうでしょうか・

RPA=業務自動化ツールの本命 Power Automate Desktop 実用一直線: すぐ使える実践的な例で、基本的な動作をていねいに解説

新品価格
¥780から
(2022/1/23 17:27時点)

Leave a Reply

Your email address will not be published.

CAPTCHA