ルドルフもわたるふもいろいろあってな

Microsoft 365、Power Platform、PowerShellについて調べたことや検証したことなどを投稿します。技術の話は面白い。

【解説編その3】【フローを改良しました】Microsoft Formsのフォームに回答していないひとに対して自動でメンションする

掲題のフローの解説編その3です。

昨日投稿しました下記の記事の改良内容をフローに反映しました。
wataruf.hatenablog.com


改良版のフローをGitHubにアップロードしました。
github.com

以下、解説です。

解説の経緯

今回の投稿は概要編概要編の続き解説編その1解説編その2 の続きです。

改良した箇所は「フォーム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では、未回答者の洗い出しを行います。


今回はこれで以上です。

追記:解説編その4を投稿しました。

wataruf.hatenablog.com