node.js - 通过 Google Sheets API 更新我的数据时出现问题
问题描述
我想通过 Google Sheets API 更新我的 Google 表格数据。看起来连接到 Google 的服务器并发送请求成功。但是我的 Google 表格数据没有更新。并且 response:result.updatedCells 是未定义的。我哪里做错了?
function listMajors(auth) {
var body = {
values: [["2"]]
};
sheets.spreadsheets.values.update({
spreadsheetId: '{MyGoogleSheetsId}',
range: "table2!K2"+"?valueInputOption=RAW",
majorDimension:'ROWS',
auth: auth,
resource: body
}, function(err, result) {
if(err)
console.log(err);
else
console.log('updateRange: '+result.updatedRange);
console.log('updatedCells: '+result.updatedCells);
console.log('updatedRows '+result.updatedRows);
});
}
}
范围响应的值是可以的,但是其他的响应是不确定的 虽然服务器已经收到了我的请求。我的 Google 表格仍然没有更新。
解决方案
这个改装怎么样?
修改点:
- 请把 的属性放到
majorDimension
资源对象中。 - 请修改
range: "table2!K2"+"?valueInputOption=RAW",
- 您可以通过 检索结果
result.data
。
修改后的脚本:
function listMajors(auth) {
var body = {
majorDimension: "ROWS", // Added
values: [["2"]],
};
sheets.spreadsheets.values.update({
spreadsheetId: '{MyGoogleSheetsId}',
range: "table2!K2", // Modified
valueInputOption: "RAW", // Modified
auth: auth,
resource: body,
}, function(err, result) {
if (err) {
console.log(err); // or console.log(err.errors);
return;
}
console.log('updateRange: '+result.data.updatedRange); // Modified
console.log('updatedCells: '+result.data.updatedCells); // Modified
console.log('updatedRows '+result.data.updatedRows); // Modified
});
}
笔记:
- 这个修改后的脚本假设有以下几点。
- 您的环境可以使用 Sheets API 更新电子表格。
sheets
被宣布。
- 如果这不起作用,您可以尝试使用最新版本的 googleapis 吗?
参考:
在我的环境中,我确认这个修改后的脚本有效。如果这在您的环境中不起作用,我很抱歉。
编辑:
在我的环境中,我确认修改后的脚本使用 googleapis 版本 27.0.0 和最新版本 (35.0.0) 可以正常工作。不幸的是,我无法复制您的情况。所以我想提出其他方法。
示例脚本:
此脚本使用 Sheets API 的 values.update 方法更新电子表格。此脚本使用auth
您的脚本。使用此脚本时,请将脚本修改为listMajors(auth)
以下脚本。
function listMajors(auth) {
const request = require('request');
const spreadsheetId = '{MyGoogleSheetsId}';
const range = "table2!K2";
auth.getRequestHeaders()
.then(function(e) {
var body = {
majorDimension: "ROWS",
values: [["2"]],
};
var options = {
uri: `https://sheets.googleapis.com/v4/spreadsheets/${spreadsheetId}/values/${range}?valueInputOption=RAW`,
method: "put",
headers: e,
json: body,
};
request(options, function(err, res, result){
if (err) {
console.log(err);
return;
}
console.log(result);
});
});
}
推荐阅读
- angular - 带有按钮和 *ngif 的 RouterLink
- .net-core - Rebus 优雅关机
- here-api - 我设置了 hellomap 示例并收到以下错误
- mysql - 如何使用 SQL 计算累计支付 MRR?
- java - Java jackson - 更新 json 中的数组
- python - 如何使用样式表更改 PyQt 按钮的位置?
- python - 如何使用get方法在elasticsearch python中搜索
- android - 更改复选框阴影的颜色
- java - 带有 maven 的 Selenium 无法检测到它在没有 maven 的情况下能够检测到的 webelements
- sql-server - SQL 错误:此实例上只允许使用 SQL 服务器提供程序