GoogleFormの入力・送信をPythonで行う
はじめに
この記事は、同じGoogleFormへ何度も回答を行う場合、同じ回答箇所の入力を省略するToolの作成手順です。
※GoogleFormがテンプレートで作成されている場合も対応可能。
| GoogleForm | URL | entry_id |
|---|---|---|
| formを毎回新しく作成 | 変わる | 変わる |
| formをテンプレートで作成 | 変わる | 変わらない |
| 同じform | 変わらない | 変わらない |
このToolはGoogleFormの各項目に紐づいた、entry_idをキーとして、値を入力&送信するToolです。
使用例
・週時、月次のアンケート
・定期発注 等
準備物
・GoogleForm
└Google_ID
・Python
└selenium
・エディタ
1.GoogleForm作成
・ログイン
・新しいフォームを作成
2.GoogleFormから必要情報の取得
・画面 右上の目のマーク(プレビュー)をクリック
・画面 右クリック→「検証」をクリック
・表示された 検証画面(GoogleChromeデベロッパーツールより
HTMLコードの書かれた画面で CTRL+F (検索窓を表示)
「entry」の文字列を検索。
・何度かEnterを打鍵すると、
「input type="hidden" name="entry.xxxxxxxxxx" value=""」が確認できる。
※「entry.xxxxxxxxxx」が各項目に対応している。

・「entry.xxxxxxxxxx」が表示されたまま画面 左部分のフォームに値を入力する
すると、対応する「entry.xxxxxxxxxx」の「value=""」に値が出力される
・上位のタグ(<div jsname="o6bZLc">)のouterHTMLをコピー
・何らかのエディタに貼り付け整形
※正規表現で置換すると楽です。
3.Pythonコードを作成
・以下のコードを元に「form_data」の「項目」と「entry.xxxxxxxxxx」を
2.で取得した情報に書き換える。
import requests
# Googleフォームの送信URL(TEST用)
form_id = ""
form_url = f"https: //docs.google.com/forms/d/e/{torm_id}/formResponse"
# 送信データ
form_data = {
# 質問1 短文回答 # ←「項目」
"entry.1917196008": "1", # ←「"項目に対応するentry_id": "値"」
# 質問2 長文回答
"entry.1548551091": "2",
# 質問3 ラジオボタン
"entry.1358512549": "選択肢 1",
# 質問4 チェックボックス
"entry.1611642019": "チェックボックス 1",
# "entry.1611642019": "チェックボックス 2" # ←チェックボックスは、
# "entry.1611642019": "チェックボックス 3" # 同じentry_idで複数回答可能。
# 質問5 プルダウン # 使用しない回答は、コメントアウト
"entry.1759522738": "プルダウン 1",
# 質問6 均等目盛
"entry.26501631": "5",
# 質問7 評価
"entry.482782741": "3",
# 質問8 選択式
"entry.1885657946": "選択式 列 1",
"entry.859694997": "選択式 列 1",
# 質問9 チェックボックス(グリッド)
"entry.2091450370": "グリッド 列2",
"entry.1280921216": "グリッド 列2",
}
# フォーム送信
response = requests.post(form_url, data=form_data)
# レスポンスの確認
if response.status_code == 200:
print("データが正常に送信されました。")
else:
print(f"送信に失敗しました。ステータスコード: {response.status_code}")
・書き換えたものを、Pytohonファイル形式で保存
例) Python_ToGoogleForm.py
・Python_ToGoogleForm.pyの「form_id」にGoogleForm(プレビューモード)のURLから、
[GoogleForm_ID]をコピペする。
import requests
# Googleフォームの送信URL(TEST用)
form_id = "1FAIpQLSfOfC9VSNP_ERDcFxXjQGjHsE2ilFnFH-dMFDa5h1BdzCr9EQ"
form_url = f"https: //docs.google.com/forms/d/e/{torm_id}/formResponse"
===以下省略===
・ターミナルからseleniumライブラリをインストール
コマンド:pip install selenium
% pip install selenium
Collecting selenium
Downloading selenium-4.27.1-py3-none-any.whl.metadata (7.1 kB)
Collecting urllib3<3,>=1.26 (from urllib3[socks]<3,>=1.26->selenium)
Using cached urllib3-2.2.3-py3-none-any.whl.metadata (6.5 kB)
Collecting trio~=0.17 (from selenium)
====省略====
Successfully installed attrs-24.2.0 certifi-2024.8.30 h11-0.14.0 idna-3.10 outcome-1.3.0.post0 pysocks-1.7.1 selenium-4.27.1 sniffio-1.3.1 sortedcontainers-2.4.0 trio-0.27.0 trio-websocket-0.11.1 typing_extensions-4.12.2 urllib3-2.2.3 websocket-client-1.8.0 wsproto-1.2.0
↑ インストール成功 (Successfully installed)
・seleniumがインストールされた事を確認
コマンド:pip list | grep selenium
% pip list | grep selenium
selenium 4.27.1 ← インストール済ライブラリ一覧に selenium がいる。
・これで実行環境は整いました。
※Pythonインストールの説明は省略しています。
4.Pythonコードを実行し、結果を確認
・Pythonコードを実行し、ターミナルに「データが送信されました。」の出力を確認
※GUI(GoogleFormの画面)に値は反映されませんが、これで入力と送信まで完了しています。
送信結果の確認
・回答が正しく送信されて色事を確認。
・以上で終了です、お疲れ様でした!
次回以降は今回作成したPython_ToGoogleForm.pyの「form_id」と変更したい回答のみ書き換えれば、
同じ回答の書き込み数を省略できます。








