สวัสดีครับ ห่างหายจากการเขียนบทความสักพักใหญ่ ตั้งใจจะเขียนมานานแล้วแต่ไม่มีจังหวะให้เขียนได้เสร็จสักที คืนนี้มีไฟมีโอกาสก็ต้องรีบเขียนให้เสร็จ 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 เพื่อส่งฟอร์มกันดีกว่า
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 แบบนี้
Submitted to
https://docs.google.com/forms/d/e/1FAIpQLSfLrWtKW9bLZjhSSNN22dQw7wXHf8Fb9pLAWCssRV94yzJ48g/
ได้รับ Response มาแล้ววว
เท่านี้ก็ถือว่าเราส่ง Response เข้า Google Form เรียบร้อยแล้ว ซึ่งเป็นแค่วิธีหนึ่งจากหลาย ๆ วิธีเท่านั้น ผมแนะนำว่าให้ลองดูอีกหลาย ๆ แบบ และในกรณีที่ซับซ้อนขึ้นก็จะมีจุดที่เราต้องงัดแงะมากขึ้น แนะนำให้ลองไปเล่นกันดูเพิ่มเติมครับ เช่น นอกจาก HTTP Post request แล้วเรายังสามารถส่งฟอร์มแบบ HTTP Get request ได้อีกด้วย
ผมขอขอบคุณทุกท่านที่อ่านมาจนถึงตรงนี้ครับ ติดตามเพจ StackPython สำหรับเนื้อหาที่น่าสนใจอีกมากมาย (อาจรวมถึงการทำ Automate Google Form ที่ซับซ้อนกว่าในบทความนี้ด้วย) ไว้เจอกันครั้งหน้านะครับ สำหรับวันนี้ ม้าที่ว่าวิ่งเร็วยังแพ้ลา ก็เพราะว่า “ลาไปก่อน” สวัสดีครับ
กิจกรรมที่กำลังจะมาถึง
ไม่พลาดกิจกรรมเด็ด ๆ ที่น่าสนใจ
Event นี้จะเริ่มขึ้นใน April 25, 2023
รายละเอียดเพิ่มเติม/สมัครเข้าร่วมคอร์สเรียนไพธอนออนไลน์ที่เราได้รวบรวมและได้ย่อยจากประสบการณ์จริงและเพื่อย่นระยะเวลาในการเรียนรู้ ลองผิด ลองถูกด้วยตัวเองมาให้แล้ว เพราะเวลามีค่าเป็นอย่างยิ่ง พร้อมด้วยการซัพพอร์ตอย่างดี