Power Automate Desktop(PAD)でCSVファイルを読み込む方法について解説します。
本アクションでは、タブ区切りの「TSVファイル」や、スペース区切りのファイルも読み込むことが可能です。
また、CSVファイルを読み取ったあとのPADでの様々な処理方法についても解説しています。
「CSVファイルから読み取る」アクションを追加
PADでCSVファイルを読み込むには、「CSV ファイルから読み取る」アクションを使います。
PADを開くと画面左側にアクションが一覧で表示されていますので、このなかから「ファイル」カテゴリ内にある該当アクションをドラッグアンドドロップで真ん中の白いエリアに配置します。
すると、以下のようなダイアログが表示されます。
ファイル パス
「ファイル パス」では、読み込みたいCSVを指定します。
赤枠部分をクリックすると、エクスプローラーが開きますので、読み込みたいCSVを選択します。
エンコード
次に、CSVファイルを読み込むときのエンコードを指定します。エンコードは、読み込むCSVファイルのエンコードに合わせます。
CSVファイルの文字コード確認方法
対象のファイル上で右クリックし、「メモ帳で編集」を押します。
メモ帳の右下に、文字コードが表示されています。
文字化けしてしまう場合の対処法
大体の場合はUTF-8を使っておけば問題ないかと思います。
しかし、以前はSJISも多かったので、古めのCSVファイルを扱う際は文字コードを一度確認すると良いでしょう。文字コード指定に誤りがあると、文字化けが発生します。
本アクションには「SJIS」というエンコード指定は存在しないため、対処法としては「システムの規定値」と選ぶようにします。
それでも文字化けしてしまう場合
それでも文字化けする場合には、CSVファイルの文字コード自体をUTF-8に変更してしまうのが手っ取り早いです。
メモ帳を開くと、SJISのファイルは「SJIS」もしくは「ANSI」と表示されています。このファイルに対して「名前をつけて保存」を行います。
保存時に「エンコード」から「UTF-8」を選択します。
これで、CSVファイルをUTF-8に変換することができました。
読み込んだCSVは「データテーブル」となる
作成したフローは以下のようになっているかと思います。では実際に、フローを実行してCSVファイルを読み込んでみましょう。
赤枠部分(再生ボタン)を押し、フローを実行します。
フローが完了すると、目に見えて何か動作したわけではないのでちゃんと読み込まれたのか分かりにくいですが、画面右側の「変数」エリアの「フロー変数」にある「CSVTable」という変数に値が入ったことが分かります。
ダブルクリックすると、変数”CSVTable”の中身を確認できます。
変数名の横に「Datatable」と記載があり、中身は表のようになっていますね。これはPADの「データテーブル」という型としてCSVファイルが格納されたことを表しています。
「データテーブル」とは、Excelのように行と列で構成される二次元の配列です。
読み込んだCSVファイルの扱い方
読み込んだCSVファイルの扱い方について解説します。
先述のとおり、読み込んだCSVファイルは「データテーブル」という二次元配列になっています。
値の取得
特定の行・列の値を取り出したい場合の例です。
データテーブルを取り出す際は、変数名の後ろに行・列をカッコ書きで記載します。
%CSVTable[0][2]%
要素の追加
読み込んだCSVファイルの要素を追加する方法です。
「変数の設定」アクションを使います。「変数」はデフォルトだとNewVarになっているので、CSVTableに変更します。「値」は、データテーブルの項目数分、過不足なく記載しないとエラーになるので注意してください。
このフローを実行すると、データテーブルの末尾に新しくレコードが追加されます。
Excelに展開する
読み込んだCSVファイルを、そのままそっくりExcelに貼り付ける方法です。
2行目の「Excelの起動」は、設定はデフォルトのままでOKです。
3行目の「Excel ワークシートに書き込む」は、以下のように設定します。
「書き込む値」に%CSVTable%、「列」「行」はExcelのどの位置からCSVファイルの内容を書き込むかになるので、今回は1列・1行、つまりA1セルに書き込むよう設定しています。
これを実行すると、CSVファイルから読み込んだ内容をExcelに展開することが可能です。
ループ処理
読み込んだCSVファイルに対してループ処理を行う方法です。
「For-each」を追加します。「反復処理を行う値」には%CSVTable%を設定します。
すると、以下のような空のループが追加されます。
「CurrentItem」というのは、ループの一行分をさします。順番にループで一行ずつ処理されていきます。
CurrentItemは一行分のデータなので、一次元配列になっています。そのため、取り出す際には
CurrentItem[0]
のように記述します。例えば、以下のフローでは一行ずつ中身を見ていき、CurrentItem[0]に「みかん」が入っているときにメッセージボックスを表示するようなフローとなっています。
まとめ
Power Automate Desktop(PAD)でCSVファイルを読み込む方法について解説しました。
CSVファイルを読み込んだあとは、PAD内ではデータテーブルとして扱うことができ、Excelに展開したり、CSVに要素を追加することができることが分かりました。
PADでCSVファイルに書き込む方法については、以下記事をご参照ください。
当ブログでは、Power Automate、Power Automate Desktopに関する記事を他にも投稿しています。もし、「このようなことが知りたい」「こんなフローの作り方が知りたい」等ございましたら、問い合わせやコメントからお気軽にご連絡ください。
コメント