1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Python_GoogleForm入力ツール

1
Posted at

GoogleFormの入力・送信をPythonで行う

はじめに

この記事は、同じGoogleFormへ何度も回答を行う場合、同じ回答箇所の入力を省略するToolの作成手順です。
※GoogleFormがテンプレートで作成されている場合も対応可能。

GoogleForm URL entry_id
formを毎回新しく作成 変わる 変わる
formをテンプレートで作成 変わる 変わらない
同じform 変わらない 変わらない

このToolはGoogleFormの各項目に紐づいた、entry_idをキーとして、値を入力&送信するToolです。

使用例

・週時、月次のアンケート
・定期発注 等

準備物

・GoogleForm
 └Google_ID

・Python
 └selenium

・エディタ

1.GoogleForm作成

・ログイン

・新しいフォームを作成

・項目を作成
スクリーンショット 2024-12-06 6.53.32(2).png

2.GoogleFormから必要情報の取得

・画面 右上の目のマーク(プレビュー)をクリック

・画面 右クリック→「検証」をクリック

・表示された 検証画面(GoogleChromeデベロッパーツールより
 HTMLコードの書かれた画面で CTRL+F (検索窓を表示)
「entry」の文字列を検索。

・何度かEnterを打鍵すると、
「input type="hidden" name="entry.xxxxxxxxxx" value=""」が確認できる。
 ※「entry.xxxxxxxxxx」が各項目に対応している。

スクリーンショット 2024-12-06 7.05.20(2).png
 
 
 
・「entry.xxxxxxxxxx」が表示されたまま画面 左部分のフォームに値を入力する
 すると、対応する「entry.xxxxxxxxxx」の「value=""」に値が出力される

スクリーンショット 2024-12-06 7.24.36(2)のコピー.png
 

・上位のタグ(<div jsname="o6bZLc">)のouterHTMLをコピー

スクリーンショット 2024-12-06 7.27.17(2).png

 
・何らかのエディタに貼り付け整形
 ※正規表現で置換すると楽です。

スクリーンショット 2024-12-06 7.41.16.png

スクリーンショット 2024-12-06 7.41.30.png

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]をコピペする。

 https://docs.google.com/forms/d/e/[GoogleForm_ID]/viewform

スクリーンショット 2024-12-08 10.43.37(2).png

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の画面)に値は反映されませんが、これで入力と送信まで完了しています。

スクリーンショット 2024-12-08 11.50.14.png

送信結果の確認

・GoogleFormの回答タブをクリック
スクリーンショット 2024-12-07 12.23.30(2).png

・回答が正しく送信されて色事を確認。

スクリーンショット 2024-12-07 12.23.43(2).png

・以上で終了です、お疲れ様でした!
 次回以降は今回作成したPython_ToGoogleForm.pyの「form_id」と変更したい回答のみ書き換えれば、
 同じ回答の書き込み数を省略できます。

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?