LoginSignup
11
2

More than 1 year has passed since last update.

Google Form への自動回答(応答)を Power Automate で実装する

Last updated at Posted at 2022-04-11

2023/04/10 追記

本記事では、有償プランでのみ利用可能な「HTTP コネクタ」を利用していますが、
「OneDrive for Business」コネクタの「URL からのファイルのアップロード」を利用することで、
for 365の範囲(つまり有償プランなし)実現可能です。
image.png

Hiroさん@h-nagao)のブログをご参照ください。すごいです。ありがとうございます。

はじめに

最近は、朝の出席連絡をGoogle Formで回答する学校が増えてきているようです。
時勢がら、検温及び健康チェックをし、登校前にフォーム経由で学校へ連絡する仕組みです。
こういった効率化は素敵だと思います。

弊宅の子供が通う学校でもこのシステムが採られています。
有難いことに毎日元気に登校してくれるので、回答の大部分は「元気です!」「登校可能です!」です。
のような毎朝の定型作業となると、フォームへの回答を自動化したくなるのはPower Platform好きの性、よってPower Automateで実現してみました。

注意

今回利用する、「HTTP コネクタ」はプレミアムコネクタです。
有償プランもしくは、開発者向けプランををご利用ください。

「OneDrive for Business」コネクタの「URL からのファイルのアップロード」を利用することで、プレミアムコネクタの利用を回避可能です。
本blog冒頭をご参照ください。

Google Form 自動応答の仕様

Power Automate による、Google Form 自動応答フローを作成します。

Google Form へは Getリクエストで回答します。
回答内容は、GETリクエストのデータURLの後ろに ? でつなげ、回答毎に「質問のID=回答内容」の形式を & 結合します。

https://docs.google.com/forms/d/e/[フォームID]/formResponse?entry.[質問のID]=[質問の回答]&entry.[質問のID]=[質問の回答]&entry.[質問のID]=[質問の回答]

という形式です。

Google Form 自動応答のリクエストURLの作成

自動回答に必要な情報は下記の2つです。

  • フォームのURL
  • 各質問のID

自動回答対象のフォームのURLは以下のようになっているはずです。

https://docs.google.com/forms/d/e/[フォームID]/viewform

取得したURLの末尾を"formResponse"に変更します。

https://docs.google.com/forms/d/e/[フォームID]/formResponse

次に、自動回答対象のGoogle フォームを開いたブラウザでF12キーを押下し、開発者ツールを起動します。
Ctrl-Fで検索ツールを開き、"entry."で検索すると、

name="entry.[質問のID]" value="=[質問の回答]"
name="entry.[質問のID]" value="=[質問の回答]"
name="entry.[質問のID]" value="=[質問の回答]"

の要素が並んでいる箇所が見つかります。

image.png

この要素を、? から続く"entry.[質問のID]=[質問の回答]" のパラメータに変換し & で繋げていきます。
実際には "いない" などの2バイト文字にはURLエンコードする必要があります

https://docs.google.com/forms/d/e/[フォームID]/formResponse
?entry.126758984=9901
&entry.234969339=いない
&entry.436601476=出席
&entry.985114939=のどが痛い
&entry.985114939=気持ちが悪い
&entry.1014231498=ない → 質問5へ
&entry.2084789122=37.0℃未満

この"entry."という質問ID群の記載順は、フォーム上の質問の並びと一致していません。
フォームに回答を入力すると、開発者ツール側の"Value"の値も変動します。
各質問に対するIDの取得時に利用しましょう。
image.png

チェックボックスに対して複数の回答をチェックする場合は、選択する回答毎にパラメータを繋げます。
同一質問IDのパラメータが複数並ぶ形式となります。

image.png

このような場合は、以下のような記載となります。
実際には"発熱"などの2バイト文字にはURLエンコードする必要があります

&entry.249713034=発熱
&entry.249713034=せきがでる
&entry.249713034=のどが痛い

Power Automate 自動応答の仕様

フローの全体図になります

image.png

トリガーは、
「自動化したクラウドフロー」によるタイマー実行(毎朝)で完全自動化しても良いですし、
「インスタントクラウドフロー」による手動実行を、以下のように Power Automateアプリ(モバイルデバイス版)から起動、も良いと思います。

image.png

回答に英数字以外が含まれる場合は、URLエンコードしてください。
uriComponent()関数を利用します。

image.png

image.png

最後に Google Form へのGETリクエストします。
HTTPアクションで、以下設定を行います。
URIには、concat()関数で作成したリクエストURLを設定します。

{5DB2ECAB-E045-4E79-BEA6-90E21F38D16E}.tmp.png

concat('https://docs.google.com/forms/d/e/[フォームID]/formResponse',
'?entry.[質問のID]=',outputs('作成'),
'&entry.[質問のID]=',outputs('作成_2'),
'&entry.[質問のID]=',outputs('作成_3'),
'&entry.[質問のID]=',outputs('作成_4'),
'&entry.[質問のID]=',outputs('作成_5'),
'&entry.[質問のID]=',outputs('作成_6')
)

動作

Google Formへのリクエストが成功すると、StatusCode 200 が返ります。

image.png

存在しない質問IDを指定したり、回答必須の質問に返答しない場合は StatusCode 400 が返ってくるようです。

まとめ

 

  • Google Form に対し、Power Automate でGETリクエストを投げる事で回答が可能
  • 回答内容は、リクエストURLにパラメータで指定
  • フォームの各質問にはIDが割り振られているため、ブラウザの開発者ツールで調べる必要あり

朝の忙しい時間には、こういった効率化で時短していきましょう!

11
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
2