質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.30%
Google フォーム

Google フォームは、 Google社が提供しているアンケートフォーム作成および集計ができる無料のツール。Googleアカウントがあれば利用が可能です。集計データは、スプレッドシートに収集され、データ分析もできます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

951閲覧

Pythonで自分のPCのフォルダから画像をGoogleフォームに自動でアップロードして送信したい

yomoanyan

総合スコア14

Google フォーム

Google フォームは、 Google社が提供しているアンケートフォーム作成および集計ができる無料のツール。Googleアカウントがあれば利用が可能です。集計データは、スプレッドシートに収集され、データ分析もできます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2023/06/22 16:28

編集2023/06/24 02:59

実現したいこと

Pythonで自分のPCのフォルダ内の画像ファイルを自動でGoogleフォームにアップロードして送信したいです。

前提

「遅」というフォルダの中の「遅.jpg」というファイルを送信したいです。
作成したコードと「遅」というフォルダは同じ場所(デスクトップ上の書道というフォルダ内)にあります。

発生している問題・エラーメッセージ

下のコードを作成した時、15行目をどのように書き換えれば良いかわかりません。
例えばどのように書き換えれば良いのでしょうか?

該当のソースコード

Python

1from selenium import webdriver 2from selenium.webdriver.common.keys import Keys 3import time 4import chromedriver_binary 5from selenium.webdriver.common.by import By 6from selenium.webdriver.support.ui import WebDriverWait 7from selenium.webdriver.support import expected_conditions as EC 8 9driver = webdriver.Chrome() 10 11# GoogleフォームのURLを開く 12driver.get("https://docs.google.com/forms/d/e/1FAIpQLSeAfA6G2IblMomsvI9i8Y-GB5bZvoA7UEEfm1Ayy11n0NUYUA/viewform?usp=sf_link") 13 14# ファイルアップロードボタンを見つける 15css_selector = "input[type='file']" # ここを検証で得たCSSセレクタに置き換えてください 16upload_button = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, css_selector))) 17 18file_path = "./遅/遅.jpg" 19 20upload_button.send_keys(file_path) 21 22submit_button = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, "button[type='submit']"))) 23submit_button.click() 24 25time.sleep(5) 26 27driver.quit()

補足情報

Python 3.10.5
selenium 4.10.0
selenium 4.1.0(コメントを付け替え時)
Google Chrome 114.0.5735.133
Chrome Driver 114

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

Googleフォームではログイン状態じゃないとファイルをアップロードできないことがわかりました。
また、Seleniumを使ってChromeを立ち上げるとログアウトした状態になり、また、「このブラウザまたはアプリは安全でない可能性があります。」となるため、まずはログインした状態で起動する必要があることがわかりました。

投稿2023/06/22 18:46

編集2023/06/23 15:23
yomoanyan

総合スコア14

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

この回答はGPT-4による自動生成回答です

15行目のCSSセレクタは、Googleフォームのページを開いて、ファイルアップロードボタンの要素を検証することで取得できます。以下の手順でCSSセレクタを取得してください。

  1. Googleフォームのページを開く
  2. ファイルアップロードボタンを右クリックし、「検証」を選択
  3. 開いた開発者ツールで、ファイルアップロードボタンの要素が選択されていることを確認
  4. 要素のCSSセレクタをコピー

例えば、以下のようなCSSセレクタが得られたとします。

html

1input[type='file'][name='entry.123456789']

この場合、15行目を以下のように書き換えます。

python

1css_selector = "input[type='file'][name='entry.123456789']"

ただし、Googleフォームの要素は動的に変わることがあるため、CSSセレクタも変わる可能性があります。その場合は、再度検証してCSSセレクタを更新してください。

投稿2023/06/22 16:29

teratail-ai

Powered by GPT-4

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問