DEV Community

ksupdev
ksupdev

Posted on

Python connect Google sheets by Google API

อันเนื่องมาจาก ผมต้องการ Implement service สักตัวโดยที่ไม่ต้องมี Database หรือ Web server มันไม่ใช้เรื่องความมันหรือว่าอะไรหรอกครับแต่มันเป็นงานที่เรียนมิใช่งานบริษัท จึงทำให้เกิดเรื่องราวนี้ขึ้นมา 55555+

Create Google sheets

จากที่รองไปหาข้อมูลมาจาก Google นะครับ เราจะต้องเริ่มจากการสร้าง Google sheets ใน Google drive ก่อนเลย

Alt Text

และต้องอย่าลืมกำหนดชื่อของ google sheets ด้วยนะครับ ^^

Alt Text

เอาให้มันชัดๆไปเลย

Config Google Service Account

โดยเราจะต้องไปที่ developer console โดยจะต้องเข้าใช้งานผ่าน google account ของเราน้นเอง

- Create google project
ทำการสร้าง project ของเราหรือถ้าเรามี project ในนี้อยู่แล้วก็สามารถเอามาใช้ได้นะครับ โดยส่วนตัวผมจะทำการสร้าง project เพื่อที่จะง่ายในการ manage และควบคุม permission ต่างๆได้ง่าย

Alt Text

- Enable Google service
เราจะทำการ enable Google Sheets API และ Google Drive API สำหรับ project ของเรา

Google Sheets API จะใช้สำหรับกำหนด permission สำหรับการจัดการข้อมูลภายใน google sheets ของเรา
Alt Text

Google Drive API ใช้สำหรับการ access resource ต่างๆภายใน google drive

Alt Text

- Create credentials
ทำการกดปุ่ม + CREATE CREDENTIALS และทำการเลือก Service account

กรอกข้อมูล Service account

Alt Text

ทำการ grant permission สำหรับ project
Alt Text

หลังจากนั้นเราก็จะได้ service account เพื่อนำไปใช้งานต่อไปครับ
Alt Text

- Download credential

เลือก service account ที่เราได้ทำการสร้างขึ้นและเลือกไปที่ tabs KEY จากนั้นให้ทำการกดไปที่ปุ่ม ADD KEY และเลือก Create new key

Alt Text

ทำการเลือก Key type เป็น json และทำการกดปุ่ม create

Alt Text

หลังจากนั้นเราก็จะได้ไฟล์ key เพื่อเอาไปใช้ใน project ของเรา
Alt Text

- setup google sheets permission
ทำการเปิด file ที่เราได้ทำการ download มา และทำการ copy client_email

Alt Text

ไป google sheets ของเราและทำการกำหนด email ที่ได้จาก client_email
Alt Text

Python connect to google sheet

ในส่วนนี้ผมอาจจะขออธิบาย source code แค่นิดหน่อยก่อนนะครับ แล้วถ้า project ของผมเรียบร้อยจะขอมาให้ข้อมูลเพิ่มเติมครับ

Project Layouts

pans_apis
  |-- /repository
        |-- food_repository.py
  |-- credential_file.json
Enter fullscreen mode Exit fullscreen mode

repository จะทำหน้าที่ในการเก็บส่วนในการเชื่อมต่อฐานข้อมูลซึ่งตอนนี้ผมมองว่า google sheets ของผมนั้นก็คือฐานข้อมูลนั้นเองครับ โดยใน folder จะมี food_repository.py โดยในส่วนนนี้จะเป็นส่วนที่ใช้ในการเชื่อมต่อกับ google sheet ของเรา

credential_file.json จะทำหน้าที่เก็บข้อมูล credential ที่เราได้ทำการ Download มากจาก google console ในตัวอย่างด้านบนครับ

และด้านล่างนี้คือตัวอย่าง code ที่ผมใช้ครับ

import gspread
import pandas as pd
from oauth2client.service_account import ServiceAccountCredentials

from pprint import pprint


# define the scope
scope = ['https://spreadsheets.google.com/feeds','https://www.googleapis.com/auth/drive']
credential = ServiceAccountCredentials.from_json_keyfile_name("credential_file.json",scope)

# authorize the clientsheet 
client = gspread.authorize(credential)

sheet = client.open('api-database')
sheet_instance = sheet.worksheet("Table_Food_In_Ref") 

# get all the records of the data
records_data = sheet_instance.get_all_records()
# convert the json to dataframe
records_df = pd.DataFrame.from_dict(records_data)

# view the top records
print(records_df.head())

Enter fullscreen mode Exit fullscreen mode

โดยจะมีจุดที่สำคัญก็คือในส่วนของการ เรียกใช้งาน credential

credential = ServiceAccountCredentials.from_json_keyfile_name("credential_file.json",scope)
Enter fullscreen mode Exit fullscreen mode

และก็จะมีการระบุ google sheet name api-database และ sheet Table_Food_In_Ref

sheet = client.open('api-database')
sheet_instance = sheet.worksheet("Table_Food_In_Ref") 
Enter fullscreen mode Exit fullscreen mode

โดยในส่วนของการเชื่อมต่อ google sheets ผมจะข้อจบไว้ประมาณนี้ก่อนแล้วกันนะครับ แล้วเดียวพบกันในส่วนที่จะทำ flask python มาเชื่อมต่อครับผม

อันนี้เป็นแหล่งข้อมูลที่ผมใช้นะครับ

ขอบคุณครับ

Top comments (0)