プライベートで、Google スプレッドシートにまとめたデータを APIを使って取得したいという事があった。
以下の手順でやることができる。
サービスアカウントを作って、鍵ファイルを取得する
次にスプレッドシート側で、サービスアカウントに権限を与える必要がある
- Google スプレッドシートでサービスアカウントにスプレッドシートを共有する
APIを使ってデータを取得する
作成してダウンロードしておいた鍵ファイルを使って、以下のようにデータが取得できる。
from google.oauth2 import service_account from googleapiclient.discovery import build credentials = service_account.Credentials.from_service_account_file('./path/to/credential.json') scoped_credentials = credentials.with_scopes( ['https://www.googleapis.com/auth/spreadsheets.readonly'] ) service = build('sheets', 'v4', credentials=credentials) spreadsheet_id = 'sheet-id' range_name = 'Sheet1!A1:B100' sheet = service.spreadsheets() result = sheet.values().get(spreadsheetId=spreadsheet_id, range=range_name).execute() values = result.get('values', [])
まとめ
便利だけど、サービスアカウント作るのが面倒に感じた。
共有ボタンでサービスアカウントに共有できるというのに最初気が付かなくて、どうやって権限与えるのか迷った。 共有ボタンからサービスアカウントにも共有できるのが面白い。
Notionのデータベースで同様のことをしようとするとAPIキーを作って取得できるので、Notionのほうが敷居が低いと感じた。