0
0

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: Custom Object(辞書型の変数)、「追加」のつもりが「上書き」になっていた話

0
Last updated at Posted at 2026-08-07

Power Automate DesktopのCustom Object(辞書型の変数)、「追加」のつもりが「上書き」になっていた話

TL;DR

Power Automate Desktop(PAD)のCustom Object(辞書型の変数)は、設定方法によって「キーの追加・更新」にも「辞書全体の置き換え」にもなる

設定方法 変数名欄 値欄 動作
空辞書の作成 MyObj %{{}}% 空の辞書を作る
キーの追加・更新 MyObj['キー名'] 任意の値 そのキーだけ追加/更新
辞書全体の代入 MyObj %{'キー':'値'}% 辞書全体を置き換え(既存キーは消える)

この3つ目、辞書へ値を追加しているつもりで実は辞書ごと入れ替えている、というのが今回のハマりポイント。実機で検証して確認した内容なので、同じ罠にハマる人がいれば参考にしてください。

動作環境

  • Power Automate Desktop

辞書型変数とは

「キー」と「値」の組み合わせでデータを保持できる変数。例えばこんな情報を1つの変数にまとめられます。

{
  "花の名前": "あじさい",
  "花の色": "あお",
  "本数": 3
}
  • JSONを組み立てたい
  • APIへデータを渡したい
  • 複数項目を1つの変数で管理したい

といった場面で使います。

1. 空の辞書を作る

「変数の設定」アクションで以下を指定します。

  • 変数名: MyObj
  • 値: %{{}}%

image.png

実行後:

{}

2. キーを追加する

作成した辞書へ項目を追加するには、変数名の欄にキーを指定します。

  • 変数名: MyObj['花の色']
  • 値: あお

image.png

実行後:

{
  "花の色": "あお"
}

さらに追加していけます。

  • 変数名: MyObj['花の名前']
  • 値: あじさい

実行後:

{
  "花の色": "あお",
  "花の名前": "あじさい"
}

3. 既存のキーを更新する

同じキーを指定すると上書き(更新)されます。

  • 変数名: MyObj['花の色']
  • 値: あか

更新前:

{ "花の色": "あお" }

更新後:

{ "花の色": "あか" }

ここまでは想像どおりの挙動。

4. 辞書を直接代入する方法もある

辞書そのものをまとめて代入することもできます。複数の値を設定するときなど改行したくなるのですが…なぜか改行すると失敗するのでご注意ください。(もうほんとなんなの)

  • 変数名: MyObj
  • 値: %{'花の色':'あか'}%

image.png

実行後:

{
  "花の色": "あか"
}

初期値をまとめて設定したいだけなら、これでも問題ありません。

ハマりポイント: これは「追加」ではなく「上書き」

問題はここから。すでに次のような辞書があるとします。

{
  "花の色": "あお",
  "花の名前": "あじさい"
}

この状態で MyObj に対して

  • 値: %{'花の色':'あか'}%

を設定すると、結果はこうなってしまいます。

{
  "花の色": "あか"
}

花の名前 が消えている。

これは「花の色というキーだけ更新した」のではなく、「MyObj という変数の中身そのものを、新しい辞書(花の色しか持たない辞書)で丸ごと置き換えた」ため。MyObj['花の色'] のようにキーを指定した代入と、MyObj そのものへの代入は、見た目が似ていても全くの別物ということになります。

自分は最初これを知らずに辞書を直接設定するやり方をしていて、「さっき追加したはずの値が消えている」という現象に遭遇しました。

追加と上書きの違いまとめ

設定方法 動作
%{{}}% 空辞書の作成
MyObj['キー'](新規キー) キーの追加
MyObj['キー'](既存キー) キーの更新
MyObj = %{'キー':'値'}% 辞書全体の置換

実務では後から値を追加していくケースが多いので、

  1. %{{}}% で空辞書を初期化
  2. MyObj['キー名'] で項目を追加していく

という進め方がおすすめ。

まとめ

  • PADの辞書型変数は、設定方法によって挙動が変わる
  • %{{}}% は空辞書の作成
  • MyObj['キー名'] はキーの追加・更新
  • MyObj への直接代入は辞書全体の置き換え(既存キーは消える)

「キーへ設定しているのか」「辞書全体へ設定しているのか」を意識しておくと、この罠にはハマりにくくなります。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?