0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Power Automate Desktop で CSV を1行ずつ更新したかったが for 文がなくて困った話(初心者向け)

0
Posted at

はじめに

Power Automate Desktop(以下 PAD)をはじめて触ったとき、
CSV ファイルのレコードを1行ずつ更新する処理を作ろうとしました。

少しでもプログラミング経験があると、

CSV を配列(テーブル)として読み込んで、for 文で index 指定すればいいのでは?
と考えると思います。

ところが PAD を使ってみると、
for 文が見当たらない……。

この記事では、PAD 初心者の自分がCSVを1行ずつ更新する際に
For each と インデックス変数 を使って for 文っぽく処理した体験を共有します。

これから PAD を触る方々の参考になれば幸いです。

やりたかったこと

今回やりたかった処理は以下です。

  • CSV ファイルを読み込む
  • 1行ずつデータを処理する
  • 特定の列の値を更新する
  • 更新後の CSV を保存する

いわゆる CSV の全レコードを1行ずつ更新する処理 です。

困ったポイント:for 文がない

PAD で繰り返し処理を探すと、見つかるのは For each のみでした。
For each は、テーブルやリストの 要素そのもの を1件ずつ処理するという動きです。

しかし今回やりたかったのは、

  • 「今、何行目を処理しているか」
  • CSVTable[0], CSVTable[1] のように 行番号(index)で指定して更新
    という処理でした。

そのまま For each を使うと、
行番号を使った更新がしづらいと感じました。

解決策:インデックス変数を用意して for 文っぽくする

最終的に行き着いた結論はこれです。

インデックス用の変数を自分で用意して、For each の中で増やす
これで「for 文っぽい処理」ができました。

実際の処理の流れ

image.png

① CSV ファイルを読み込む

  • 「CSV ファイルから読み取る」
  • 出力先:CSVTable
    PAD では CSV は データテーブル として扱われます。

② インデックス用の変数を初期化

Index = 0
  • 数値型の変数を作成
  • 先頭行を指すため 0 から開始します

③ For each で CSV を回す

For each CurrentItem in CSVTable

ここでは CurrentItem 自体はほとんど使わず、
「いまは Index 行目を処理している」という考え方で進めます。

④ Index を使って CSV の行を更新する

  • CSVTable[Index] で行番号を指定
  • 列名(または列番号)を指定して値を更新

For each の中なのに、
やっていることは for (i = 0; i < n; i++) に近い処理です。

⑤ Index を 1 増やす

ループの最後でインデックスを進めます。

Index = Index + 1

⑥ CSV ファイルに書き戻す

最後に、

  • 「CSV ファイルに書き込む」
  • 更新後の CSVTable を保存
    これで CSV を1行ずつ更新できます。

さいごに(感想)

内容としてはとても簡単なものですが、はじめて使うサービスで
「自分がよく使う機能が見当たらない」と、少しビビりますよね~。

0
3
2

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
0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?