ただ、デバック時のちょっとしたデータ処理は、Raspberry PiからGoogle spreadsheetに登録して、グラフ化などしたくなる。
で、そのメモ(^^)
1.処理内容
Raspberry Piのpythonスクリプトから、共有設定されたspreadsheetにデータを登録・更新・削除などする。今回は、追加(append)処理サンプル。
2. 作業の順番
2.1 Google 側の設定と準備
(1) Google API 有効化・Google API Consoleでプロジェクト(test)を作成し、Sheets APIを有効化
ここ!!→ click
以下、Google API Consoleは、「コンソール」表記
test プロジェクトで有効化します。 |
(2) 認証情報設定
・有効化した後、認証情報追加画面だけどcancelしてコンソールに戻る
・コンソールで認証情報選択する
・「サービスアカウントキー」を選択する
Raspberry Piから、処理をしたいのでこの項目を設定
サービスアカウントIDは、次の(3)で入力するので記録する
・作成ボタンを押下すると、Raspberry Pi側に置く認証ファイルのダウンロード処理になる。保存してRaspberry Piに転送する
(3) 処理対象となるspreadsheetを準備・設定
・spreadsheetを作成する。
本説明では
spreadsheet名「test01」
sheet名「data01」
sheetIDは、シートのURLの...../d/から/edit/....の間の文字列
・共有設定をする
(2)処理のサービスアカウントをユーザー欄に美優力する
役割は、「project > 編集者」で設定する
以上で、Google APIの設定、情報交換をする際の認証情報設定取得、スプレッドシートの設定が終了。
2.2 Raspberry Piの準備
Raspberry Pi側の準備。(1) pythonのクライアントモジュールインストール
python2.7環境
$ sudo pip install --upgrade google-api-python-client
おしまい(^^)
2.3 スクリプトを動かす
その前に、、、Google Sheets APIの説明は→click
サンプルプログラムの使い方の詳しい説明→click
スプレッドシートのA1:C1に、データを登録するスクリプトはドーン!
import httplib2
import numpy as np
from apiclient import discovery
from oauth2client.service_account import ServiceAccountCredentials
SCOPES = 'https://www.googleapis.com/auth/spreadsheets'
APPEND_RANGE = 'data01!A1:C1' ←シート名とセル位置
class GoogleSS(object):
def __init__(self, sheet_id):
self.sheetId = sheet_id
credentials = ServiceAccountCredentials.from_json_keyfile_name('./test-xxjjdfksgj.json', scopes=SCOPES) ←認証用のjsonファイル指定
http_auth = credentials.authorize(httplib2.Http())
discoveryUrl = ('https://sheets.googleapis.com/$discovery/rest?''version=v4')
self.service = discovery.build('sheets', 'v4', http=http_auth, discoveryServiceUrl=discoveryUrl)
def append(self, values): ←今回は追加モード
assert np.array(values).shape==(3,) , "The shape of value %s must be 3" % (np.array(values).shape)
value_range_body = {'values':[values]}
result = self.service.spreadsheets().values().append(spreadsheetId=self.sheetId, range=APPEND_RANGE, valueInputOption='USER_ENTERED', body=value_range_body).execute()
if __name__ == '__main__':
sheet = GoogleSS('49ga0igsia79w5u4igtaoeay75489hfadha') ←sheetID
sheet.append(["Kayak", "Love", 3]) ←追加するデータ
結果は、、、
ちなみに、3つ書くと、、、(他にもやり方ありますが、、、)
sheet.append(["Kayak", "Love", 1])
sheet.append(["PiroettoSS", "perception", 1])
sheet.append(["Antix", "Jackson", 1])
0 件のコメント:
コメントを投稿