วิธีใช้ Google Sheets เป็นฐานข้อมูล เพื่อการเฝ้าระวังระบบ โดยการใช้งานผ่าน Google API Client Library for Python

ต่อจาก

  1. วิธีการใช้ Google Sheets เป็นฐานข้อมูล
  2. การใช้งาน Google Drive API ด้วย Google Client Library for Python
  3. วิธีการ 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 กันด้วยนะครับ)

ขั้นตอนการใช้งานมีดังนี้

  1. ใช้คำสั่ง
    git clone https://github.com/nagarindkx/google.git
    cd google
  2. ติดตั้ง 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
  3. รูปแบบคำสั่งคือ
    $ 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]
  4. สิ่งที่ต้องมี คือ Google Sheets ที่สร้างไว้แล้ว ให้สังเกตที่ URL
    ตัวข้อความที่อยู่หลัง https://docs.google.com/spreadsheets/d/ จะเป็น “Sheet ID” ซึ่งจะใช้ในตัวแปร “sheetid” ในขั้นต่อไป
  5. ในแต่ละ Google Sheets จะประกอบด้วย หลาย Sheet ในที่นี้ จะเขียนลง Sheet ที่ชื่อว่า “Data” ซึ่งจะใช้ในตัวแปร “range” ในขั้นต่อไป
  6. ตัวอย่างการใช้งาน เมื่อระบบทำการสำรองข้อมูล จับเวลา ก็จะทำการส่งข้อมูลไปเก็บในลักษณะ 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 อย่างนี้

    เอาไปใส่

    สำเร็จ และ ผลที่ได้

  7. แต่จะเห็นว่า ข้อมูล ตัวเลขที่ใส่เข้ามา จะถูกแปลงเป็นข้อความ ซึ่ง สามารถแก้ไขได้ด้วยการใส่ –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

    ผลที่ได้คือ คือ บรรทัดล่าง จะได้ชนิดเป็น Numeric มาเลย

  8. เมื่อเก็บผลเรียบร้อยแล้ว สามารถดูเป็น Chart แบบ Realtime ได้

เผื่อเป็นประโยชนครับ