はじめに
できるという話を小耳にはさんで気になったのでやってみます。
適当なフォームを作る
必要な情報を取得する
各設問に対応するHTML要素のname属性を取得する必要があります。
フォーム回答画面のHTMLから探し出してもいいのですが、込み入っていて見つけるのが大変なので別の方法を提案します。
- 回答画面にアクセスする
- ディベロッパーツールのNetworkタブを開いておく
- 適当な回答を入力して
送信
する
- Nameが
formResponse
のログを選択する - PayloadタブのFormDataを
view source
で見る
先頭にあるentry.
で始まる要素が入力データです。
今回の場合だとentry.416791464=test+name
が取得できました。
entry.416791464
がHTML要素のname属性、test+name
が入力内容です。
回答が1つ作られてしまうので不要であれば削除します。
URLを組み立てて送信する
フォームの送信先URLはhttps://docs.google.com/forms/u/0/d/e/{フォームのID}/formResponse
です。
{フォームのID}
は回答画面のURLに含まれているIDで、先ほど取得したネットワークログのRequest URL
からも確認できます。
これと回答内容を組み合わせてcURLで送信します。
回答内容は自由に書き換えることができます。
$ curl -X POST https://docs.google.com/forms/u/0/d/e/{フォームのID}/formResponse?entry.416791464=curl+test+name
フォームの管理画面?から回答を確認すると、送信した内容が確認できました。
おわりに
今回はcURLでGoogleFormsの回答をしてみました。
用途としてフォームの回答内容をスプレッドシートと紐づけて簡易的なデータベースとして使用できないかと考えましたが、取得するためにAPIを使う以外の方法を知らないので、結局APIを使うのならFormsを使う意味がないなーと…
いい方法があれば教えてください。
データ収集などには活用できそうですね。
最後までご覧いただきありがとうございました。