Dragon Arrow written by Tatsuya Nakaji, all rights reserved animated-dragon-image-0164

Node.jsでスプレッドシートのデータ取得

イメージ
Dec 21, 2018

環境 Node.js v10.11.0 



手順 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);
}
}
);

出力結果



good!!  


参考URL https://techblog.lclco.com/entry/2018/11/30/120000

参考にさせていただいた、この方のやり方以外にも

https://dotstud.io/blog/google-spreadsheets-from-nodejs/

Google Drive Apiではなく Google Sheets Api を有効化してクライアントキーからアクセスする方法もあるみたいです