อันเนื่องมาจาก ผมต้องการ Implement service สักตัวโดยที่ไม่ต้องมี Database หรือ Web server มันไม่ใช้เรื่องความมันหรือว่าอะไรหรอกครับแต่มันเป็นงานที่เรียนมิใช่งานบริษัท จึงทำให้เกิดเรื่องราวนี้ขึ้นมา 55555+
Create Google sheets
จากที่รองไปหาข้อมูลมาจาก Google นะครับ เราจะต้องเริ่มจากการสร้าง Google sheets ใน Google drive ก่อนเลย
และต้องอย่าลืมกำหนดชื่อของ google sheets ด้วยนะครับ ^^
เอาให้มันชัดๆไปเลย
Config Google Service Account
โดยเราจะต้องไปที่ developer console โดยจะต้องเข้าใช้งานผ่าน google account ของเราน้นเอง
- Create google project
ทำการสร้าง project ของเราหรือถ้าเรามี project ในนี้อยู่แล้วก็สามารถเอามาใช้ได้นะครับ โดยส่วนตัวผมจะทำการสร้าง project เพื่อที่จะง่ายในการ manage และควบคุม permission ต่างๆได้ง่าย
- Enable Google service
เราจะทำการ enable Google Sheets API และ Google Drive API สำหรับ project ของเรา
Google Sheets API จะใช้สำหรับกำหนด permission สำหรับการจัดการข้อมูลภายใน google sheets ของเรา
Google Drive API ใช้สำหรับการ access resource ต่างๆภายใน google drive
- Create credentials
ทำการกดปุ่ม + CREATE CREDENTIALS
และทำการเลือก Service account
กรอกข้อมูล Service account
ทำการ grant permission สำหรับ project
หลังจากนั้นเราก็จะได้ service account เพื่อนำไปใช้งานต่อไปครับ
- Download credential
เลือก service account ที่เราได้ทำการสร้างขึ้นและเลือกไปที่ tabs KEY
จากนั้นให้ทำการกดไปที่ปุ่ม ADD KEY
และเลือก Create new key
ทำการเลือก Key type เป็น json
และทำการกดปุ่ม create
หลังจากนั้นเราก็จะได้ไฟล์ key เพื่อเอาไปใช้ใน project ของเรา
- setup google sheets permission
ทำการเปิด file ที่เราได้ทำการ download มา และทำการ copy client_email
ไป google sheets ของเราและทำการกำหนด email ที่ได้จาก client_email
Python connect to google sheet
ในส่วนนี้ผมอาจจะขออธิบาย source code แค่นิดหน่อยก่อนนะครับ แล้วถ้า project ของผมเรียบร้อยจะขอมาให้ข้อมูลเพิ่มเติมครับ
Project Layouts
pans_apis
|-- /repository
|-- food_repository.py
|-- credential_file.json
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())
โดยจะมีจุดที่สำคัญก็คือในส่วนของการ เรียกใช้งาน credential
credential = ServiceAccountCredentials.from_json_keyfile_name("credential_file.json",scope)
และก็จะมีการระบุ google sheet name api-database
และ sheet Table_Food_In_Ref
sheet = client.open('api-database')
sheet_instance = sheet.worksheet("Table_Food_In_Ref")
โดยในส่วนของการเชื่อมต่อ google sheets ผมจะข้อจบไว้ประมาณนี้ก่อนแล้วกันนะครับ แล้วเดียวพบกันในส่วนที่จะทำ flask python มาเชื่อมต่อครับผม
อันนี้เป็นแหล่งข้อมูลที่ผมใช้นะครับ
- https://docs.gspread.org/en/latest/user-guide.html
- https://www.analyticsvidhya.com/blog/2020/07/read-and-update-google-spreadsheets-with-python/
ขอบคุณครับ
Top comments (0)