<Google Cloud Platform, Python, gspread> Google Spread Sheet へアクセスする。

グーグル スプレッド シートGoogle Spread Sheetにアクセスする。

最初に下記へ行って、
1... Google Drive APIの発行、有効化、
2... サービス アカウント キーの作成、及びjson形式でキーのダウンロードをする。

console.cloud.google.com

ちと順を追って、、、

その1、 プロジェクトを作成する、を選ぶ。

f:id:nekoyukimmm:20161123192708p:plain

その2、 プロジェクト名を入れて、作成を押す。

f:id:nekoyukimmm:20161123192740p:plain

その3、 Google APIを利用する、を押す。

f:id:nekoyukimmm:20161123192816p:plain

その4、 APIを有効にする、を押す。

f:id:nekoyukimmm:20161123192851p:plain

その5、 Google Apps APIの下にある、Drive API、を押す。

f:id:nekoyukimmm:20161123192916p:plain

その6、 有効にする、を押す。

f:id:nekoyukimmm:20161123193006p:plain

その7、 認証情報、を選ぶ。

f:id:nekoyukimmm:20161123193043p:plain

その8、 サービスアカウントキー、を選ぶ。

f:id:nekoyukimmm:20161123193106p:plain

その9、 JSONを選んで、作成、を押す。

f:id:nekoyukimmm:20161123193130p:plain

その10、 キーがダウンロードされる。

f:id:nekoyukimmm:20161123193157p:plain

で、ちらっと、キーを見てみる。

In [27]: with open('Hage-xxxxx.json', 'r') as f:
    ...:     jd = json.load(f)
    ...:     print(json.dumps(jd, indent=4))
    ...:     
{
    "project_id": "xxxxx-xxxxxx",
    "token_uri": "https://accounts.google.com/o/oauth2/token",
    "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
    "client_email": "xxxxx-xxxxxx@appspot.gserviceaccount.com",
    "private_key_id": "xxxxx",
    "private_key": "-----BEGIN PRIVATE KEY-----xxxxx-----END PRIVATE KEY-----\n",
    "auth_uri": "https://accounts.google.com/o/oauth2/auth",
    "client_id": "xxxxxx",
    "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/xxxxx-xxxxx%40appspot.gserviceaccount.com",
    "type": "service_account"
}

なるへそ。

そのあと、Google Spread Sheet作って、共有するに上記キーのclient_emailを入力する。

で、実際にアクセス開始。

In [1]: import json

In [2]: import gspread

In [8]: from oauth2client.service_account import ServiceAccountCredentials

In [9]: scope = ['https://spreadsheets.google.com/feeds']

In [10]: doc_id = 'hogehogehagehagegoogleid'

In [11]: import os

In [15]: path = os.path.expanduser('./hagehage-xxxxxxxxxx.json')

In [16]: credentials = ServiceAccountCredentials.from_json_keyfile_name(path, scope)

In [17]: client = gspread.authorize(credentials)

In [18]: gfile = client.open_by_key(doc_id)

In [19]: worksheet = gfile.sheet1

In [20]: records = worksheet.get_all_values()

In [21]: for record in records:
    ...:     print(record)
    ...:     
['a', 'b', 'c']

おおー! できたー! すげー!

参考にさせてもらったところ。

qiita.com

Python3でGoogle SpreadsheetをDBのように利用する