การเชื่อมต่อ API ของ Google Sheet ด้วย Python

API ย่อมาจาก Application Programming Interface ซึ่งเป็นชุดของวิธีการและกฎเกณฑ์ที่กำหนดไว้ว่าเราสามารถเชื่อมต่อและใช้งานโปรแกรมอย่างปลอดภัย โดย API มีหน้าที่เป็นตัวกลางในการสื่อสารระหว่างแอพพลิเคชั่นที่ต่างกัน ซึ่งในแต่ละแอพพลิเคชั่นอาจมีหน้าที่และเป้าหมายที่แตกต่างกันไป แต่สามารถใช้งาน API เดียวกันได้ และใช้งานได้ผ่านเว็บเซอร์วิส (Web Service) ที่เป็นตัวกลางในการส่ง-รับข้อมูลระหว่างแอพพลิเคชั่นกับเซิร์ฟเวอร์

API (Application Programming Interface) เป็นชุดของโค้ดและโครงสร้างของโปรแกรมที่ช่วยให้แอปพลิเคชันต่าง ๆ สามารถสื่อสารกันได้ โดยผ่านทางอินเทอร์เน็ต โดยทั่วไปแล้ว API ใช้เพื่อแชร์ข้อมูลระหว่างระบบที่แตกต่างกัน เช่น การเชื่อมต่อแอปพลิเคชันกับเซิร์ฟเวอร์หรือการเชื่อมต่อแอปพลิเคชันกับฐานข้อมูล

กระบวนการทำงานของ API จะมีขั้นตอนดังนี้

  1. ร้องขอ (Request) : ผู้ใช้งานส่งคำร้องขอข้อมูลจาก API ไปยังเว็บเซิร์ฟเวอร์

  2. ประมวลผล (Process) : เว็บเซิร์ฟเวอร์รับคำร้องขอและประมวลผลในการตอบกลับด้วยข้อมูลที่ต้องการ

  3. ตอบกลับ (Response) : เว็บเซิร์ฟเวอร์ส่งข้อมูลที่ได้รับมากลับไปยังผู้ใช้งาน

  4. แปลงข้อมูล (Data Conversion) : ข้อมูลที่ได้รับมาจาก API อาจจะเป็นรูปแบบข้อมูลต่าง ๆ เช่น XML, JSON ซึ่งต้องทำการแปลงเป็นรูปแบบข้อมูลที่เหมาะสมกับแอปพลิเคชัน

  5. นำข้อมูลไปใช้ (Use data) : ข้อมูลที่ได้รับมาจะถูกนำไปใช้ในแอปพลิเคชันต่อไป

โดย API ที่ใช้กันอย่างแพร่หลายในปัจจุบันคือ RESTful API ซึ่งมีโครงสร้างและวิธีการใช้งานที่เป็นที่นิยมกันมากขึ้น

การเชื่อมต่อกับ API ของ Google Sheet

ในภาษา Python นั้น จะต้องใช้ Google API Client Library ซึ่งเป็นโมดูลที่ถูกพัฒนาขึ้นโดย Google เอง โดยสามารถติดตั้งได้ผ่าน pip โดยใช้คำสั่ง

pip install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib

หลังจากติดตั้งเสร็จเรียบร้อยแล้ว สามารถใช้งานได้โดยทำตามขั้นตอนดังนี้

  1. สร้าง Project และเข้าไปที่ Google Developer Console โดยใช้ลิงก์นี้  https://console.developers.google.com/
  2. สร้าง Credential โดยเลือก Service Account Key และตั้งค่า Role เป็น Project Editor และเลือก JSON เพื่อดาวน์โหลดไฟล์ Credential
  3. เพิ่มผู้ใช้งานใน Google Sheet โดยกรอก Email ของ Service Account ที่ได้จากการสร้าง Credential ในข้อ 2
  4. เปิดใช้งาน Google Sheet API ผ่านหน้าเว็บของ Google Developer Console โดยไปที่ Library และค้นหา Google Sheet API แล้วกด Enable

การเชื่อมต่อ API ของ Google Sheets สามารถทำได้โดยใช้โมดูล gspread และ oauth2client ดังนี้

import gspread
from oauth2client.service_account import ServiceAccountCredentials

# กำหนด scope ของ Google Sheet API
scope = ['https://spreadsheets.google.com/feeds','https://www.googleapis.com/auth/drive']

# กำหนดชื่อไฟล์ credential และ path ไปยังไฟล์
creds = ServiceAccountCredentials.from_json_keyfile_name('credentials.json', scope)

