弊社では日報入力にGoogleフォームを使っています。
日報入力時に自動入力されたGoogleフォームをメールで送信しているのですが、実際どうやってるのかを思い出しながら記載してみます。
# システムの仕組み
収集された日報データ(スプレッドシート)
⇒ 時間によるトリガー発生
⇒ 最新データ抽出
⇒ GoogleフォームURL作成
⇒ メール本文にURLを入れて送信
となっています。
この中の
GoogleフォームURL作成
について簡単に記載してみます。
# GoogleフォームURL作成
Googleフォーム作成時にフォームのURLが作成されています。
プレビューをした際のURLをベースにします。
実際使用しているのGoogleフォームのベースURL
https://docs.google.com/forms/d/e/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/viewform
上記の画像の「送信」からメールで共有したGoogleフォームのメールにあるURLはいかになります。
https://docs.google.com/forms/d/e/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/viewform?vc=0&c=0&w=1&usp=mail_form_link
# データを入れてみる
説明を少し飛んで、実際にメールで送っているURLを確認してみます。
とある日の大輔さんに送られたメールにあるURL
https://docs.google.com/forms/d/e/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/viewform?usp=pp_url&entry.1209443717=2020-02-06&entry.967550270=THMNPC&entry.420650357=%E5%87%BA%E7%8E%89%E8%AA%BF%E6%95%B4&entry.2047046172=&entry.734571459=&entry.1659707811=&entry.104474459=
やたらと長いパラメータが搭載されています。
usp=pp_url&
entry.1209443717=2020-0206&
entry.967550270=THMNPC&
entry.420650357=%E5%87%BA%E7%8E%89%E8%AA%BF%E6%95%B4&
entry.2047046172=&
entry.734571459=&
entry.1659707811=&
entry.104474459=
usp=pp_urlは前に回答済みのURLという意味らしいので呪文ということで(詳しく調べてない)
entry.~~~の部分がキモです。
これが自動入力用のパラメータですが、それぞれIDのような番号になっています。
この番号はフォームに質問を作った際に割り振られています。
ではどうやってこのIDを知るか・・・?
伝家の宝刀「ページのソースを表示」を使います。
開くとソースが表示されますので、下の方に進んでいくと・・・
何やら本題のような場所が現れます。
ここが先ほどのIDになります。
,[77090801,"時間(遅刻は出勤時間、早退は退勤時間、他は未入力)",null,10,[[1431363095,null,0,null,null,null,[0]
気を付けるのは使用する数値は最初の数字ではなく、子要素的な数値のほうが実際のIDになります。
(上記の場合は「1431363095」になります)
全ての質問にIDがありますので、任意のIDをセットして内容を文字列で追加すればOKです。
スクリプト側のプログラムとしては
var prj1 = encodeURI(dataValues[idValues[i][1] - 1][columnPjc1]);
という形でencodeURLされたものを連結していけばOKです。
var url = 'https://docs.google.com/forms/d/e/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/viewform?usp=pp_url' +
'&entry.1209443717=' + date +
'&entry.967550270=' + prj1 +
'&entry.420650357=' + txt1 +
'&entry.2047046172=' + prj2 +
'&entry.734571459=' + txt2 +
'&entry.1659707811=' + prj3 +
'&entry.104474459=' + txt3
こんな感じでURLが完成です。
# 余談
なお、上はいかなるgoogleフォームでもやれますが、
自分が作ったフォームならURLやIDはもう少し簡単に作れます。
事前入力したURLを取得、を使うと上記IDが記載されたURLが取得できます。
えっ?こっちが王道では?・・・( ^ω^)