Googleスプレッドシートはオンラインで表計算が行える強力なツールです。GASというスクリプト言語で自動処理することができますが、手軽にNode-REDのフローからデータを扱うこともできます。
そこで、今回は、Googleスプレッドシート・ノードの使い方をご案内します。
作りたいフローのイメージ
例えば、Googleスプレッドシートのデータをfunctionノードで処理して、メールする、というフローを考えます。
Emailノードの設定方法は別の記事に記載していますので、そちらをご覧ください。
API 認証の秘密鍵を取得
google Developers Consoleにアクセスし、新規プロジェクトを作成します。
任意のプロジェクト名を入力し、「作成」ボタンをクリックします。
スプレッドシートをAPI操作する為にgoogleサービスアカウントを作成します。
認証情報画面で「サービスアカウントを管理」にアクセスします。
「サービスアカウント」でサービスアカウントを作成」ボタンをクリックします。
サービス アカウント名を入力し、「作成」ボタンをクリックします。
サービス アカウントの権限(オーナーなど)を選択し、「続行」ボタンをクリックします。
作成したサービスアカウントに「鍵を作成」をクリックします。
出てくるポップアップでJSONを選択し、「作成」をクリックします。
秘密鍵のjsonファイルが自動にダウンロードされます。
作成したサービスアカウントのメールアドレス(少し長いです。)をテキストでコピーしておきます。
スプレッドシートAPIの有効化
コンソールの検索から今回作ったプロジェクトのGoogle Sheets APIを検索します。
Google Sheets APIの有効にするボタンを押して有効化します。
スプレッドシートの設定
フローで利用するスプレッドシートの共有ボタンをクリックします。
「ユーザを追加」の欄に作成したユーザーアカウントのメールアドレスを入力し、作成したサービスアカウントにスプレッドシートを共有します。
GoogleスプレッドシートのURLに含まれる文字列がスプレッドシートを特定するIDです。
https://docs.google.com/spreadsheets/d/*****スプレッドシートID*****/edit#gid=0
また、Googleスプレッドシートノードで使用するシート名を覚えておきます。
ノードの設定
ノードのプロパティ画面でcredsの編集ボタンをクリックします。
先ほどの秘密鍵のjsonの内容をそのまま貼り付けます。「Update」ボタンをクリックします。
データ取得
Methodは適切なものを選びます。例えば、セルのデータを取得したいときはGet Cellsを選択します。
SpreadsheetIDに、先ほどサービスアカウントに共有したスプレッドシートのIDを入力します。
Cellsには、データを取得する範囲を指定します。全部のシートの内容を取得する場合はシート名だけを入力します。
右上のDoneをクリックします。
フローをデプロイして保存しましょう。
以上で、ノードを使用する準備が整いました。
まずはDebugノードで取得できるかどうかを確認しましょう。
データ追加
データを追加したい場合は、MethodをAppend Rowに変更します。Cellsには、入力したいセルを指定します。
1行だけ追加する場合、例えば、[1,2,3]という配列をpayloadで渡してみます。
3行一気に追加することもできます。例えば、[[1,2,3],[4,5,6],[7,8,9]]という配列をpayloadで渡してみます。
先ほどの1行目のあとの2行目から3行が追加されています。
まとめ
今回は、Googleスプレッドシート・ノードを設定する方法をご紹介しました。
ぜひ試してみてください。