今天來介紹如何使用Python寫入Google Sheet的方法
整個流程很單純,只是新手比較常碰到GOOGLE設定上的問題
一、先到 Google Developers Console 建立一個 Project
- 先於左上方新增專案
- 為專案命名
- 啟用完成
二、啟用專案的 Sheet API
- 點選【啟用API和服務】
- 搜尋Sheet API並點選啟用
三、為API建立憑證
- 於上方有提示訊息,直接點選建立憑證
- 點選後會看到下述畫面
共有4個選項
Q.您目前使用哪個 API?
選擇 Google Sheet API
※假設今天使用其他的API就選其他的(廢話)
Q.API 的呼叫來源為何?
選擇 其他非使用者介面
※因為我們使用Pyhon如今天採用其他的方式呼叫就選別的了
Q.您需要存取什麼資料?
選擇 應用程式資料
※使用者資料比較像是登入註冊等等時來使用
Q.您準備搭配 App Engine 或 Compute Engine 使用此 API 嗎?
選擇 否
※如果有搭配到GAE可以選
選擇完成後就點選取得憑證
- 會跳轉至下列畫面
我們就為服務帳戶命名
※這個服務帳戶就類似你專案的一個帳戶,可以用來管理你的API憑證你也可以設置他的權限等等..
金鑰類型選擇JSON格式
完成後點選下載
將下載的json檔案放入待會Python專案目錄下
- 檔案打開會有類似資訊,先將client_email複製起來
- 我們建立一個sheet並且與剛剛複製的client_email一起共用
繁瑣的設定完成 ! 剩下程式的部分
三、Python透過憑證連線
自訂一個函式為auth_gss_client
import gspread
import time #待會會取時間
from oauth2client.service_account import ServiceAccountCredentials
auth_json_path = 'auth.json' #由剛剛建立出的憑證,放置相同目錄以供引入
gss_scopes = ['https://spreadsheets.google.com/feeds'] #我們想要取用的範圍
gss_client = auth_gss_client(auth_json_path, gss_scopes) #呼叫我們的函式
def auth_gss_client(path, scopes):
credentials = ServiceAccountCredentials.from_json_keyfile_name(path, scopes)
return gspread.authorize(credentials)
#從剛剛建立的sheet,把網址中 https://docs.google.com/spreadsheets/d/〔key〕/edit 的 〔key〕的值代入
spreadsheet_key_path = '〔key〕'
#我們透過open_by_key這個method來開啟sheet
sheet = gss_client.open_by_key(spreadsheet_key_path).sheet1
#單純取出時間稍後塞入sheet
today = time.strftime("%c")
#透過insert_row寫入值 第二行塞入時間,abc,123的值
sheet.insert_row([today,"abc", 123], 2)
以上完成 !! 有任何問題歡迎留言發問
有錯誤也請提醒 感謝
常見錯誤:
ImportError: cannot import name 'ServiceAccountCredentials'
一開始我不知道為何取用到1.5.2的版本導致他根本找不到ServiceAccountCredentials解法如下:
●先確認目前OAuth版本
可透過下列程式碼顯示
import oauth2client
print (oauth2client.__version__)
●透過cmd再次更新版本 pip install --upgrade oauth2client
參考文章:
https://city.shaform.com/zh/2016/03/19/gspread/
Python大數據特訓班電子書
你好請問如果發佈到heroku上,去出現 ModuleNotFoundError: No module named 'gspread'
回覆刪除這應該要怎麼解決
在其他地方自己執行卻可以正常使用
Hi
刪除這個問題應該是heroku上找不到這個套件
我很久沒部屬到heroku上 我幫你搜了一下
你有將你要使用的套件資訊放到requirements.txt這份文件裡嗎?
你可以看看https://devcenter.heroku.com/articles/python-pip