# เข้าถึง Google Sheet ด้วย Credentials
client = gspread.authorize(creds)

# ทำการเลือก Google Sheet โดยกำหนดชื่อของ Sheet ที่ต้องการเชื่อมต่อ
sheet = client.open('ชื่อ Google Sheet ที่ต้องการเชื่อมต่อ').sheet1

# ทำการเขียนข้อมูลลงใน Google Sheet
sheet.update_cell(1, 1, 'ข้อมูล')

จากโค้ดดังกล่าว จะต้องมีไฟล์ credentials.json เพื่อเป็นไฟล์ข้อมูลในการยืนยันตัวตน ซึ่งสามารถสร้างได้จาก Google API Console โดยเลือกสร้าง Credential แบบ Service account key แล้วดาวน์โหลดไฟล์ JSON มาเก็บไว้ในโปรเจกต์ Python ของเรา โดยไฟล์นี้จะประกอบด้วย client_email และ private_key ที่เป็นข้อมูลสำคัญในการเชื่อมต่อกับ Google Sheet API โดยต้องกำหนด scope และชื่อไฟล์เพื่อเข้าถึงไฟล์นี้ได้

 

การสร้าง Google Sheet ด้วย Python

สามารถสร้าง Google Sheet ด้วย Python ได้โดยใช้ Google Sheets API และ Google API Client Library for Python ซึ่งเป็นไลบรารีสำหรับการเขียนโปรแกรม Python เพื่อเชื่อมต่อและใช้งาน Google APIs

ตัวอย่าง โค้ด Python สร้าง Google Sheet ใหม่และเพิ่มข้อมูลเข้าไปใน Sheet ใหม่นั้น โดยแยกเป็นขั้นตอนดังนี้

  1. ติดตั้ง Google API Client Library for Python โดยใช้ pip
!pip install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib
  1. สร้าง Credentials ของ Google Sheets API ด้วยการสร้าง project ใน Google Cloud Console และใช้ OAuth 2.0 Client ID เพื่อสร้าง credentials

  2. สร้างไฟล์ Python และนำเข้าไลบรารีที่จำเป็น

import google.auth
from google.oauth2.credentials import Credentials
from googleapiclient.errors import HttpError
from googleapiclient.discovery import build
  1. สร้างฟังก์ชันสำหรับการสร้าง Google Sheet ใหม่ โดยใช้งาน Google Sheets API
def create_spreadsheet(title):
    # สร้าง service object ของ Google Sheets API
    service = build('sheets', 'v4', credentials=creds)

    # กำหนดค่า body สำหรับการสร้าง Google Sheet ใหม่
    body = {
        'properties': {
            'title': title
        },
        'sheets': [
            {
                'properties': {
                    'title': 'Sheet1'
                }
            }
        ]
    }

    try:
        # สร้าง Google Sheet ใหม่
        spreadsheet = service.spreadsheets().create(body=body).execute()
        print(f'Created new spreadsheet: {title} with URL: {spreadsheet["spreadsheetUrl"]}')
        return spreadsheet

    except HttpError as error:
        print(f'An error occurred: {error}')
        return None
  1. เรียกใช้ฟังก์ชัน create_spreadsheet() เพื่อสร้าง Google Sheet ใหม่
spreadsheet = create_spreadsheet('My New Sheet')

 

การเพิ่มข้อมูลลงใน Google Sheet ด้วย Python

สามารถทำได้โดยใช้ Library gspread และ oauth2client ที่ต้อง install ลงบนเครื่องก่อน และสร้าง credential สำหรับการเข้าถึง Google Sheet API ด้วย Google Cloud Platform ก่อนการเรียกใช้งาน

โดยเริ่มต้นต้อง import module ต่างๆ ดังนี้

import gspread
from oauth2client.service_account import ServiceAccountCredentials

จากนั้นกำหนด scope ของ Google Sheet API และเรียกใช้ credentials ของผู้ใช้เพื่อเชื่อมต่อกับ Google Sheet API ดังนี้

scope = ['https://spreadsheets.google.com/feeds','https://www.googleapis.com/auth/drive']
creds = ServiceAccountCredentials.from_json_keyfile_name('credentials.json', scope)
client = gspread.authorize(creds)

เมื่อเชื่อมต่อสำเร็จแล้ว ก็สามารถเลือก Google Sheet ที่ต้องการเพิ่มข้อมูลลงไปได้ด้วยการเรียกใช้ method open() โดยกำหนดชื่อของ Google Sheet ที่ต้องการใช้งาน

