LoginSignup
1
0

More than 1 year has passed since last update.

Power Automate for desktop「PowerShellスクリプトの実行アクションからCSVデータテーブルを操作する」

Posted at

Introduction

Power Automate for desktopでCSVデータテーブルを操作する場合、EXCELファイルに変換し「SQL ステートメントを実行する」アクションで操作することができます。しかしデータテーブルに「007」「008」のような数値をテキストとして扱いたい列を含むときはEXCEL変換時、数値に変更されてしまうため困ることがあるかもしれません。

そこで「PowerShellスクリプトの実行」アクションを使ってCSVデータテーブルを操作するフローを紹介します。PowerShellは直接CSVファイルを読み込むことができ、SQLのようにデータテーブルの操作が可能です。今回は「007」「008」のようなテキストとして扱いたい列を維持しながら日付列を操作します。

CleanShot 2022-08-27 at 16.06.30@2x.png

sample.csv

RowID,Name,TextValue,Created,Modify
dd3341fb-bb89-ec11-93b0-000d3a40692d,AZX,00765,2022/02/09 15:21,2022/02/09 15:21
1cdf548a-8468-ec11-8943-000d3a40fca2,XZZ,0345,2021/12/29 8:51,2021/12/29 8:51
ef162ef4-8468-ec11-8943-000d3a40fca2,XZy,0385,2021/12/29 8:54,2021/12/29 8:54
d007bc9b-0967-ec11-8f8f-002248622feb,MVS,0787,2021/12/27 11:39,2021/12/27 11:39
236685ce-0967-ec11-8f8f-002248622feb,PAD,00888,2021/12/27 11:40,2021/12/27 11:40

Modify列の日付を操作します。

CleanShot 2022-08-27 at 16.09.08@2x.png

Note

  • 自己責任でお願いします。
  • Windows 10 Pro 21H2
  • Power Automate for desktop 2.23.114.22217
  • 2022年8月の情報です。

Flow Description

デスクトップにsample.csvを作っておきます。このフローでは一時ファイルを作成し、PowerShellスクリプトの実行アクションでデータテーブルを操作、一時ファイルに書き出すところがポイントです。

CleanShot 2022-08-27 at 17.55.26@2x.png

  1. Get special folder
    デスクトップフォルダーを取得します。

  2. Get temporary file
    一時ファイルを生成します。

    CleanShot 2022-08-27 at 17.57.20@2x.png

  3. Run PowerShell script
    PowerShell scriptを実行します。一時ファイルに書出時 -NoTypeInformationを忘れないようにします。

    CleanShot 2022-08-27 at 17.59.02@2x.png

PowerShell
# CSVを読み込み
$datatable = Import-Csv "%SpecialFolderPath%\sample.csv" -Encoding utf8
# Modify列をdatetimeオブジェクトに変更
$datatable | ForEach-Object{$_.Modify = [datetime]($_.Modify)}
# Modify列の値に+7日
$datatable | ForEach-Object{$_.Modify = ($_.Modify).AddDays(+7)}
# 一時ファイルにデータを書き込み
$datatable | Export-Csv -Path "%TempFile%" -NoTypeInformation -Encoding utf8

⒋ Read from CSV file
Tempファイルからデータを読み込みます。
CleanShot 2022-08-27 at 18.02.47@2x.png

DateTime Manipulation Options

参考 DateTime Struct
今回使用したDateTime.AddDays(Double) Methodの他にも日時操作に関するメソッドが多数用意されています。

2022-08-26-01-32-29.png

たとえばToStringメソッドを利用することで書式を変更できます。

CleanShot 2022-08-27 at 18.11.30@2x.png

CleanShot 2022-08-27 at 18.10.14@2x.png

Data Table Operations

Select-Objectで列を選択したりWhere-Objectを利用することで値をフィルターできます。

2022-08-27-18-16-11.png

CleanShot 2022-08-27 at 18.17.25@2x.png

参考

Conclusion

「PowerShellスクリプトの実行」アクションを使用することで、テキストとして扱いたい列を維持しながらCSVデータテーブルを操作しました。今回は一時ファイルを利用しましたが、データによってはJSONで出力した方が便利な時もあります。
Power Automate for desktop「最初に知りたかったデータテーブルの扱い方」

今回の記事はMicrosoft Power Automate Community Forumの質問をネタに書きました。
細かな使い方ですが便利だと思います!

CSV to PAD Table - How to query table using sql? Loops to change column data takes way to long.

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0