使用Nodejs通过Google Sheets API操作电子表格
请进行下列英文短语的中文释义,只需一种选项:
要旨
即使不使用Google Apps Script,也可以操作电子表格。
如果根据标题设置列的值,则使用GAS更容易(必须在第一行上有标题,不能使用大写英文字母或下划线的字符串作为标题指定)。
不需要在意6分的壁,这样很轻松。
尽管我觉得比GAS更稳定,但仍然感到有一些不稳定。
有多个用于在Node.js中使用Google Sheets API的包,但都存在一些小错误
(我们在这次使用的包中,批量更新单元格的bulkUpdateCells功能无法正常工作)
使用套餐
谷歌电子表格(版本2.0.6)
https://www.npmjs.com/package/google-spreadsheet
样品表
谷歌表格API Qiita说明样本
https://docs.google.com/spreadsheets/d/1pNmXvx5vL2pEICe6_2PVFfuQ2WYoRaVA7K05i9s8-Aw/edit?usp=sharing
注意事项
请根据此文章获取API认证信息的JSON(非常感谢您的参考和帮助,借此机会向您表示感谢)。
https://qiita.com/howdy39/items/ca719537bba676dce1cf
代码 (má duó)
async function sample() {
try {
const GoogleSpreadsheet = require('google-spreadsheet');
const creds = require('./google-generated-creds.json'); //API認証情報JSONを同ディレクトリに置いておく
var spreadsheet_id = '1pNmXvx5vL2pEICe6_2PVFfuQ2WYoRaVA7K05i9s8-Aw'; //スプレッドシートのID
var worksheet_name = "シート2"; //操作したいワークシートのシート名
var book = new GoogleSpreadsheet(spreadsheet_id); //インスタンス
var spreadsheet; //スプレッドシート
var worksheet; //ワークシート
var rcnt1; //ループカウンタ1
var rcnt2; //ループカウンタ2
//認証を通しスプレッドシートの情報取得して外部スコープの変数に保存
book.useServiceAccountAuth(creds, function(error) {
if (error !== null) {
throw new Error(error);
}
book.getInfo(function(error, data) {
if (error !== null) {
throw new Error(error);
}
spreadsheet = data;
});
});
//指定した名前のスプレッドシートの値を更新する
for (rcnt1 in spreadsheet.worksheets) {
if (spreadsheet.worksheets[rcnt1].title === worksheet_name) {
spreadsheet.worksheets[rcnt1].getRows({
offset: 1, //何も指定しなければ2行目から読み込むので1を指定すると3行目から読み込む
limit: 20, //途中で空白行が現れれば20行以下でも読み込み中止
}, function(error, rows) {
if (error !== null) {
throw new Error(error);
} else {
for (rcnt2 in rows) {
rows[rcnt2].sku = "new_sku"; //1行目の値が"sku"の列の(rcnt2 + 1 + offset)行目の値を"new_sku"に変更
rows[rcnt2].price = 19800;
rows[rcnt2].save();
}
}
});
}
}
return Promise.resolve(0);
} catch(error) {
console.error(error);
return Promise.reject(1);
}
}