sheet = client.open('ชื่อ Google Sheet ที่ต้องการใช้งาน').sheet1

หลังจากเลือก Google Sheet แล้ว สามารถเพิ่มข้อมูลลงไปใน Google Sheet ได้ด้วย method ต่างๆ ของ Library gspread เช่น ใช้ method update_cell() เพื่อเพิ่มข้อมูลลงในเซลล์ที่กำหนด

sheet.update_cell(1, 1, 'ข้อมูล')

 

การอ่านข้อมูลจาก Google Sheet ด้วย Python

จำเป็นต้องติดตั้ง library gspread และ oauth2client ก่อนหลังจากติดตั้ง library เรียบร้อยแล้ว ให้เข้าไปที่ Google Cloud Platform Console เพื่อสร้าง credentials สำหรับ Google Sheet API โดยมีขั้นตอนดังนี้

  1. เข้าสู่ Google Cloud Platform Console โดยใช้บัญชี Google ของตนเอง
  2. สร้าง Project ใหม่หากยังไม่มี
  3. เปิด Google Sheet API โดยเข้าไปที่หน้า Library แล้วค้นหา “Google Sheet API” แล้วเปิดใช้งาน
  4. สร้าง Credentials ใหม่ โดยเลือก “Service Account Key” และกรอกข้อมูลต่างๆตามที่ระบุไว้ในหน้านั้น

หลังจากสร้าง Credentials เรียบร้อยแล้ว จะได้ไฟล์ JSON มาซึ่งจะใช้สำหรับเชื่อมต่อ Google Sheet ผ่าน Python 

ตัวอย่าง การเข้าถึงข้อมูลใน Google Sheet ด้วย Python ดังนี้

import gspread
from oauth2client.service_account import ServiceAccountCredentials

# กำหนด scope ของ Google Sheet API
scope = ['https://spreadsheets.google.com/feeds','https://www.googleapis.com/auth/drive']

# กำหนดชื่อไฟล์ credential และ path ไปยังไฟล์
creds = ServiceAccountCredentials.from_json_keyfile_name('credentials.json', scope)

# เข้าถึง Google Sheet ด้วย Credentials
client = gspread.authorize(creds)

# เลือก Google Sheet ที่ต้องการอ่านข้อมูล
sheet = client.open('ชื่อ Google Sheet ที่ต้องการอ่านข้อมูล').sheet1

# อ่านข้อมูลใน Google Sheet ทั้งหมดและเก็บในตัวแปร data
data = sheet.get_all_records()

# แสดงผลข้อมูลที่ได้รับ
print(data)

จากตัวอย่าง เป็นการเชื่อมต่อ API ของ Google Sheet ด้วย Python โดยใช้ไลบรารี gspread และ oauth2client เพื่อเข้าถึง Google Sheet API โดยมีขั้นตอนดังนี้

  1. กำหนด scope ของ Google Sheet API และใช้ credentials.json เพื่อเข้าถึง API
  2. เรียกใช้งานไลบรารี gspread เพื่อเชื่อมต่อกับ Google Sheet ด้วย Credentials ที่ได้รับ
  3. เลือก Google Sheet ที่ต้องการอ่านข้อมูลโดยใช้ชื่อของ Google Sheet
  4. อ่านข้อมูลใน Google Sheet โดยใช้ฟังก์ชัน get_all_records() และเก็บข้อมูลในตัวแปร data
  5. แสดงผลข้อมูลที่ได้รับในรูปแบบ dictionary

ดังนั้น โค้ดนี้จะอ่านข้อมูลทั้งหมดใน Google Sheet และแสดงผลในรูปแบบของ dictionary ซึ่งสามารถใช้งานต่อได้ในการจัดการข้อมูลต่อไป

 

การอัปเดตแก้ไขข้อมูลใน Google Sheet ด้วย Python

สามารถทำได้โดยใช้ method update_cell() หรือ update_cells() ของ class Worksheet ของ gspread module

เมื่อเราใช้ method update_cell() เพื่ออัปเดตข้อมูลใน cell จะต้องระบุตำแหน่งของ cell และข้อมูลที่ต้องการอัปเดตเป็น parameter ดังตัวอย่างต่อไปนี้

# อัปเดตข้อมูลใน cell A1 ของ worksheet ที่ชื่อ 'Sheet1'
sheet.update_cell(1, 1, 'New Value')

