掲題のフローの解説編その3です。
昨日投稿しました下記の記事の改良内容をフローに反映しました。
wataruf.hatenablog.com
改良版のフローをGitHubにアップロードしました。
github.com
以下、解説です。
- 解説の経緯
- 改良した箇所は「フォームIDの取得」アクション
- 更新版のフローをGitHubにアップロードしました(再掲)
- フローによる最終的な出力は変わらないのになぜわざわざ改良したのか?
- 次回(解説編その4)の内容
- 追記:解説編その4を投稿しました。
改良した箇所は「フォームIDの取得」アクション
このアクションは、手動トリガーの入力情報のひとつであるフォームURLから、文字列操作によってフォームIDを取得するアクションです。
解説編その1で記載した内容
どんな問題点があったか:管理用フォームと回答用フォームの両方には対応できない
Microsoft Forms には2つのフォームがあります。それぞれURLのクエリストリングの構造が異なります。フォームよってIDのKeyを表す部分が「?ID=」だったり「&ID=」だったりします。また、IDのKey-ValueがURLの途中の位置にあったり末端にあったりします。
そのため、これらのどのパターンのURLであってIDのValue(= フォームID)を取得しようとなると意外と難易度が高いです。
管理用フォームのURLの例
https://forms.office.com/pages/designpagev2.aspx?lang=ja-JP&origin=OfficeDotCom&route=Start&sessionid=e8cf49bf-ba21-4e5e-ba79-fc0c861eab7d&subpage=design&id=o96MaMLu10q2WzsrLlNYiJXYCzX_j15Gss7zlDt9K0N
UOEtPS0QzVVNTVTNSN1NFWVUwSU5LNDdaVy4u&analysis=true
回答用フォームのURLの例
https://forms.office.com/Pages/ResponsePage.aspx?id=o96MaMLu10q2WzsrLlNYiJXYCzX_j15Gss7zlDt9K0NUOEtPS0QzVVNTVTNSN1NFW
VUwSU5LNDdaVy4u
どう対処したのか:クエリストリングのKey-Valueを簡易版 JSON Dictionary 形式の配列にした
具体的な話は昨日の投稿に記載しました。こちらを参照してください。
wataruf.hatenablog.com
この手法をフローに反映しました。下記赤字の部分が該当のアクションです。
これによって何が変わったのか? 管理用フォームのURLでのフローが処理できるようになった
改良前のフローでは処理できるのは「回答フォームのURLのみ」でした。今回の改良を加えたことで「管理用フォームのURL」でも「回答フォームのURL」でもフローが処理できるようになりました。
更新版のフローをGitHubにアップロードしました(再掲)
アップロードしました。ご活用ください。 ※今回の記事の冒頭に記載したリンクと同じです。
github.com
フローによる最終的な出力は変わらないのになぜわざわざ改良したのか?
私のモチベーションの置き所が標準化・汎用化だからです。今回の「Power AutomateでURLのクエリストリングを配列として取得する」手法がいつか誰かの役に立てば幸いです。
(`・ω・´)ノシ
次回(解説編その4)の内容
次回はステップごとの解説編の続きです。
解説編その4では、未回答者の洗い出しを行います。
今回はこれで以上です。