LoginSignup
0
0

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-11-28

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
const GoogleSpreadsheetAsPromised = require('google-spreadsheet-as-promised');
const CREDS = require('./GoogleCloudからDLしてきた鍵.json');
const SHEET_ID = 'あなたのスプレッドシートID';

const spreadSheet = async() => {
  console.log('GoogleSpreadSheetへアクセス開始します');
  const sheet = new GoogleSpreadsheetAsPromised();;
  await sheet.load(SHEET_ID, CREDS);
  console.log('auth完了');

  const worksheet = await sheet.getWorksheetByName('sheet1');
  const cells = ( await worksheet.getCells('A1:D1') ).getAllValues(); // A1からD1までの値を取得する
  console.log(cells);

  return(sheet);
}

spreadSheet();

  const worksheet = await sheet.getWorksheetByName('sheet1');

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

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

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0