Google form auto-filling and submitting
Task
Một ngày đẹp trời, có một người nào đó đưa cho bạn một cái Google form và yêu cầu mình điền vào đó mỗi ngày, hoặc có thể là hằng giờ để báo cáo một việc gì đó.
Công việc lặp đi lặp lại này có vẻ nhàm chán, do đó mình nghĩ đến việc viết một script để làm việc này một cách tự động bằng Python
Just build it
Create and access URL
URL của Google form sẽ trông như thế này:
https://docs.google.com/forms/d/e/form-index/viewform
Copy URL đó và thay thế viewform bằng formResponse:
https://docs.google.com/forms/d/e/form-index/formResponse
Extract information
Mở Google form cần điền lên, sau đó mở công cụ DevTools (inspect) trên web.
Mỗi input-box mà ta cần điền thông tin vào sẽ có dạng
name = "entry.id"
. Tìm kiếm chúng với từ khóa entry
Thử điền từng input-box để biết id
của nó
Write Python script
Fill data
Sau khi biết được id
và định dạng cho từng input-box
Tạo một dictionary với key
là id của từng input-box, cùng với đó là value
chính là dữ liệu bạn cần nhập vào
def fill_form():
name = 'Your name'
date, hour = str(datetime.datetime.now()).split(' ')
date = date.split('-')
hour = hour.split(':')
value = {
# Text
"entry.2112281434": name,
# Dropdown menu
"entry.1600556346": "Sài Gòn",
# Date
"entry.77071893_year": date[0],
"entry.77071893_month": date[1],
"entry.77071893_day": date[2],
# Hour
"entry.855769839": hour[0] + 'h',
# Checkbox
"entry.819260047": ["Cà phê", "Bể bơi"],
# One choice
"entry.1682233942": "Okay"
}
return value
Lưu ý:
- Cần nhập đúng format dữ liệu có trong từng input-box nếu không sẽ không thể điền form (tốt nhất là vào form đó rồi copy dán vào code)
- Đối với checkbox multi-choice: dữ liệu sẽ dưới dạng list
Submit form
Dùng phương thức POST của thư viện requests
def submit(url, data):
try:
requests.post(url, data = data)
print("Submitted successfully!")
except:
print("Error!")
submit(url, fill_form())
Xong!!!
Full code: https://github.com/tienthanh214/autofill-and-submit-ggform
Test yourself: Google form - Test script
Run it daily
Các bạn có thể sử dụng heroku.com và dùng add-on Heroku Scheduler để chạy nó theo lịch cụ thể, mặc dù nó Free nhưng vẫn yêu cầu nhập credit card.
Nếu bạn không có credit card, có thể dùng pythonanywhere.com, upload code sau đó vào Tasks, chọn giờ chạy script vào mỗi ngày. Vì nó Free nên có rất nhiều hạn chế.