Power Automateで在庫管理!「変数の値を減らす」アクションを使ったフローの作り方

この記事はPower Automateの学習を進める中で、Copilotにサポートしてもらいながら、自分のつまずきポイントを整理してまとめた記事です。

 

日々疑問に思ったことをCopilotにサポートしてもらいながらPowerPlatformを勉強中です。学んだことをこのブログで記録・共有していきます。

 

今回は「変数の値を減らす」アクションの使い方について、実業務で役に立ちそうな事例をサンプルにして解説してます。

では今回のフローで何をやりたいのか?
その目的からスタートします。

フローの目的

目的:注文リストに新しい注文が登録されたときに、対応する商品在庫を取得し、注文数だけ在庫数を減らして更新する。

在庫管理する手間が省けます

 

今回用意しておくSPOリストは以下の2つ

注文リスト

今回はこの注文リストに手動で注文内容を追記していきます。

まずは”注文リスト”を作成します。
ここに注文内容を追加していくたびに、”在庫リスト”の在庫数を減らしていきます。

 

 

次に商品在庫リストです。
注文数に応じて在庫数を減らしていきます。

 

 

ステップ①:フローの作成

  • Power Automateにアクセス
  • 「作成」→「自動化されたクラウド フロー」を選択
  • フロー名を入力(例:「注文による在庫減算」)
  • トリガーに「SharePoint – 項目が作成されたとき」を選択
  • 対象の注文リストを指定

注文リストに追記されたことをトリガーにしてフローが動き出します

 

 

ステップ②:商品IDのフィルタークエリ作成(作成アクション)

@concat('field_1 eq ''', triggerBody()?['field_1'], '''')

目的: 注文データの中から商品IDを取り出し、在庫リストを検索するためのフィルター式を作成。

補足: field_1 は「商品ID」列の内部名。表示名ではなく内部名を使う必要があります。

フィルタークエリを「Compose(作成)」アクションなどで事前に作っておくことで、後続の「Get items(複数の項目の取得)」アクションがすっきりします!

 

 

 

ステップ③:商品在庫リストから該当商品を取得(Get items)

  • アクション:「SharePoint – 複数の項目を取得
  • サイトアドレス:商品在庫リストのあるサイト
  • リスト名:商品在庫リスト
  • フィルタークエリ:前のComposeの出力

目的: 注文された商品に対応する在庫情報を取得。

この”フィルタークエリ”にステップ②で事前に作成しておいた式を動的コンテンツとして挿入します

※直接式を記述してもOKですが、可読性が悪いので事前に作成しておきました。

 

 

ステップ④:変数の初期化(在庫数)

@int(coalesce(first(outputs('複数の項目の取得:商品在庫リストから注文された商品IDでフィルタ')?['body/value'])?['field_2'], 0))

目的: 取得した在庫情報から「在庫数」を整数型の変数に格納。

補足: field_2 は在庫数の列の内部名。取得結果が空でもエラーにならないように coalesce() を使用。

 

 

この部分について、もう少し突っ込んでcopilotに解説してもらいます!

 

 

コパイルカ
コパイルカ

coalesce関数を使うとなぜエラーにならないのか解説していきます

※以下Copilot生成内容

なぜ coalesce() を使うとエラーにならないのか?

Power Automateで SharePoint の「Get items」アクションを使ってデータを取得する際、該当する項目が存在しないと body/value が空になります。そんなとき、通常の参照方法では null参照エラーが発生する可能性があります。

❌ 通常の参照方法(エラーになる可能性あり)

@int(first(outputs('Get_items')?['body/value'])?['field_2'])

→ 該当データがないと null を参照してしまい、エラーになります。

✅ coalesce() を使った安全な方法

@int(coalesce(first(outputs('Get_items')?['body/value'])?['field_2'], 0))

→ データがなければ「0」を返すので、エラーにならずに処理が続行できます。

coalesce() の基本動作

coalesce() は、複数の値の中から「最初に null でない値」を返す関数です。

@coalesce(null, null, 5, 10)

→ 結果は 5

💡 実務でのメリット

  • エラー回避: SharePointの取得結果が空でも安全に処理できる
  • 初期値設定: 空欄や未入力時に代替値を設定できる
  • 型変換がスムーズ: 数値・文字列・日付など、型を問わず使える

📌 他の関数との違い

if()empty() でも条件分岐は可能ですが、coalesce() は「値が null かどうかを意識せずに、代替値を返す」点でシンプルかつ便利です。

まとめ

coalesce() を使うことで、Power Automateのフローがより安定し、エラーを防ぎながら柔軟な処理が可能になります。特に SharePoint 連携時には、取得結果が空になる可能性を考慮して、積極的に活用するのがおすすめです。

 

coalesce()関数を使えば、データがない場合は null ではなく 0を返してくれるので、エラーを防ぐことができるという訳ですね。

 

 

 

ステップ⑤:変数の初期化(注文数)

@int(float(triggerBody()?['field_2']))

目的: 注文データから「注文数」を整数型の変数に格納。

補足: SharePointの列が「数値」形式であることを確認しておくと安心。

 

SharePointで指定している変数の型と、PowerAutomateで指定している変数の型は一致させておく必要があります。

 

ステップ⑥:条件分岐(在庫が足りているか)

@greaterOrEquals(variables('在庫数'), variables('注文数'))

目的: 在庫数が注文数以上であれば処理を続行。

補足: 在庫不足時にメール通知などを追加することも可能。

 

 

ステップ⑦:在庫数を減らす(変数の値を減らす)

  • 変数名:在庫数
  • 値:@variables(‘注文数’)

目的: 在庫数から注文数を引く。

補足: 対象変数が文字列型だとエラーになるので、必ず「整数型」で初期化。

 

 

ステップ⑧:在庫数をSharePointに反映(項目の更新)

  • 対象リスト:商品在庫リスト
  • ID:取得した商品のID
  • 更新内容:field_2(在庫数)に @variables(‘在庫数’)

目的: 減算後の在庫数をSharePointに反映。

補足: IDの取得に失敗すると更新できないので、構造が変わった場合は注意。

 

 

 

ステップ⑨:保存とテスト

  • フローを保存
  • 「テスト」ボタンで動作確認
  • 注文を登録して、在庫数が正しく減るか確認

補足: 実行履歴で各ステップが「成功」になっているかチェック。

 

まとめ

Power Automateの基本アクション(トリガー、変数、条件分岐、SharePoint連携)を組み合わせた、実務に役立ちそうなフローを作成してみました。

私も勉強しながらということもあり、結構時間がかかってしまいました。。

いろんなフローを作って、アクションの使い方を身に着けていくしかないですね。

コメント

タイトルとURLをコピーしました