Google Cloud FunctionsからスプレッドシートAPIをPythonで操作する
はじめに
タイトル通りのことがしたかったんだけど、意外とこの組み合わせのサンプルっぽいものが無かったのです記録に残しておく。
サンプルリポジトリ作りました。
スプレッドシートAPIを有効にする
まずはじめに、GoogleのデベロッパーコンソールからスプレッドシートAPIを有効にする。
ここから、プロジェクトを選択する。
そしたら、検索ボックスから「Sheets API」を検索して、有効化する。
サービスアカウントのアドレスをスプレッドシートに登録する
まずはGCPコンソールにログイン。
左上のナビゲーションメニューからIAMと管理>サービスアカウントを選択する。
そしたら、名前がApp Engine default service account
のメールをコピーする。
コピーしたらそのアドレスをスプレッドシートの共有設定に登録する。
最後にスプレッドシートの以下部分をコピーしておく。
あとで、SPREADSHEET_KEY
として使う。
https://docs.google.com/spreadsheets/d/{ここの部分!}/edit#gid=0
設定はこれでおしまい。
ソースコード
import gspread import google.auth def main(event, context): # ここで認証情報を取得する。デフォルトのサービスアカウントが適用される credentials, _ = google.auth.default(scopes=['https://spreadsheets.google.com/feeds', 'https://www.googleapis.com/auth/drive']) # ここでスプレッドシートの認証 gc = gspread.authorize(credentials) # 先ほどコピーしたスプレッドシートキーを変数に SPREADSHEET_KEY = '{your-spreadsheet-key}' # sheet1を取得 worksheet = gc.open_by_key(SPREADSHEET_KEY).sheet1 import_value = int(worksheet.acell('A1').value) export_value = import_value + 100 worksheet.update_cell(1, 2, export_value)
上記のような感じで操作する。
なかなか認証周りの資料がない中、そのプロジェクトのデフォルトのサービスアカウントの情報をスプレッドシートに登録しておけばjsonファイル等がなくても操作できることがわかった。