Node-RED でGoogleスプレッドシート に読み書きする方法を毎回忘れるので、自分用備忘録を兼ねてここに書き留めておきます。
Google Cloud Platform での設定
API発行
Google Cloud Platform を開く
https://console.cloud.google.com/apis/dashboard
新しいプロジェクトができたら
「Google Sheets API」 を検索し、「有効にする」をクリック
API キーを控えておく
鍵の作成
サービス アカウントの権限(オーナーなど)を選択し、「続行」ボタンをクリックします。
自分以外に許可する場合は入力だと思う。(違ったらすいません)
秘密鍵のJSONファイルがダウンロードされる。
あとで使うので保存場所を覚えときましょう。
そして、作成したサービスアカウントのメールアドレスを控えておきます。
Googleスプレッドシートの設定
Googleスプレッドシートの該当のファイルを開き、
「共有」をクリック
「ユーザやグループを追加」に先ほどのサービスアカウントのメールアドレスを入力
GoogleスプレッドシートのURLから、SpreadSheetIDを控える。 (後で使う)
以下のように、d/ と /edit の間がSpreadSheetIDです。
https://docs.google.com/spreadsheets/d/{SpreadSheetID}/edit#gid=0
enebular
Gsheetノードをインポート
ノードについての詳細はこちらを参照
https://flows.nodered.org/node/node-red-contrib-google-sheets
1、ノードを追加
2、「Gsheet」 で検索
3、ノードを追加
「ノードをパレットに追加しました」とメッセージが出たらOK
Googleスプレッドシートからデータを取得
GSheet ノードをダブルクリック
さきほど作成した鍵のJSON をメモ帳などエディターで開き、JSONの内容をすべてコピーして、Creds へペーストする。
次にGSheetノードを以下のように編集する。
- Method : Get Cells
- SpreadsheetID : さきほど控えたSpreadsheetID
- Cells : シート名+セル
セルは複数選択できる。
(例)A2:A100 、 A2:E10
これで、Injectノードを実行すると、デバッグウィンドウにGoogleスプレッドシートの値が表示されます。
Googleスプレッドシートにデータを入力
Gsheet ノードのMethod を Append Row にするだけ。
Inject ノードを実行すると、userシートのセルA2にタイムスタンプが書き込まれる。
A2にすでになにかデータがある場合はA3に書き込まれる。
ちなみに、Update Cells だと、セルを上書きする。
Clear Cells だと、セルの情報を消去する。
以上、Googleスプレッドシートの読み書きは、コードを書くと結構面倒だけど、このノードのおかげで結構簡単にできる。