Google Sheets APIを使ってみたので、その導入から使い方までのメモ。
環境
Google Sheets APIの有効化
pythonのプログラムを動かしてGoogle Sheets APIを有効化します。
そのためにこちらのページに行きます。
ここのページに書かれている通りに進めるだけです。
Step 1: Turn on the Google Sheets API
青ボタンのENABLE THE GOOGLE SHEETS APIをクリックします。
クリックすると、この画面が出るので
Select or create projectをクリックし、
Create a new projectをクリックすると、この画面が出てきます。
デフォルトでMy Projectとなっていたので、私はそのままNEXTをクリックしました。
NEXTをクリックすると、上のConfigure your OAuth clientの画面が出るので、私はProduct Nameのところを適当にTestという名前にしました。
NEXTをクリックすると、下の画面が出てきます。
青ボタンのDOWNLOAD CLIENT CONFIGURATIONをクリックすると、credentials.jsonがダウンロードフォルダにダウンロードされます。
Step 2: Install the Google Client Library
コマンドプロンプトを開いて、下のコマンドを実行するだけです。
Step 3: Set up the sample
作業ディレクトリに移動して、下のコードをquickstart.py
で作ります。
ちなみに、ダウンロードフォルダにあるはずのcredentials.jsonも同じ作業ディレクトリに入れときます。
Step 4: Run the sample
コマンドプロンプトを開いて、quickstart.py
を実行すると、下のようにブラウザが開いて、アカウントの選択画面が表示されます。
Googleアカウントへのアクセスを求められているので、これを許可します。
許可すると、The authentication flow has completed.とブラウザに表示されて、作業ディレクトリにtokens.jsonが作成されているはずです。
エラーがでる
おそらく、quickstart.py
を実行すると以下のようなエラーがでると思います。
raise HttpError(resp, content, uri=self.uri)
googleapiclient.errors.HttpError: <HttpError 403 when requesting
https://sheets.googleapis.com/v4/spreadsheets/1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms/values/Class%20Data%21A2%3AE?alt=json
returned "Google Sheets API has not been used in project
どうやら、まだ認証が完了していないみたいなので、エラー文にあるhttps://console.developers以下のURLにアクセスして青ボタンの有効化を押します。
before or it is disabled. Enable it by visiting
https://console.developers.google.com/apis/api/sheets.googleapis.com/overview?project=任意の番号 then retry.
If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry.">
スプレッドシートを読み込む
Google Sheets APIを有効化できたので、試しにスプレッドシートを読み込んでみます。今回は自分のブログアクセス数などを書き込んだシートを使います。
例えば、このシートのA1からA32を読み込むためにはquickstart.py
のSPREADSHEET_IDとRANGE_NAMEを以下のように変える必要があります。
スプレッドシートの編集画面を開くとURLはこんな感じになっています。https://docs.google.com/spreadsheets/d/{spreadsheetId}/edit#gid=0a
このURLにある{spreadsheedId}の文字の羅列をSPREADSHEET_IDのところに入れます。
読み込んだ結果
Name, Major: [['19'], ['54'], ['89'], ['52'], ['73'], ['42'], ['26'], ['38'], ['56'], ['55'], ['48'], ['37'], ['41'], ['16'], ['20'], ['17'], ['44'], ['50'], ['52'], ['43'], [], [], [], [], [], [], [], [], [], [], [], ['872']]
続き