10
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

#PowerAutomate で配列に連番を付与する

Last updated at Posted at 2020-02-14

今回も文字列の半角⇔全角カナ変換を実現するためのテクニックの紹介です。
Power Automate上で配列に連番 (0,1,2...とかID1,ID2,ID3とか)を付与する方法を紹介します。

2022/01/07:式の一部でカッコが足りなかったので修正しました

前回:Power Automateで文字列を1文字ずつに分割する方法

準備:配列を用意

まずは変数の初期化アクションで配列を準備します。

input.json
[
    {
        "Name": "Yamada",
        "Age": 18
    },
    {
        "Name": "Sato",
        "Age": 21
    },
    {
        "Name": "Tanaka",
        "Age": 32
    }
]

このような簡単な配列です。これに連番を付与することで、

out.json
[
    {
        "rowNum": 1,
        "Name": "Yamada",
        "Age": 18
    },
    {
        "rowNum": 2,
        "Name": "Sato",
        "Age": 21
    },
    {
        "rowNum": 3,
        "Name": "Tanaka",
        "Age": 32
    }
]

こんな風に番号を振っていきます。 Flowのアクションには上のinput.jsonをコピペすればOKです。

image.png

連番付与

今回も選択(Select)のアクションを利用します。
入力になる配列は、
range(0,length(variables('Arr')))
で指定しています。これは前回も紹介しましたが、0から始まって、Arrという配列の長さ(行数)だけ整数列を作ります。
image.png

あとはMapのところに、rowNumとして add(item(),1) を追加、その他の変更しない列については、Nameなら
variables('Arr')?[item()]?['Name'] のように指定しています。

数式の解説

ここで使った variables('Arr')?[item()]?['Name'] ですが、以下のような意味合いです。
image.png

これをMapに書くことで、元の配列の要素・値を出力される配列に加えることができます。

実行結果

Flowを実行すると以下のように目的の連番付きの配列が生成されます。
ここでは連番を簡単に1,2,3...としましたが、接頭語などを付けたい場合には

1,2,3.. ->  add(item(),1)
ID1,ID2,ID3 --> concat('ID',add(item(),1))

こんな風に、concatを使うと実現できます。
image.png

#まとめ

連番の付与にも選択(Select)のアクションが有効です。
ポイントは、

  • 選択アクションの入力配列として、[0,1,2,..,配列の長さ]を設定すること
  • 連番にはitem()を利用する
  • 配列のitem()番目を取得すると元の配列の順序を崩さずに新配列を定義できる

次回はいよいよカタカナの全角半角変換にトライします。

10
10
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
10
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?