以下の形でクライアントを作成している前提で書いていきます。
※herokuでデプロイする想定で作っているので環境変数から読み込むようになっていますがよしなに読み替えてください。
#2つのAPIを記述しないとリフレッシュトークンを3600秒毎に発行し続けなければならない
scope = ['https://spreadsheets.google.com/feeds','https://www.googleapis.com/auth/drive']
TYPE = os.getenv("GS_TYPE", "")
CLIENT_EMAIL = os.getenv("GS_CLIENT_EMAIL", "")
PRIVATE_KEY = os.getenv("GS_PRIVATE_KEY", "")
PRIVATE_KEY_ID = os.getenv("GS_PRIVATE_KEY_ID", "")
CLIENT_ID = os.getenv("GS_CLIENT_ID", "")
key_dict = {
'type' : TYPE,
'client_email' : CLIENT_EMAIL,
'private_key' : PRIVATE_KEY,
'private_key_id': PRIVATE_KEY_ID,
'client_id' : CLIENT_ID,
}
SPREADSHEET_KEY = os.getenv("SPREADSHEET_KEY", "")
credentials = ServiceAccountCredentials.from_json_keyfile_dict(key_dict, scope)
#OAuth2の資格情報を使用してGoogle APIにログインします。
gc = gspread.authorize(credentials)
新しいシート作成
gc.add_worksheet(title='test', rows=5000, cols=26)
rowとcolは必須のようです。
シートが存在するかチェック
worksheets = gc.worksheets() # シートの一覧が取得できる
for sheet in worksheets:
if 'シート1' == sheet.title:
return True
else:
return False
調べた限りシートが存在するかを答えてくれる関数はなかったのでこんな感じでやってます。