Submit Search
Upload
JSON Value into Power Automate
•
Download as PPTX, PDF
•
6 likes
•
5,819 views
Tomoyuki Obi
Follow
2019/12/07 に実施した Power Platform Winter'19 にて利用したスライド。Power Automate 上での JSON 値の扱い方あれこれ
Read less
Read more
Technology
Report
Share
Report
Share
1 of 39
Download now
Recommended
Rest ful api設計入門
Rest ful api設計入門
Monstar Lab Inc.
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
Yoshinori Matsunobu
自社で実運用中!Power Apps・Power Automate 活用事例
自社で実運用中!Power Apps・Power Automate 活用事例
Teruchika Yamada
OPC UAをオープンソースやフリーのソフトで遊んでみた
OPC UAをオープンソースやフリーのソフトで遊んでみた
ミソジ
イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)
Yoshitaka Kawashima
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru
Swaggerでのapi開発よもやま話
Swaggerでのapi開発よもやま話
KEISUKE KONISHI
3分でわかるAzureでのService Principal
3分でわかるAzureでのService Principal
Toru Makabe
Recommended
Rest ful api設計入門
Rest ful api設計入門
Monstar Lab Inc.
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
Yoshinori Matsunobu
自社で実運用中!Power Apps・Power Automate 活用事例
自社で実運用中!Power Apps・Power Automate 活用事例
Teruchika Yamada
OPC UAをオープンソースやフリーのソフトで遊んでみた
OPC UAをオープンソースやフリーのソフトで遊んでみた
ミソジ
イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)
Yoshitaka Kawashima
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru
Swaggerでのapi開発よもやま話
Swaggerでのapi開発よもやま話
KEISUKE KONISHI
3分でわかるAzureでのService Principal
3分でわかるAzureでのService Principal
Toru Makabe
SQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するか
Shogo Wakayama
よく聞くけど、「SharePoint リストの 5,000 件問題」ってなんなの?
よく聞くけど、「SharePoint リストの 5,000 件問題」ってなんなの?
Hirofumi Ota
ソーシャルゲームにおけるMongoDB適用事例 - Animal Land
ソーシャルゲームにおけるMongoDB適用事例 - Animal Land
Masakazu Matsushita
認証の課題とID連携の実装 〜ハンズオン〜
認証の課題とID連携の実装 〜ハンズオン〜
Masaru Kurahayashi
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!
Tetsutaro Watanabe
こんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツール
dcubeio
ソフトウェア開発における『知の高速道路』
ソフトウェア開発における『知の高速道路』
Yoshitaka Kawashima
Data platformdesign
Data platformdesign
Ryoma Nagata
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
S03_まずはここから!Microsoft 365 E3 でセキュリティの第一歩を踏み出す [Microsoft Japan Digital Days]
S03_まずはここから!Microsoft 365 E3 でセキュリティの第一歩を踏み出す [Microsoft Japan Digital Days]
日本マイクロソフト株式会社
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
Jun-ichi Sakamoto
インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方
Shohei Koyama
xrmtg20210317
xrmtg20210317
takehitoyoshiki
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法
Tetsutaro Watanabe
WkWebViewのキャッシュについて調べた
WkWebViewのキャッシュについて調べた
firewood
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
Amazon Web Services Japan
REST API のコツ
REST API のコツ
pospome
Windows 11 がやってくる - IT管理者の準備と対策
Windows 11 がやってくる - IT管理者の準備と対策
彰 村地
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
infinite_loop
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
Yoshitaka Kawashima
Ember.js Tokyo event 2014/09/22 (Japanese)
Ember.js Tokyo event 2014/09/22 (Japanese)
Yuki Shimada
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~
Akira Inoue
More Related Content
What's hot
SQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するか
Shogo Wakayama
よく聞くけど、「SharePoint リストの 5,000 件問題」ってなんなの?
よく聞くけど、「SharePoint リストの 5,000 件問題」ってなんなの?
Hirofumi Ota
ソーシャルゲームにおけるMongoDB適用事例 - Animal Land
ソーシャルゲームにおけるMongoDB適用事例 - Animal Land
Masakazu Matsushita
認証の課題とID連携の実装 〜ハンズオン〜
認証の課題とID連携の実装 〜ハンズオン〜
Masaru Kurahayashi
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!
Tetsutaro Watanabe
こんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツール
dcubeio
ソフトウェア開発における『知の高速道路』
ソフトウェア開発における『知の高速道路』
Yoshitaka Kawashima
Data platformdesign
Data platformdesign
Ryoma Nagata
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
S03_まずはここから!Microsoft 365 E3 でセキュリティの第一歩を踏み出す [Microsoft Japan Digital Days]
S03_まずはここから!Microsoft 365 E3 でセキュリティの第一歩を踏み出す [Microsoft Japan Digital Days]
日本マイクロソフト株式会社
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
Jun-ichi Sakamoto
インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方
Shohei Koyama
xrmtg20210317
xrmtg20210317
takehitoyoshiki
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法
Tetsutaro Watanabe
WkWebViewのキャッシュについて調べた
WkWebViewのキャッシュについて調べた
firewood
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
Amazon Web Services Japan
REST API のコツ
REST API のコツ
pospome
Windows 11 がやってくる - IT管理者の準備と対策
Windows 11 がやってくる - IT管理者の準備と対策
彰 村地
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
infinite_loop
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
Yoshitaka Kawashima
What's hot
(20)
SQL大量発行処理をいかにして高速化するか
SQL大量発行処理をいかにして高速化するか
よく聞くけど、「SharePoint リストの 5,000 件問題」ってなんなの?
よく聞くけど、「SharePoint リストの 5,000 件問題」ってなんなの?
ソーシャルゲームにおけるMongoDB適用事例 - Animal Land
ソーシャルゲームにおけるMongoDB適用事例 - Animal Land
認証の課題とID連携の実装 〜ハンズオン〜
認証の課題とID連携の実装 〜ハンズオン〜
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!
こんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツール
ソフトウェア開発における『知の高速道路』
ソフトウェア開発における『知の高速道路』
Data platformdesign
Data platformdesign
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
S03_まずはここから!Microsoft 365 E3 でセキュリティの第一歩を踏み出す [Microsoft Japan Digital Days]
S03_まずはここから!Microsoft 365 E3 でセキュリティの第一歩を踏み出す [Microsoft Japan Digital Days]
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方
xrmtg20210317
xrmtg20210317
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法
WkWebViewのキャッシュについて調べた
WkWebViewのキャッシュについて調べた
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
REST API のコツ
REST API のコツ
Windows 11 がやってくる - IT管理者の準備と対策
Windows 11 がやってくる - IT管理者の準備と対策
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
Similar to JSON Value into Power Automate
Ember.js Tokyo event 2014/09/22 (Japanese)
Ember.js Tokyo event 2014/09/22 (Japanese)
Yuki Shimada
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~
Akira Inoue
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
Naoya Ito
Node.jsでブラウザメッセンジャー
Node.jsでブラウザメッセンジャー
Yahoo!デベロッパーネットワーク
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
Akira Inoue
IoT Edge and Serverless playground with Node.js ~ IoT EdgeとサーバレスをNode.jsで遊ぶ実験ノート
IoT Edge and Serverless playground with Node.js ~ IoT EdgeとサーバレスをNode.jsで遊ぶ実験ノート
Kazumi IWANAGA
HTML5&API総まくり
HTML5&API総まくり
Shumpei Shiraishi
Building React, Flutter and Blazor development and debugging environment with...
Building React, Flutter and Blazor development and debugging environment with...
Shotaro Suzuki
Parse触ってみた
Parse触ってみた
Naoya Harasawa
.NET の過去、現在、そして未来
.NET の過去、現在、そして未来
Akira Inoue
クラウドの破壊力
クラウドの破壊力
Osaka University
node+socket.io+enchant.jsでチャットゲーを作る
node+socket.io+enchant.jsでチャットゲーを作る
Kiyoshi SATOH
Azure IoT Edge で Custom Vision
Azure IoT Edge で Custom Vision
Yoshitaka Seo
後悔しないもんごもんごの使い方 〜アプリ編〜
後悔しないもんごもんごの使い方 〜アプリ編〜
Masakazu Matsushita
Data apiで実現 進化するwebの世界
Data apiで実現 進化するwebの世界
Yuji Takayama
Java EE8 Report
Java EE8 Report
Norito Agetsuma
レスポンシブWebデザイン【発展編】
レスポンシブWebデザイン【発展編】
Yasuhito Yabe
【de:code 2020】 Azure Synapse Analytics 技術編 ~ 最新の統合分析プラットフォームによる新しい価値の創出(後編)
【de:code 2020】 Azure Synapse Analytics 技術編 ~ 最新の統合分析プラットフォームによる新しい価値の創出(後編)
日本マイクロソフト株式会社
Tokyo r 25_lt_isobe
Tokyo r 25_lt_isobe
Masayuki Isobe
LINE LIFF with Azure ハンズオン資料 - Azure サービス解説
LINE LIFF with Azure ハンズオン資料 - Azure サービス解説
Kazumi IWANAGA
Similar to JSON Value into Power Automate
(20)
Ember.js Tokyo event 2014/09/22 (Japanese)
Ember.js Tokyo event 2014/09/22 (Japanese)
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
Node.jsでブラウザメッセンジャー
Node.jsでブラウザメッセンジャー
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
IoT Edge and Serverless playground with Node.js ~ IoT EdgeとサーバレスをNode.jsで遊ぶ実験ノート
IoT Edge and Serverless playground with Node.js ~ IoT EdgeとサーバレスをNode.jsで遊ぶ実験ノート
HTML5&API総まくり
HTML5&API総まくり
Building React, Flutter and Blazor development and debugging environment with...
Building React, Flutter and Blazor development and debugging environment with...
Parse触ってみた
Parse触ってみた
.NET の過去、現在、そして未来
.NET の過去、現在、そして未来
クラウドの破壊力
クラウドの破壊力
node+socket.io+enchant.jsでチャットゲーを作る
node+socket.io+enchant.jsでチャットゲーを作る
Azure IoT Edge で Custom Vision
Azure IoT Edge で Custom Vision
後悔しないもんごもんごの使い方 〜アプリ編〜
後悔しないもんごもんごの使い方 〜アプリ編〜
Data apiで実現 進化するwebの世界
Data apiで実現 進化するwebの世界
Java EE8 Report
Java EE8 Report
レスポンシブWebデザイン【発展編】
レスポンシブWebデザイン【発展編】
【de:code 2020】 Azure Synapse Analytics 技術編 ~ 最新の統合分析プラットフォームによる新しい価値の創出(後編)
【de:code 2020】 Azure Synapse Analytics 技術編 ~ 最新の統合分析プラットフォームによる新しい価値の創出(後編)
Tokyo r 25_lt_isobe
Tokyo r 25_lt_isobe
LINE LIFF with Azure ハンズオン資料 - Azure サービス解説
LINE LIFF with Azure ハンズオン資料 - Azure サービス解説
More from Tomoyuki Obi
それは本当にAutomate? 改めて考えるPower Automate
それは本当にAutomate? 改めて考えるPower Automate
Tomoyuki Obi
Only Logic Apps
Only Logic Apps
Tomoyuki Obi
This is iPaas
This is iPaas
Tomoyuki Obi
Miniacs Power Automate
Miniacs Power Automate
Tomoyuki Obi
Work Automate with Power Automate
Work Automate with Power Automate
Tomoyuki Obi
CodelessDevelop using iPaas
CodelessDevelop using iPaas
Tomoyuki Obi
20190727_DevelopUseiPaas
20190727_DevelopUseiPaas
Tomoyuki Obi
Logic Apps/Flow Update Summary
Logic Apps/Flow Update Summary
Tomoyuki Obi
decode2019_HandsOn_Flow_04
decode2019_HandsOn_Flow_04
Tomoyuki Obi
decode2019_HandsOn_Flow_03
decode2019_HandsOn_Flow_03
Tomoyuki Obi
decode2019_HandsOn_Flow_02
decode2019_HandsOn_Flow_02
Tomoyuki Obi
decode2019_HandsOn_Flow_01
decode2019_HandsOn_Flow_01
Tomoyuki Obi
20190427 global azurebootcamp
20190427 global azurebootcamp
Tomoyuki Obi
20181215 PowerApps + Flow Handson
20181215 PowerApps + Flow Handson
Tomoyuki Obi
20181120 HowtoFlow
20181120 HowtoFlow
Tomoyuki Obi
20180929 lowcode developlogicflow
20180929 lowcode developlogicflow
Tomoyuki Obi
20180721 First Challenge Logicflow
20180721 First Challenge Logicflow
Tomoyuki Obi
20180630 data transformationusinglogicflow
20180630 data transformationusinglogicflow
Tomoyuki Obi
Create Bot using LogicApps
Create Bot using LogicApps
Tomoyuki Obi
20180616 to takepartflow
20180616 to takepartflow
Tomoyuki Obi
More from Tomoyuki Obi
(20)
それは本当にAutomate? 改めて考えるPower Automate
それは本当にAutomate? 改めて考えるPower Automate
Only Logic Apps
Only Logic Apps
This is iPaas
This is iPaas
Miniacs Power Automate
Miniacs Power Automate
Work Automate with Power Automate
Work Automate with Power Automate
CodelessDevelop using iPaas
CodelessDevelop using iPaas
20190727_DevelopUseiPaas
20190727_DevelopUseiPaas
Logic Apps/Flow Update Summary
Logic Apps/Flow Update Summary
decode2019_HandsOn_Flow_04
decode2019_HandsOn_Flow_04
decode2019_HandsOn_Flow_03
decode2019_HandsOn_Flow_03
decode2019_HandsOn_Flow_02
decode2019_HandsOn_Flow_02
decode2019_HandsOn_Flow_01
decode2019_HandsOn_Flow_01
20190427 global azurebootcamp
20190427 global azurebootcamp
20181215 PowerApps + Flow Handson
20181215 PowerApps + Flow Handson
20181120 HowtoFlow
20181120 HowtoFlow
20180929 lowcode developlogicflow
20180929 lowcode developlogicflow
20180721 First Challenge Logicflow
20180721 First Challenge Logicflow
20180630 data transformationusinglogicflow
20180630 data transformationusinglogicflow
Create Bot using LogicApps
Create Bot using LogicApps
20180616 to takepartflow
20180616 to takepartflow
JSON Value into Power Automate
1.
JSON Values into
Power Automate 2019/12/07 Logicflow-ja 小尾 智之
2.
関心分野: NoCode/LowCode開発 コミュニティ: LogicFlow-ja
/ CLR/H Microsoft MVP for Microsoft Azure(2017.03 ~) @twit_ahf tomoyuki.obi VB / PowerPlatform https://blog.kuma.icu Enterprise Integration 小尾 智之(Tomoyuki Obi) https://el.jibun.atmarkit.co.jp/ahf/ 自己紹介
3.
風物詩
4.
今回のお題目 •JSON しか喋らないぞ、覚悟しろ
5.
What is “JSON”
?
6.
JSON とは • JavaScript
Object Notation の略 • 気が付いたら広く存在していたもの (1996年 Netscape Navigator で利用された形跡あり) • JavaScriptにおけるオブジェクト表記法のサブセット • 各種団体で標準として定義 RFC 8259 / IETF STD 90 / ECMA-404 2nd edition
7.
JSON での記述 • 数値 •
文字列 • 真偽値(true / false) • 配列 • オブジェクト • null 利用できる値の種類 [ “Power Automate”, “Power Apps”, ”Power BI”,”Power Virtual Agents” ] 配列の記述 [ ] でくくると配列となる オブジェクトの記述 { “servicename”: “Power Automate”, “expriredate”: null }, { “servicename”: “Microsoft Flow”, “expriredate”: “2019-11-01T00:00:00Z” } 文字列でキー名 : の後に値を記述 UTF-8 であることが必須 インデントは問わない
8.
Power Automate での
JSON HTTP Request トリガや 何かしらの HTTP アクセスで得た結果を扱う際にJSONに触れることが多い
9.
How to befriend
“JSON”
10.
JSON データに対してできること JSON データの入出力時に行える対応 •
スキーマによるデータ検証 • 値の取得 • 値のコピー 値の変更はできない
11.
JSON スキーマの作成 「要求:HTTP Request」トリガ 「応答:HTTP
Response」アクション または 「JSONの解析」アクション 元とするデータがある場合は そのデータからスキーマを生成できる 以前と異なり Required 指定がつくことは減った
12.
応答:HTTP Response アクションで設定したスキーマ情報は 「子フローの実行」アクション利用時に 呼び出し元のワークフローから自動で参照される
13.
{ “description”: “JSONスキーマを検証するサンプル2”, “type”: “object”, “properties”:
{ “other1”: { “type”: “string”, “enum”: [ “value1”, “value2”, “value3” ] }, “other2”: { “type”: “string” }, "other3": { "type": "string" } }, "required": [ "other1" ] } 「要求:HTTP Request」トリガでの スキーマ設定は呼び出し側の入力項目を ある程度制御できる
14.
「要求:HTTP Request」トリガ でのスキーマ検証オプションをオンにすると 設定したスキーマに一致しないデータを伴った 呼び出しをエラーとしてはじくことが可能
15.
JSON データの参照 { "eventDataSchemaVersion": "1.0", "schemaVersion":
"1.0", "correlationId": "bddc4200-ebef-4c70-8430-a4a55bf22f8c", "clientSessionId": "", "clientRequestId": "", "component": "ServerHost", "eventType": "NotSpecified", "traceLevel": "Info", "operationName": "RpaWebServer.Start", "eventTimestamp": "2019-11-25T01:27:39.3100838Z", "message": "Listening on 'http://localhost:4723/'", "eventData": { "osInfo": { "name": "Microsoft Windows NT 6.2.9200.0", "version": "6.2.9200.0", "arch": "Win32NT" }, "machineInfo": { "screenResolution": "1920x1200", "nbCores": "8", "netversion": "4.0.30319.42000" } } } トリガで左のような JSON を受信 その後のアクションで値を参照したい場合
16.
{ "eventDataSchemaVersion": "1.0", "message": "Listening
on 'http://localhost:4723/'", "eventData": { "osInfo": { "name": "Microsoft Windows NT 6.2.9200.0", "version": "6.2.9200.0", "arch": "Win32NT" }, "machineInfo": { "screenResolution": "1920x1200", "nbCores": "8", "netversion": "4.0.30319.42000" } } } JSON データの階層 triggerBody() triggerBody().eventDataSchemaVersion triggerBody().eventData.osInfo triggerBody().eventData.osInfo.version
17.
{ "eventDataSchemaVersion": "1.0", "message": "Listening
on 'http://localhost:4723/'", "eventData": { "osInfo": { "name": "Microsoft Windows NT 6.2.9200.0", "version": "6.2.9200.0", "arch": "Win32NT" }, "machineInfo": { "screenResolution": "1920x1200", "nbCores": "8", "netversion": "4.0.30319.42000" } } } JSON データの階層 triggerBody() triggerBody().eventDataSchemaVersion triggerBody().eventData.osInfo triggerBody().eventData.osInfo.version
18.
{ "eventDataSchemaVersion": "1.0", "message": "Listening
on 'http://localhost:4723/'", "eventData": { "osInfo": { "name": "Microsoft Windows NT 6.2.9200.0", "version": "6.2.9200.0", "arch": "Win32NT" }, "machineInfo": { "screenResolution": "1920x1200", "nbCores": "8", "netversion": "4.0.30319.42000" } } } JSON データの階層 triggerBody() triggerBody().eventDataSchemaVersion triggerBody().eventData.osInfo triggerBody().eventData.osInfo.version
19.
{ "eventDataSchemaVersion": "1.0", "message": "Listening
on 'http://localhost:4723/'", "eventData": { "osInfo": { "name": "Microsoft Windows NT 6.2.9200.0", "version": "6.2.9200.0", "arch": "Win32NT" }, "machineInfo": { "screenResolution": "1920x1200", "nbCores": "8", "netversion": "4.0.30319.42000" } } } JSON データの階層 triggerBody() triggerBody().eventDataSchemaVersion triggerBody().eventData.osInfo triggerBody().eventData.osInfo.version
20.
{ "name": "shared_bot", "id": "/providers/Microsoft.PowerApps/apis/shared_bot", "type":
"Microsoft.PowerApps/apis", "properties": { "displayName": "Bot", "iconUri": "https://connectorassets.blob.core.windows.net/assets/BotFramework.png", "iconBrandColor": "#007EE5", "apiEnvironment": "Shared", "isCustomApi": false, "runtimeUrls": [ "https://firstrelease-001.azure-apim.net/apim/bot" ], "primaryRuntimeUrl": "https://firstrelease-001.azure-apim.net/apim/bot", "capabilities": [ "actions" ], "description": "Bot service allows sending and receiving messages through the Microsoft Bot Framework.", "createdTime": "2017-01-12T00:45:42.3934203Z", "changedTime": "2017-11-01T22:26:13.5446789Z", "tier": "Standard", "publisher": "Microsoft" } } triggerBody().properties.capabilities[0] triggerBody()[‘properties’][‘capabilities’][0] JSON データの配列
21.
JSON データの参照 { "eventDataSchemaVersion": "1.0", "schemaVersion":
"1.0", "correlationId": "bddc4200-ebef-4c70-8430-a4a55bf22f8c", "clientSessionId": "", "clientRequestId": "", "component": "ServerHost", "eventType": "NotSpecified", "traceLevel": "Info", "operationName": "RpaWebServer.Start", "eventTimestamp": "2019-11-25T01:27:39.3100838Z", "message": "Listening on 'http://localhost:4723/'", "eventData": { "osInfo": { "name": "Microsoft Windows NT 6.2.9200.0", "version": "6.2.9200.0", "arch": "Win32NT" }, "machineInfo": { "screenResolution": "1920x1200", "nbCores": "8", "netversion": "4.0.30319.42000" } } } eventDataSchemaVersion の参照 triggerBody()[‘eventDataSchemaVersion’] triggerBody().eventDataSchemaVersion キー名を文字列として指定 または . や ? の後に要素名として指定
22.
JSON データの参照 triggerBody()[‘eventDataSchemaVersion’] triggerBody().eventDataSchemaVersion 書き方はどちらでも問題ない triggerBody()?[‘eventDataSchemaVersion’] triggerBody()?eventDataSchemaVersion ? 演算子を使う方が(ワークフローにとって)安全
23.
?演算子 { "eventDataSchemaVersion": "1.0", "schemaVersion": "1.0", "correlationId":
"bddc4200-ebef-4c70-8430-a4a55bf22f8c", "clientSessionId": "", "clientRequestId": "", "component": "ServerHost", "eventType": "NotSpecified", "traceLevel": "Info", "operationName": "RpaWebServer.Start", "eventTimestamp": "2019-11-25T01:27:39.3100838Z", "message": "Listening on 'http://localhost:4723/'", "eventData": { "osInfo": { "name": "Microsoft Windows NT 6.2.9200.0", "version": "6.2.9200.0", "arch": "Win32NT" }, "machineInfo": { "screenResolution": "1920x1200", "nbCores": "8", "netversion": "4.0.30319.42000" } } } タイプミスなどで 存在しない値を指定した場合 triggerBody()[‘machineInfo’] triggerBody(). machineInfo ワークフローの実行時エラーとなり 後続のアクションへ遷移する triggerBody()?[‘machineInfo’] triggerBody()?machineInfo 実行時エラーとはならずに 空文字列(Empty)となる triggerBody().eventData. machineInfo が正しいパス
24.
デザイナー上での ? 演算子サポート ダイアログから値を選択した場合に 自動で?演算子が使われるケースがある デザイナー側で認識しているスキーマ情報で Required
となるかどうかで記述が変化 必須(Required) の場合は?演算子は利用しない 省略可の場合は?演算子を利用する デザイナー側で意図に反する補填が行われる場合は スキーマ情報が意図しない形で認識されている
25.
対象のキー名記載 []でキー名を文字列で指定する時に 〇〇〇/×××/△△△~ とパスのように記述が可能 通常の記載とはデザイナー上での表記が 異なりパスが見える形になる Experimental Features 現時点では英語表示に設定した場合に限り 表示が切り替わる 指定することは日本語環境でも利用可能
26.
Value, Type and
Actions
27.
{ "key-1": "2019-12-07T00:00:00.000Z", "key-2": { "key-2-1":
10, "key-2-2": "10“ }, "key-3": [ "1", 1, "2", 2 ] } JSON スキーマ情報ありとなしで挙動が変わるか(日付) スキーマの有り無しは挙動に影響なく 取得した値をもとに純粋に処理が行われる
28.
JSON スキーマ情報ありとなしで挙動が変わるか(数値) スキーマの有り無しは挙動に影響なく 取得した値をもとに純粋に処理が行われる { "key-1": "2019-12-07T00:00:00.000Z", "key-2":
{ "key-2-1": 10, "key-2-2": "10“ }, "key-3": [ "1", 1, "2", 2 ] }
29.
{ "key-1": "2019-12-07T00:00:00.000Z", "key-2": { "key-2-1":
10, "key-2-2": "10“ }, "key-3": [ "1", 1, "2", 2 ] } 配列は値で挙動が変わるか(数値)
30.
{ "key-1": "2019-12-07T00:00:00.000Z", "key-2": { "key-2-1":
10, "key-2-2": "10“ }, "key-3": [ "1", 1, "2", 2 ] } 配列は値で挙動が変わるか(文字/数値) 配列の場合も基本ルールは同じ 取得した値をもとに処理が行われる
31.
JSON 情報の更新 addProperty setProperty removeProperty JSON オブジェクトにキーと値を追加 既に存在する場合はエラー 既存のキー名に対応する値を設定 存在しないキー名の場合は新規追加 既存のキー名に対応する値を削除 存在しないキー名の場合はそのまま 処理結果を「新しい
JSON オブジェクト」として返却
32.
~Property関数が非常に使いにくい理由 パス形式の指定ができないため、子プロパティの操作が行えない setProperty(body('JSON_の解析'),'key-2/key-2-1',1000) と書いた場合の挙動
33.
~Property関数による子プロパティの操作 { "key-1": "2019-12-07T00:00:00.000Z", "key-2": { "key-2-1":
10, "key-2-2": "10“ }, "key-3": [ "1", 1, "2", 2 ] } setProperty(body('JSON_の解析'), 'key-2', setProperty(body('JSON_の解析')?['key-2'], 'key-2-2', '1000' ) ) 子プロパティを書き換える場合は 親プロパティから階層的に記述が必要
34.
~Property関数による子プロパティの操作 作成2アクションの結果が 新しい JSON 値のオブジェクトに
35.
場面によっては JSON 値を 全て記述したほうが楽
36.
JSONデータを自分で作成する データ操作コネクタの 「JSONの解析」 「作成」アクションなどで JSONデータを作成できる 「作成」アクション時は Json 関数を利用する必要がある
37.
JSONデータのスキーマを自分で作成する • きれいな形であることを重要視しない • できるだけ階層構造を利用しない •
データが必要な量、連携できればよい { "key-1": "2019-12-07T00:00:00.000Z", "key-2": { "key-2-1": 10, "key-2-2": "10“ }, "key-3": [ "1", 1, "2", 2 ] } { "key-1": "2019-12-07T00:00:00.000Z", "key-2-1": 10, "key-2-2": "10“, "key-3": [ "1", 1, "2", 2 ] } 見て理解しやすい形は人によって異なるので 最初は気にしないのがベター
38.
まとめ • JSON の基本を理解すると書き方や読み方も思いつく •
~Property 系の関数は残念 • きれいな形にとらわれない
39.
https://aka.ms/logicflowjp-fb Power Automate/Logic Apps
コミュニティ
Download now