1
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?

More than 1 year has passed since last update.

PowerAutomateでJSONによるワークフロー間データ連携を行う

Last updated at Posted at 2022-02-17

PowerAutomateを業務の効率化/自動化のために活用する中で、複数のワークフローの間にデータによる依存関係が発生することがあると思います。
フローAの処理で作成したデータを元にしてフローBで別の処理を行うとか、あるいは、フローAの前回処理で作成したデータを元にしてフローAの今回処理を行うとか、そういうケースです。

Problem

このような場合、こうしたフローを結びつける役割をするデータをどのように管理するかで、複数の選択肢があります。

簡単に思いつくのは(私が最初に思いついたのは)ExcelファイルやSharePointリストによるデータ管理です。
元々手作業で行われていた業務を効率化/自動化するという場合、従来手作業で参照更新されていたファイルやリストを元に考えるのは自然なことでしょう。

しかし、ExcelファイルやSharePointリストにデータの読み書きを行う場合、いくつかの課題が発生します:

  • 読み書きが遅い。とくに書き込み(項目追加)がものすごく遅い。
  • 書き込み中の「中途半端な状態」で参照されるリスクがある。
  • 読み取ることのできる 行数に上限 がある。
  • 日時データの表現(シリアル vs. ISO8601)の 相互運用に関する難しさ がある。
  • マップ(辞書)構造のデータを管理できない。
  • レコードを構成するデータをカラム(列)毎にアクションの入力欄に設定するのが手間。

Solution

これらの課題を解決する方法の1つは、Excelファイルやリストが存在するのと同じSharePoint上で、ドキュメントライブラリ内にJSONファイルを配置して、ここにデータを入れるというものです。

ExcelファイルやSharePointリストでデータを管理する方式と比べた時のメリット/デメリットは以下の通り:

項目 Excel/SPリスト JSON
読み書きの速度 X O
「中途半端な状態」で参照されない X O
読み取り行数に制限がない X O
日時データ相互運用の考慮が不要 X O
マップ構造の管理 X O
アクションの設定が簡素 X O
ファイルの可読性が高い O X
Excelアプリで参照更新 O X

フロー実装方法

フローの実装は次のようになります:
image.png

①パスに取るファイルメタデータの取得

後続アクションで利用するIDを取得します。
image.png

②ファイルのチェックアウト

これから更新するファイルをチェックアウトします。
image.png

③ファイルの更新

保存したいデータを「ファイルコンテンツ」欄にJSON形式で記述します。
この時点ではファイルはチェックアウトされた状態のため、ユーザーや他のワークフローがファイル内容を参照すると、変更前の状態のデータが得られます。
image.png

④ファイルのチェックイン

更新したファイルをチェックインします。
チェックインの種類には「Major version (publish)」を選びます。
image.png

JSONファイルコンテンツの取得と利用

ちなみにこうして更新したJSONファイルの内容は「ファイルコンテンツの取得」を使って読み取ることができます。
別の記事 でお話した通り、「コンテンツタイプの推測」は「いいえ」にしておくのがオススメです。
取得結果はJSON形式の文字列になるので、 json(...) 関数でデシリアライズして利用します。
image.png

1
3
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
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?