Help us understand the problem. What is going on with this article?

Power Automate を使って Microsoft Forms のアンケートをどこから答えたのかを特定してみる【#PowerAutomate】

概要

ポスターやイベント等で Microsoft Forms での利用で、毎回設問は同じなのに回答を分ける為にアンケートを作り直したり、コピーして複数作ったりしていませんか?そういった作業を Power Automate を組み合わせることで不要にし、どのアンケートを答えたのかをある程度特定します。
また、このやり方は非常に 汎用性の高い ものになっている為、他にも様々な可能性があるやり方になっています。

本番稼働させる場合には Power Automate よりも Logic Apps の方が料金面や、動作速度の面、実行回数等を考慮するとおすすめです。(条件によります)

環境

  • Microsoft Forms
  • Excel Online
  • Power Automate の Premiumコネクタが使えるライセンス(Power Apps Community Plan 等)(HTTPコネクタを利用する為)

この手順で環境を作成してもらうことで試すことは可能です。

Microsoft Forms の用意

重要な手順です。
作成する Forms のアンケートは
Excel から Forms を作成します
image.png

この時、自動的に作成カラムされる、 開始時刻 を後々特定に利用します。

保存先を用意

どこから答えたのかを保存するための保存先を用意します。
今回は簡易的に Excel を利用しますが、本番稼働させる場合には別途 SQLDB 等を用意するほうがいいかもしれません。
image.png

必須なのは DateTime 列で他の列は特定したい値でテーブルを作成します。今回は Location を特定します。ほかには イベント名等が考えられるかもしれません。

Power Automate の作成

フローの全容はこちらです。
image.png

それぞれを説明していきます。

トリガー

image.png

要求の トリガーを利用します。
似たものに HTTP のトリガーも存在しますが、そちらではない点に注意してください。
image.png

relativePath を指定することで自動生成されるURLにパスを含めることができます。また指定しなかったとしても のちに query として取得できるのでこちらは設定しなくても問題ありません。(今回はサンプルのため両方使用する形になっています。)

クエリやパスを取得する

image.png
(値の見た目は実際には異なる場合がありますが、問題ありません)

トリガーによる値は

triggerOutputs()

を使用することで取得可能です。
クエリを取得する場合は以下のように指定します。

triggerOutputs()['queries']?['クエリ名']

今回は queries の中の redirectURL を取得するので

triggerOutputs()['queries']?['redirectURL']

と指定しています。

また、relativePath に指定した Location の方も同様に

triggerOutputs()['relativePathParameters']?['location']

とすることで取得可能です。

応答

今回の特定は 開始時刻 を利用する為、できるだけ早く応答を返します。
image.png

<html>
<header>
<meta http-equiv="refresh" content="0;URL=variables('RedirectURL')">
</header>
</html>

meta タグで再表示を行い、指定したURLに対してリダイレクトを行っています。

また、HTML を変換する為、ヘッダーには text/html が指定しています。

データを保存

最後に、取得した値を保存します。
ここで注意する点は、応答後のアクションです。
応答後のアクションは通常の構成ではスキップされてしまうため、実行の構成を以下のよう全てにチェックを入れるようにします。
image.png

image.png

保存する部分は適宜対応するアクションに変更してください。

以上で作成は完了です。

特定方法

実際に動かしてみましょう
URL は以下のようになるかと思います。

https://トリガーのURL&redirectURL=FormsのURL

location/ の後は自由に入れてみましょう

manual/paths/invoke/location/東京?api ~

上記のフローが正しく実行されると、以下のようにデータとして保存されます。
image.png

注目する点は 開始時刻DateTime 列になります。
おそらく大体(前後 1~2秒程度)で揃っているはずです。(その為厳密なチェックは今回のロジックでは不可能です。)
あとはこれを Excel でも Power BI でも突き合わせるようにすれば特定が可能になります。

まとめ

この方法を利用することで、アンケートをコピペすることなく、ある程度の特定が可能になります。アンケートを変更した際も redirectURL を変更したURLをQRコードなどで発行することで、フローの変更はする必要はないのは利点ではないでしょうか?(パラメータが変更の場合は修正が必要です。)

また、この方法はパラメータに様々な値を仕込むことができ、非常に汎用性が高いので、ぜひチャレンジしてみてください。

参考

こちらの Tweet を参考に作成しました。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした