updated on 2018-12-24
手順 1. 開発者コンソールでapiの設定をおこなう
GoogleDevelopersを使用するので https://console.developers.google.com/ に新しいプロジェクトを登録する(既存のものに追加しても良い)
以下はautoTestという新しいプロジェクトを作った
次にgoogleDriveApiを有効化する(下のやつ)
次にキーを作成
作成
これでコンソール側の設定はOK
手順 2. スプレッドシートで共有を行う
手順 3. 実装
●ディレクトリを作成して必要なパッケージをインストールします。
以下を実行
$ mkdir node_spreadsheet $ cd node_spreadsheet $ npm init $ npm install google-spreadsheet async
または
node_spreadsheet/package.json { "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "dependencies": { "async": "^2.6.1", "google-spreadsheet": "^2.0.6" } } $ npm install
●node_spreadsheet/index.jsを作成してコードを貼る
var GoogleSpreadsheet = require("google-spreadsheet"); var async = require("async"); // https://docs.google.com/spreadsheets/d/XXXXXXXXXXXXXXXXXXXXX/edit#gid=0 var doc = new GoogleSpreadsheet("XXXXXXXXXXXXXXXXXXXXX"); // スプレッドシートのurlから確認して入れる var sheet; async.series( [ function setAuth(step) { var creds = require("./YYYYYYYYY.json"); // コンソールで設定して自動作成されたファイルを読み込む doc.useServiceAccountAuth(creds, step); }, function getInfoAndWorksheets(step) { doc.getInfo(function(err, info) { sheet = info.worksheets[0]; step(); }); }, function workingWithCells(step) { const COLUMNS = { firstColumn: 1, secondColumn: 2, }; sheet.getCells( { "min-row": 2, "max-row": 5, "return-empty": true }, function(err, cells) { // cells.length/sheet.colCount=(2~5行の全セル)/(1行あたりのセル)=説取得を行う範囲の行数 を表す 数列的にいうと,An=(sheet.colCount)n+A0 [n=0,1,2,...sheet.colCount] for (let i = 0; i < cells.length / sheet.colCount; i += 1) { const name = cells[i * sheet.colCount + COLUMNS.firstColumn].value; const gender = cells[i * sheet.colCount + COLUMNS.secondColumn].value; console.log(name + " " + price); } } ); } ], function(err) { if (err) { console.log("Error: " + err); } } );
出力結果
参考URL https://techblog.lclco.com/entry/2018/11/30/120000
参考にさせていただいた、この方のやり方以外にも
https://dotstud.io/blog/google-spreadsheets-from-nodejs/
Google Drive Apiではなく Google Sheets Api を有効化してクライアントキーからアクセスする方法もあるみたいです