ส่ง Response บน Google Form ด้วย Python แบบง่ายมาก ๆ

เขียนโปรแกรมด้วย Python เพื่อช่วยลดงานและการจัดการกับข้อมูลที่ส่งเข้าฟอร์มซ้ำ ๆ กัน

ส่ง Response บน Google Form ด้วย Python แบบง่ายมาก ๆ

สวัสดีครับ ห่างหายจากการเขียนบทความสักพักใหญ่ ตั้งใจจะเขียนมานานแล้วแต่ไม่มีจังหวะให้เขียนได้เสร็จสักที คืนนี้มีไฟมีโอกาสก็ต้องรีบเขียนให้เสร็จ 5555

ครั้งนี้ผมจะพาทุกท่าน มาส่งคำตอบบน Google Form ด้วย Python กันครับ ซึ่งเป็นอะไร

ที่ง่ายมากๆ สามารถใช้กับภาษาอื่นได้ด้วยนะ จะทำยังไงลองอ่านกันดูต่อนะ

ปัญหาจากการเก็บข้อมูลที่ซ้ำ ๆ กัน

เริ่มเรื่องเลย ผมมีโจทย์อยู่ว่าผมจะต้องเก็บข้อมูลเข้าฟอร์มซ้ำอยู่ทุกสัปดาห์ ซึ่งเป็นงานที่เราไม่ควรไปทำซ้ำด้วยตัวเอง ผมก็เลยลองคิดเล่น ๆ ดูว่าเราจะสามารถเขียนโปรแกรมเพื่อส่งข้อมูลเข้าฟอร์มให้เราได้ไหม ซึ่งผมก็ได้คำตอบว่ามันสามารถทำได้

ผมจะขอยกตัวอย่างด้วยฟอร์มสั่งอาหารนะครับ

ฟอร์มสั่งอาหารสมมุติ

เอาล่ะเรารู้ว่า Protocol ยอดฮิตสำหรับการสื่อสารบนเว็บคือ HTTPs protocol เราก็เลยเริ่มจากการลองส่องดูว่าเวลาที่เรากรอกข้อมูลส่งฟอร์มผ่าน Web Browser (ผมใช้เป็น Google Chrome) แล้วมันเกิดอะไรขึ้นบ้าง

ปรากฏว่าเราเห็นสิ่งที่เราสามารถเข้าใจได้แบบนี้

ส่ง POST Request พร้อมกับ URL-encoded form data ไปที่ formResponse

Form data ที่ถูกส่งไปให้ Google

สังเกตในส่วนที่ขีดเส้นใต้สีแดงจะเห็นได้ชัดว่ามันเก็บของที่เราพึ่งกรอกส่งไปเมื่อสักครู่นี้ไว้ แล้วถ้าเราลองดูเพิ่มว่า entry พวกนี้อยู่ที่ไหนในฟอร์มบ้างเราจะเห็นอะไรประมาณนี้

มี input name=”entry” เก็บ value ที่เรากรอกไว้ในฟอร์มอยู่ด้วย

เขียน Python เพื่อส่งฟอร์ม

เอาล่ะ ทีนี้เรามาเขียน Python เพื่อส่งฟอร์มกันดีกว่า

```python

import requests

form_url = ‘https://docs.google.com/forms/d/e/1FAIpQLSfLrWtKW9bLZjhSSNN22dQw7wXHf8Fb9pLAWCssRV94yzJ48g/formResponse

payload = { ‘entry.1528073003’: ‘phone’, ‘entry.1553910829’: ‘note’, ‘entry.244270893’: ‘Spagetthi’, ‘entry.1054697158’: ‘Salmon steak’, ‘entry.1226813051’: ‘Chocolate Ice-cream’, ‘entry.1019068983’: ‘Yes’ }

if name == ‘main’: res = requests.post(form_url, payload) if res.status_code == 200: print(f’Submitted to {form_url[:-12]}’) elif res.status_code == 400: print(‘Check your payload’) elif res.status_code == 404: print(‘Check your form_url’)


##

เราใช้ requests module เพื่อส่ง HTTP post request ซึ่งถ้าไม่มีอะไรผิดไปจากที่ผมอธิบายมาทั้งหมด เราจะได้ผลลัพธ์ที่ console แบบนี้

```textile
Submitted to 
https://docs.google.com/forms/d/e/1FAIpQLSfLrWtKW9bLZjhSSNN22dQw7wXHf8Fb9pLAWCssRV94yzJ48g/

ได้รับ Response มาแล้ววว

สรุป

เท่านี้ก็ถือว่าเราส่ง Response เข้า Google Form เรียบร้อยแล้ว ซึ่งเป็นแค่วิธีหนึ่งจากหลาย ๆ วิธีเท่านั้น ผมแนะนำว่าให้ลองดูอีกหลาย ๆ แบบ และในกรณีที่ซับซ้อนขึ้นก็จะมีจุดที่เราต้องงัดแงะมากขึ้น แนะนำให้ลองไปเล่นกันดูเพิ่มเติมครับ เช่น นอกจาก HTTP Post request แล้วเรายังสามารถส่งฟอร์มแบบ HTTP Get request ได้อีกด้วย

ผมขอขอบคุณทุกท่านที่อ่านมาจนถึงตรงนี้ครับ ติดตามเพจ StackPython สำหรับเนื้อหาที่น่าสนใจอีกมากมาย (อาจรวมถึงการทำ Automate Google Form ที่ซับซ้อนกว่าในบทความนี้ด้วย) ไว้เจอกันครั้งหน้านะครับ สำหรับวันนี้ ม้าที่ว่าวิ่งเร็วยังแพ้ลา ก็เพราะว่า “ลาไปก่อน” สวัสดีครับ