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

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

【概要編】Microsoft Formsのフォームに回答していないひとに対して自動でメンションする

掲題のフローを作成しました。事前に「こんなフローをブログで解説します」とTwitterに投稿したところ予想以上に反応をいただきました。

そのため、早速フローを公開しました。

エクスポートしたフローをGitHubにアップ済です。ダウンロードして使用してください。
github.com

背景

先日2020/5/28に、「気ままに勉強会 #17」でLTに参加させていただきました。
wataruf.hatenablog.com

このLTで「Teamsで"いいね"をしていないひとに自動でメンションをするフロー」のデモをさせていただきました。

そのなかで「提出文管理は"いいね"よりもMicrosoft Forms フォームを使う方向にしたい。でもフォームで回答していないひとの抽出は難しい」というコメントをいただたきました。それが、今回のフローを作成した背景です。

フローについての説明

注意

このフローは処理の都合上、1回実行するたびにOneDriveにCSVを1つ保存します。2022/6/13現在、削除処理をいれていないので実行するたびにファイルが増えます。適宜手動削除を行ってください。今後の手直しで削除処理を追加実装する予定です。

追記(2022/6/14 17:47):手順を一部変更しました。

「管理用フォームのURLと回答用フォームのURLどちらを使ってもフローを実行できる」という手順を記載していました。ですが、「管理用フォームのURLを使ってフローを起動をしたら実行に失敗した」というフィードバックを頂きました。

そのため、使用するURLを「回答フォームのURL」のみに変更しました。

追記(2022/6/24):手順に注意書き追記しました。

このフローは回答フォームのURLに含まれるフォームIDを取得します。短縮URLではこのフォームIDを取得することができません。
そのため、「回答フォームのURL」をコピーする際に「URLを短縮する」のチェックボックスはオフのままにするよう注意書きをいれました。

フローの概要

このフローは、"フォームのURL"を渡すとメンバーごとの回答日時をTeams上に投稿してくれるフローです。オプション機能として回答未完了者にメンションを行うことができます。

フォームのURLを入力すると

フローによってチャネルに投稿が行われます。

フローの使用イメージ

前準備

まずは、GitHubからフローのエクスポートファイル(zip形式)をダウンロードして、ご利用のテナントへのインポートを行ってください。インポートの手順についてはここでは割愛します。

手順の参考:
power automate フロー エクスポート インポート - Google 検索


フローをテナントにインポートしたあとに行う設定について解説します。必要な設定は下記の2箇所です。どちらもフローの編集画面で行う設定です。

  • チェック対象メンバーの指定
    • フォームへの回答を行ったかどうかを監視したいメンバーを指定します。フロー内のアクションに該当メンバーのメールアドレスを記載します。
  • 投稿先チャネルの指定
    • フローが各メンバーの回答日時をチェックした結果を投稿するチャネルを指定します。Teamsコネクタが持つ投稿アクションのドロップダウンメニューで指定を行います。

インポートしたフロー「フォームの未回答者をチェック」の編集ボタンをクリックします。

「変数を初期化する-チェック対象メンバー」アクションに、チェックを行う対象のユーザーのメールアドレスを記載します。例を参考にして記載してください。ダブルクォーテーション( " )やカンマ( , )が抜け落ち無いように注意して記載してください。

例:

[
"admin@m365x000309.onmicrosoft.com",
"miriamg@m365x000309.onmicrosoft.com",
"lynner@m365x000309.onmicrosoft.com",
"adelev@m365x000309.onmicrosoft.com",
"jonis@m365x000309.onmicrosoft.com"
]

フローの最後のアクションである「チャットまたはチャネルでメッセージを投稿する」の"チーム" と "チャネル" を指定します。

画面最上部の「保存」をクリックします。

"保存済み"と表示されたら、フローを閉じます。

フォームを作成

Microsoft Forms のトップ画面を開き、「新しいフォーム」をクリックします。

任意のフォームタイトルと質問を追加します。例としてここでは、フォームのタイトルを「デモ用のフォーム」に変更します。また、質問を1つ追加します。

「回答を収集」ボタンをクリックします。

「コピー」をクリックします。コピーしたURLをメモに控えます。※このURLはフローの実行で使用します。
追記:「URLを短縮」はオフのままにしてください。必ず。 

例:

https://forms.office.com/Pages/ResponsePage.aspx?id=o96MaMLu10q2WzsrLlNYiJXYCzX_j15Gss7zlDt9K0NUQ0pHN1lXUkQwUzFTNVU3OE9SMUdPT01UOS4u

フォームの回答を収集する

対象メンバーの何名かで回答を入力します。ここでは例として、対象メンバー 5名のうち2名(MiriamとLynne)で回答を行います。

Miriam

Lynne


これで前準備は終了です。後続の章ではフローの実行手順を示します。

フローを実行

フロー「フォームの未回答者をチェック」の実行ボタンをクリックします。

「フローの実行」画面が開きます。

「フォームURL」欄に、メモに控えているURLをは入力します。
  ※ メモに控えている2つのURL(管理画面、回答画面)のどちらでも可です

「未回答者にメンションする」欄のオフ or オンを選択します。

  • オフ
    • フローは「メンバー名と回答日時の一覧表」をチャネルに投稿します。未完了者にメンションはしません。
  • オン
    • フローは「メンバー名と回答日時の一覧表」をチャネルに投稿します。未完了者にメンションします。

画面下部の「フローの実行」をクリックします。処理が完了するまで20~30秒ほど待ちます。

フローによってチャネルに投稿が行われます。

フロー図

アクションの設定を閉じた状態のフロー図


開いた状態のフロー図


今回はここまでです。続きは別投稿で記載します。

アクションごとの詳細は解説編として投稿します。
(途中で別の投稿を挟む可能性もあります)

また、解説編のあとに応用編として何回か投稿する予定です。

  • フローをスケジュール実行にする
  • 未完了者について、Teamsでメンションするのではなくメールの送付を行う
  • メンバーの定義を固定ではなくて動的にする
  • CSVの削除処理を追加実装する

今回は以上です。

追記 :「未回答者チェックのスケジュール実行機能」を追加実装しました。

wataruf.hatenablog.com