สำหรับ method update_cells() จะใช้สำหรับการอัปเดตหลาย cell พร้อมกัน โดยจะต้องระบุช่วงของ cell และข้อมูลที่ต้องการอัปเดตเป็น list of list ดังตัวอย่างต่อไปนี้

# อัปเดตข้อมูลในช่วง cell A1:B3 ของ worksheet ที่ชื่อ 'Sheet1'
cell_list = sheet.range('A1:B3')
new_data = [['New Value 1', 'New Value 2'], ['New Value 3', 'New Value 4'], ['New Value 5', 'New Value 6']]

for i, cell in enumerate(cell_list):
    cell.value = new_data[i//2][i%2]

sheet.update_cells(cell_list)

โดยจะใช้ method range() เพื่อระบุช่วงของ cell ที่ต้องการอัปเดตและสร้าง list ของ cell object จาก worksheet แล้วกำหนดค่าใหม่ลงไปด้วยการอ้างถึงตำแหน่งใน list และอัปเดตข้อมูลด้วย method update_cells()

 

การลบข้อมูลใน Google Sheet ด้วย Python

สามารถลบข้อมูลใน Google Sheet ได้ด้วยการใช้ method delete_rows() หรือ clear() ของ library gspread โดยอาจใช้ร่วมกับ method อื่นๆ เช่น find() เพื่อค้นหาแถวที่ต้องการลบก่อน ดังนี้

  • delete_rows(start_row, end_row=None) เป็น method สำหรับลบแถวที่เริ่มต้นจาก start_row ไปจนถึง end_row (ถ้าไม่กำหนด end_row จะลบแถวเพียงแถวเดียว)
  • clear(start='A1', end=None) เป็น method สำหรับลบข้อมูลทั้งหมดในช่วงของ cell ตั้งแต่ start ถึง end (ถ้าไม่กำหนด end จะลบข้อมูลใน cell ทั้งหมดตั้งแต่ start เป็นต้นไป)

ตัวอย่างเช่น หากต้องการลบแถวที่มีค่าในคอลัมน์ A เป็น “delete” จะเขียนโค้ดได้ดังนี้

import gspread
from oauth2client.service_account import ServiceAccountCredentials

# กำหนด scope ของ Google Sheet API
scope = ['https://spreadsheets.google.com/feeds','https://www.googleapis.com/auth/drive']

# กำหนดชื่อไฟล์ credential และ path ไปยังไฟล์
creds = ServiceAccountCredentials.from_json_keyfile_name('credentials.json', scope)

# เข้าถึง Google Sheet ด้วย Credentials
client = gspread.authorize(creds)

# เลือก Google Sheet ที่ต้องการลบข้อมูล
sheet = client.open('ชื่อ Google Sheet ที่ต้องการลบข้อมูล').sheet1

# ค้นหาแถวที่มีค่า "delete" ในคอลัมน์ A
cell = sheet.find("delete")
row = cell.row

# ลบแถวนั้นๆ
sheet.delete_row(row)

หรือถ้าต้องการลบข้อมูลทั้งหมดในช่วง A1:C10 ก็ใช้ method clear() ได้ดังนี้

sheet.clear('A1', 'C10')

 

ประโยชน์ของการใช้งาน API จากการเชื่อมต่อกับ Google Sheet ด้วย Python มีอย่างมาก เช่น

  1. ความสะดวกสบายในการเข้าถึงและจัดการข้อมูลใน Google Sheet โดยอัตโนมัติ

  2. ช่วยลดเวลาและความยุ่งยากในการบริหารจัดการข้อมูลใน Google Sheet หรือในการสร้างและแชร์สำหรับคนอื่น

  3. ช่วยเพิ่มความแม่นยำในการจัดการข้อมูล และลดความผิดพลาดที่อาจเกิดขึ้นในกระบวนการและข้อมูล

  4. ช่วยสร้างโปรแกรมและแอปพลิเคชันที่ใช้งาน Google Sheet เพื่อการวิเคราะห์ข้อมูล สรุปผล หรืออื่นๆ

  5. ช่วยสร้างการทำงานเชิงอัตโนมัติใน Google Sheet ที่มีการใช้งานบ่อยๆ และลดการบันทึกข้อมูลด้วยมือ

  6. เป็นการเรียนรู้การใช้งาน API และการจัดการข้อมูลในรูปแบบต่างๆ ซึ่งเป็นทักษะที่น่าสนใจและสามารถนำไปใช้งานได้ในงานต่างๆ

การประยุกต์ใช้งาน API จากการเชื่อมต่อกับ Google Sheet 

  • สำหรับธุรกิจหรือองค์กรที่มีข้อมูลที่ต้องการอัปเดตใน Google Sheet อยู่เป็นประจำ เช่น ข้อมูลสินค้า, ราคาสินค้า, รายชื่อลูกค้า ฯลฯ สามารถเขียนโปรแกรม Python ที่เชื่อมต่อ API Google Sheet เพื่ออัปเดตข้อมูลเหล่านี้ได้โดยอัตโนมัติ เพิ่มความสะดวกและลดเวลาในการจัดการข้อมูล

  • สำหรับนักพัฒนาซอฟต์แวร์ เพื่ออ่านข้อมูลหรือสร้างข้อมูลใน Google Sheet เพื่อนำไปใช้ในการพัฒนาซอฟต์แวร์ต่อไป ยกตัวอย่างเช่น ใช้ข้อมูลจาก Google Sheet เพื่อสร้างระบบรายงานสถิติการใช้งานแอปพลิเคชันต่างๆ

  • สำหรับผู้ที่ต้องการแชร์ข้อมูลจาก Google Sheet ให้คนอื่นสามารถเข้าถึงได้ สามารถใช้ API Google Sheet เพื่อสร้างหน้าเว็บที่เป็นตัวกลางในการแสดงผลข้อมูลจาก Google Sheet โดยสามารถปรับแต่งรูปแบบและการแสดงผลของข้อมูลได้ตามต้องการ

  • การจัดเก็บและควบคุมงบประมาณ ใช้ในการบันทึกและจัดเก็บข้อมูลงบประมาณของตนเองหรือขององค์กร โดยสามารถเชื่อมต่อกับ API Google Sheet เพื่ออัพเดตข้อมูลงบประมาณได้โดยอัตโนมัติ และสามารถสรุปข้อมูลด้วยฟังก์ชันทางคณิตศาสตร์ได้ง่ายๆ

  • การจัดการข้อมูลการติดต่อ ใช้ในการบันทึกข้อมูลการติดต่อของลูกค้าหรือผู้ติดต่อของตนเอง โดยสามารถเชื่อมต่อกับ API Google Sheet เพื่อเพิ่มและอัพเดตข้อมูลการติดต่อได้โดยอัตโนมัติ และสามารถส่งอีเมล์หรือส่งข้อความแจ้งเตือนได้ด้วย

  • การจัดการเอกสารและรายงาน  ใช้ในการจัดทำเอกสารและรายงานต่างๆ เช่น รายงานการเงิน, รายงานผลการดำเนินงาน หรือการจัดทำแผนธุรกิจ โดยสามารถเชื่อมต่อกับ API Google Sheet เพื่อเพิ่มและอัพเดตข้อมูลในรายงานได้โดยอัตโนมัติ

  • การจัดการข้อมูลที่เกี่ยวข้องกับการวิเคราะห์ ใช้ในการจัดเก็บและจัดการข้อมูลที่เกี่ยวข้องกับการวิเคราะห์ เช่น ข้อมูลการวิเคราะห์หุ้น เป็นต้น

  • การจัดการงานที่มีการแชร์ข้อมูลระหว่างผู้ใช้งาน: การใช้งาน Google Sheet API สามารถช่วยในการสร้างและแชร์ข้อมูลได้อย่างรวดเร็วและง่าย โดยสามารถสร้าง Google Sheet และกำหนดสิทธิ์การเข้าถึงข้อมูลให้กับผู้ใช้งานได้ตามต้องการ

  • การเก็บรวบรวมและวิเคราะห์ข้อมูล: การใช้งาน Google Sheet API สามารถช่วยในการเก็บรวบรวมข้อมูลจากหลายแหล่งได้อย่างสะดวก และสามารถนำข้อมูลที่เก็บรวบรวมมาวิเคราะห์ได้ง่ายขึ้น โดยสามารถนำข้อมูลไปสร้างกราฟและแผนภูมิต่างๆ ได้ตามต้องการ

  • การสร้างและบันทึกรายการการชำระเงิน: การใช้งาน Google Sheet API สามารถช่วยในการสร้างและบันทึกรายการการชำระเงินได้อย่างง่ายดาย โดยสามารถนำข้อมูลการชำระเงินที่ได้รับมาบันทึกลงใน Google Sheet และสร้างรายงานการชำระเงินอัตโนมัติได้

  • การจัดการการติดตามโครงการ: การใช้งาน Google Sheet API สามารถช่วยในการจัดการโครงการและการติดตามความคืบหน้าได้อย่างสะดวกมากขึ้น