ご訪問ありがとうございます。
Googleシートマスターのひろしです。
前回
今回は、とっても価値の高い方法をお伝えします。
これを知ることであなたは、
- Web上のフォームに自動的に入力することができます。
- Google Chrome使用時にXPathの取得方法もわかります。
というか、Web上のほとんどのフォームに対し、自動的に
入力することができるのです。
こんな感じです。
Googleフォームの場合は、こちらでOKです↓
逆に、知らないと
毎日の報告にMicrosoft Formsを開いて
日付を選択して、自分の名前を選択して、。。。。と
毎日、毎日、同じ項目を入力する必要があります。
なので、サクッとマスターして
その、ロボットのような作業は、Botに
やらせましょう。
と素晴らしいサイトがありました。
■Python(パイソン)のインストール
■formsのボット
これで、Microsoft Formsは、バッチリです。
Pythonが何なのかわからなくても大丈夫です。
Pythonが実行できる環境に、ファイルを作成
以下の内容をコピペします。
そして、拡張子を‘py’に変更します。
そうすることで、以下のフォームに自動的に入力するBotが
できてしまいます。
もう少し簡単にやる方法はこちら↓
動画
準備中
※作成途中なのですが、フォルダのプライペートな名称にぼかしを追加したり
エディタの説明が必要になったりと本題以外のところに時間がとられ、
果たしてこの動画のニーズはあるのか?
と感じているところです。
準備
PythonやChrome用のドライバなどいろいろと準備する必要があります。
動画を見ながらゆっくりとやってみてください。
以下は、動画内で使用しているリンクです。
Step1.
Pythonのインストール
Pythonの実行
command プロンプトから「python」と入力し動作確認します。
python
PowerShellの環境設定
PowerShellを起動し一回だけ実行します。
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force
これでPythonのインストールが完了さらにです。
Seleniumの導入
pip install selenium
Chromeにドライバをインストール
Pythonのソース
from selenium import webdriver
import time
# datetimeモジュールを使った現在の日付と時刻の取得
from datetime import datetime, timedelta
nowadays = datetime.now()
str_dt = nowadays.strftime('%Y/%m/%d')
print(str_dt)
driver = webdriver.Chrome("chromedriver.exe")
driver.get("https://docs.google.com/forms/d/e/1FAIpQLSekVc2ry0tI7H2i775lli8xX9MtvREV0BGQBH7oStlKSGypdA/viewform")
#time.sleep(1)
#パスを取得する
#element = driver.find_element_by_xpath('')
#文字入力する
#element.send_keys("")
#クリックする
#element.click()
#-------------------------------------------------
#フォームに入力
#-------------------------------------------------
#1.メールアドレス
element = driver.find_element_by_xpath('//*[@id="mG61Hd"]/div[2]/div/div[2]/div[1]/div/div/div[2]/div/div[1]/div/div[1]/input')
element.send_keys("abcefg@gmail.com")
#2.名前
element = driver.find_element_by_xpath('//*[@id="mG61Hd"]/div[2]/div/div[2]/div[2]/div/div/div[2]/div/div[1]/div/div[1]/input')
element.send_keys("ひろし")
#日付
element = driver.find_element_by_xpath('//*[@id="mG61Hd"]/div[2]/div/div[2]/div[3]/div/div/div[2]/div/div/div[2]/div[1]/div/div[1]/input')
element.send_keys(str_dt)
#今朝の体温
element = driver.find_element_by_xpath('//*[@id="mG61Hd"]/div[2]/div/div[2]/div[4]/div/div/div[2]/div/div[1]/div/div[1]/input')
element.send_keys("36.5")
#体調 (‘よい’を取得)
element = driver.find_element_by_xpath('//*[@id="i22"]')
element.click()
#朝食に食べたもの
element = driver.find_element_by_xpath('//*[@id="i39"]')
element.click()
#朝食に食べたもの
#//*[@id="i54"]でも可
element = driver.find_element_by_xpath('//*[@id="mG61Hd"]/div[2]/div/div[2]/div[6]/div/div/div[2]/div[1]/div[6]/label/div/div[2]/div/span')
element.click()
#element = driver.find_element_by_xpath('//*[@id="mG61Hd"]/div[2]/div/div[2]/div[6]/div/div/div[2]/div[1]/div[8]/div/div/div/div/div[1]/input')
#element.send_keys("カレーライス")
#driver.close()
#exit()
そして、自分用に変更してみてください。
Pythonのプログラムの作成方法
Step.0
① フォームのURLをコピーし以下の箇所にペーストします。
xPathの取得
Step1.
Google chromeでターゲットのフォームを開きデベロッパーツールを開きます。
①画面右上の「|」→「その他のツール」→「デベロッパーツール」
Step2.
①「▼」をクリックし「回答を入力」が反転する箇所を絞り込んでいきます。
(② Ctrl+F ->「メールアドレス」で検索し、ある程度絞り込みます。)
③「回答を入力」だけが反転する箇所を見つけます。
Step3.
①「回答を入力」が反転しているpath上で右クリックします。
②「Copy」-「Copy XPath」をクリックします。
ちなみにPythonの基本を学びたい場合は、こちら↓
※わたしもこれでサクッと楽しみながらスタディしました。
–2022/06/21追記–
せっかく作ったスクリプトですが、動かなくなりました。
原因を調べたところ、MS formsのxPathが変わったようです。
再度取得し、直ったのですが、ちょっと微妙ですね。
–2023/03/08 追記–
結構、頻繁に動かなくなりますね。
そんなときはChrome用のドライバを更新しましょう。
Windows版は以下のwin32.zip(64はなし)をダウンロードします。
これを解凍してあなたがPythonをインストールした環境にコピーすればOKです。
–2023/09/26 追記–
新しいPCにPythonの環境を作ろうとしたのですがなぜか動作しません。
AttributeError: 'WebDriver' object has no attribute
のエラーが表示されます。
いろいろ調べてようやくわかりました。
seleniumのバージョン4.3.0から、find_element_by_系のメソッドが
使えなくなったとのことです。
えっ、そんなどでかい仕様変更ってありなのでしょうか?
10本近く作成しているので、今さらすべて変更するのは大変です。
とseleniumのバージョンを落とせるとのこと
まず、Seleniumのバージョンの確認
pip list
※これは、4.1.0インストール後の画面です。
pip install selenium==4.1.0
で、4.1.0をインストールすればOKです。
以下の記事を参考にしました。
最後までご覧いただきありがとうございます。
つぎはこちら
コメント