ต่อจาก
- วิธีการใช้ Google Sheets เป็นฐานข้อมูล
- การใช้งาน Google Drive API ด้วย Google Client Library for Python
- วิธีการ Upload ไฟล์ไปบน Google Drive File Stream ด้วย Google Client Library for Python
คราวนี้ ใครมีข้อมูลที่เกิดขึ้นในเซิร์ฟเวอร์ภายในองค์กร แล้วต้องการส่งไปเขียนเก็บไว้ใน Google Sheets แบบต่อท้าย (Append)
เช่น ในตัวอย่างนี้ วัดระยะเวลาการโอนย้ายข้อมูล เปรียบเทียบระหว่าง rsync เพื่อสำรองข้อมูลไปไว้ในเครื่องเซิร์ฟเวอร์สำรองที่ต่างวิทยาเขต กับ การนำไปเก็บไว้ใน Google Drive ตามวิธีการที่กล่าวไว้ใน วิธีการ Upload ไฟล์ไปบน Google Drive File Stream ด้วย Google Client Library for Python
ผมได้เขียนโค๊ดเอาไว้ที่ https://github.com/nagarindkx/google.git
สามารถโคลนไปใช้งานได้ (ช่วย Reference กันด้วยนะครับ)
ขั้นตอนการใช้งานมีดังนี้
- ใช้คำสั่ง
git clone https://github.com/nagarindkx/google.git cd google
- ติดตั้ง python, pip, google-api-python-client ตามที่เขียนไว้ใน การใช้งาน Google Drive API ด้วย Google Client Library for Python และสร้างโปรเจคใน Google Developer Console เปิดใช้งาน Google Sheets API, สร้าง Credentials > OAuth Client ID แล้ว download JSON มาไว้ในชื่อว่า client_secret.json
- รูปแบบคำสั่งคือ
$ python append2gsheet.py --help usage: append2gsheet.py [-h] [--auth_host_name AUTH_HOST_NAME] [--noauth_local_webserver] [--auth_host_port [AUTH_HOST_PORT [AUTH_HOST_PORT ...]]] [--logging_level {DEBUG,INFO,WARNING,ERROR,CRITICAL}] --data DATA --sheetid SHEETID [--range RANGE] [--value-input-option VALUEINPUTOPTION] optional arguments: -h, --help show this help message and exit --auth_host_name AUTH_HOST_NAME Hostname when running a local web server. --noauth_local_webserver Do not run a local web server. --auth_host_port [AUTH_HOST_PORT [AUTH_HOST_PORT ...]] Port web server should listen on. --logging_level {DEBUG,INFO,WARNING,ERROR,CRITICAL} Set the logging level of detail. --data DATA CSV format --sheetid SHEETID Google Sheets ID --range RANGE Simply Sheet Name like 'Sheet1!A1' --value-input-option VALUEINPUTOPTION Optional: [RAW,USER_ENTERED]
- สิ่งที่ต้องมี คือ Google Sheets ที่สร้างไว้แล้ว ให้สังเกตที่ URL
ตัวข้อความที่อยู่หลัง https://docs.google.com/spreadsheets/d/ จะเป็น “Sheet ID” ซึ่งจะใช้ในตัวแปร “sheetid” ในขั้นต่อไป
- ในแต่ละ Google Sheets จะประกอบด้วย หลาย Sheet ในที่นี้ จะเขียนลง Sheet ที่ชื่อว่า “Data” ซึ่งจะใช้ในตัวแปร “range” ในขั้นต่อไป
- ตัวอย่างการใช้งาน เมื่อระบบทำการสำรองข้อมูล จับเวลา ก็จะทำการส่งข้อมูลไปเก็บในลักษณะ CSV อย่างนี้ส่งไป เช่น
20180129-12,37.0188,27.5338,943.7682,902.7372
ซึ่งประกอบด้วย 5 ฟิลด์ คือ วันเวลาที่วัด และ ข้อมูล เป็นจำนวนวินาที อีก 4 ฟิลด์
วิธีการส่งคำสั่งในการใช้งาน ครั้งแรก ต้องใส่ –noauth_local_webserver ด้วยpython append2gsheet.py --data 20180129-12,37.0188,27.5338,943.7682,902.7372 --sheetid 1YV_W_k8VkJbYn1fG1XXXXXXXXXXXXF8y5YtQwRC0DAY --range 'Data!A1' --noauth_local_webserver
จะได้ผลดังนี้
ให้เอา URL ไปเปิดบนเว็บ Browser ที่สามารถยืนยันตัวตนกับ Google ได้ ผลดังนี้
แล้วก็ให้การอนุมัติ
ก็จะได้ Verification Code อย่างนี้
เอาไปใส่
- แต่จะเห็นว่า ข้อมูล ตัวเลขที่ใส่เข้ามา จะถูกแปลงเป็นข้อความ ซึ่ง สามารถแก้ไขได้ด้วยการใส่ –value-input-option USER_ENTERED
python append2gsheet.py --data 20180129-12,37.0188,27.5338,943.7682,902.7372 --sheetid 1YV_W_k8VkJbYn1fG1XXXXXXXXXXXXF8y5YtQwRC0DAY --range 'Data!A1' --noauth_local_webserver --value-input-option USER_ENTERED
- เมื่อเก็บผลเรียบร้อยแล้ว สามารถดูเป็น Chart แบบ Realtime ได้
เผื่อเป็นประโยชนครับ