Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8691

nodeJSとGoogleSpreadSheet(スプレッドシート)を連携する方法

$
0
0

nodeJSとスプレッドシートを連携して、スプレッドシート上の値を取得するところまでを解説します。

順序
①. auth情報を取得する
②. スプレッドシート側で権限を確認する
③. nodeJSのコードを書いて実行する

の3本立てで説明しました。

①. auth情報を取得する

Google Cloud Platform(Google API)でGoogleSpreadSheetのAPIを有効化させます。すでに"サービスアカウント"の認証情報のjsonを持っている人は不要です

「プロジェクトの選択」→「新しいプロジェクト」へ。
image.png

image.png
必須の入力箇所のみ適当に入れてあとは空白(もしくは任意)で進めていきます。
image.png
プロジェクトを立てたら「APIとサービス」へいって下記の流れでGoogle Spread Sheet APIを有効化させます。
image.png

image.png

image.png

image.png

image.png

画面の左端の方の「認証情報」をクリックしてから「認証情報を作成」をクリックします。下記の流れで"サービスアカウント"を作成してキーの入ったjsonファイルをDLします。
image.png

image.png
必須項目より他は空白で大丈夫です(もしくは任意)
image.png
画面左端の「認証情報」のページを改めて開くと"サービスアカウント"の中にアカウントが追加されているのでクリックします。
image.png

ここでjsonファイルとして鍵をDLすればGoogle API側の準備は完了です。
image.png

②. スプレッドシート側で権限とスプレッドシートIDを確認する

次に対象となるスプレッドシート側で権限を確認しましょう。。
image.png

ユーザーやグループと共有の中に自分が権限を与えたいメールアドレスが含まれているかどうかを確認し、なければ追加します。
image.png

ここで、①. で用意した秘密鍵の中身を確認してください。

{
  "type": "service_account",
  "project_id": "test",
  "private_key_id": "hoge",
  "private_key": "hoge,
  "client_email": "ここにスプレッドシート側で権限が付与されているメールアドレスを入力する",
  "client_id": "hoge",
ー以下略ー
}

client_emailの中のメールアドレスはスプレッドシート側で権限を付与されたメールアドレスになります。

次にスプレッドシートIDを確認します。
スプレッドシートのページのURLに含まれており、ランダムな英字と記号となっています。スプレッドシートの部分をコピーしておきます。
https://docs.google.com/spreadsheets/d/スプレッドシートID/edit=hoge

③. nodeJSのコードを書いて実行する

では①. と ②.の過程で準備した情報を使って見ます。ライブラリを用意。

yarn add google-spreadsheet-as-promised
or
npm install --save google-spreadsheet-as-promised

Auth認証→スプレッドシートの1行目のAからDまでを取得するコードです。スプレッドシートに適当な文字を入力して、下記コードを実行してみてください。

spreadsheet.js
constGoogleSpreadsheetAsPromised=require('google-spreadsheet-as-promised');constCREDS=require('./GoogleCloudからDLしてきた鍵.json');constSHEET_ID='あなたのスプレッドシートID';constspreadSheet=async()=>{console.log('GoogleSpreadSheetへアクセス開始します');constsheet=newGoogleSpreadsheetAsPromised();;awaitsheet.load(SHEET_ID,CREDS);console.log('auth完了');constworksheet=awaitsheet.getWorksheetByName('sheet1');constcells=(awaitworksheet.getCells('A1:D1')).getAllValues();// A1からD1までの値を取得するconsole.log(cells);return(sheet);}spreadSheet();
  const worksheet = await sheet.getWorksheetByName('sheet1');

のところは任意のシート名にします。読み込めなかった場合はシート名も見直してみてください。

結果として配列の結果が取得できたと思います。


Viewing all articles
Browse latest Browse all 8691

Trending Articles