GCP
Firestore
Python
Google Sheets
在前面Cloud Function的延伸應用提到Google Sheets是個很方便的工具
此章專注於教學應該如何使用 Firestore 來與 Google Sheets 做連結
建立Google API
https://console.developers.google.com/
pip install pygsheets
:在python上上傳資料到google試算表pip install pandas
:方便進行資料處理在取得 Google Sheets 的編輯權限與下載套件後,我們就能正式學習如何以 Python 讀寫 Google Sheets 了
小提醒
記得前往此處或打開憑證的json檔,複製email並且於google sheets共用該email。
取得憑證後只需要用 Google Sheets 的 ID 就可以連接,不過用 url 可以直接點過去看一下也是滿方便的。
承接前段,sh
變數 如果執行會得到 <Spreadsheet 'firebase_test' Sheets:1>
,也就是「專案名稱」與「共有幾個資料表」,所以還需要指定資料表的名稱,才能讀取資料。
小提醒:這個套件在
get_as_df()
預設會自動轉換可能是數字的資料,所以即使資料內容是文字的 ‘0001’ 也是會被轉成數字 1 ,只要多加入參數 numerize=False
就能避免這個問題。
如果想避免用 get_as_df()
設定上的麻煩,最快的方法就是先輸出 csv 再讀進來。(下方 四、進階課程 會教學)
學會了(一)、(二)之後就可以直接把資料轉為dataframe再用pandas做資料的處理,不過處理後應該如何寫入資料呢?可分為兩種方式:
update_value('儲存格位置', '更改值')
:更改單一值,例如更改A1儲存格為test
set_dataframe(插入的df, '起始位子', copy_index=True, nan='')
:直接插入dataframe
小提醒:
copy_index=True
將dataframe的index也填入Google Sheets裡nan=""
將資料空值以空字串填入我們也可以直接將前三部份統整為自定義函數,直接匯出dataframe格式的資訊
從第三部份我們可以知道「用Python連接Google Sheets」其實是一件很簡單的事情,不過其實認證問題卻很麻煩,上面的教學我們是以認證json檔的路徑來獲得金鑰內容,那如果我們使用 Cloud Function 這種雲端伺服器架構我們要如何使用「以Python連接Google Sheets」這個功能呢?
主要就是先將json檔用記事本打開,再使用ctrl+A將所有內容複製自
temp.write(json.dumps("json中的key").encode('utf8'))
中即可
小提醒:
json.dumps
是用來將Python對象編碼成JSON字符串,由於字符串會有編碼問題,所以務必在後頭補上.encode('utf8')
來指定編碼接著呼叫認證的function
以往的gc = pygsheets.authorize(service_account_file='path/to/key.json')
直接取代為下方3、4列程式碼的部分即可
前面有提到,如果想避免用get_as_df
設定上的麻煩,最快的方法就是先輸出 csv 再讀進來。
輸出與讀取
寫成 functions
使用範例