通过 Google 表格 API 更新我的数据时出现问题
Something wrong in update my data via Google Sheets API
我想通过 Google 表格 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);
});
}
}
Value of response of range is OK, but response of other is undefined
虽然服务器已经收到我的请求。
我的 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
});
}
注:
- 这个修改后的脚本假定了以下几点。
- 您的环境可以使用表格更新电子表格 API。
sheets
已声明。
- 如果这不起作用,你能用最新版本的 googleapis 试试吗?
参考:
在我的环境中,我确认这个修改后的脚本有效。如果这在您的环境中不起作用,我很抱歉。
编辑:
在我的环境中,我确认修改后的脚本使用版本 27.0.0 和最新版本 (35.0.0) 的 googleapis 工作正常。不幸的是,我无法复制你的情况。所以我想提出其他方法。
示例脚本:
此脚本使用 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);
});
});
}
我想通过 Google 表格 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);
});
}
}
Value of response of range is OK, but response of other is undefined 虽然服务器已经收到我的请求。 我的 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
});
}
注:
- 这个修改后的脚本假定了以下几点。
- 您的环境可以使用表格更新电子表格 API。
sheets
已声明。
- 如果这不起作用,你能用最新版本的 googleapis 试试吗?
参考:
在我的环境中,我确认这个修改后的脚本有效。如果这在您的环境中不起作用,我很抱歉。
编辑:
在我的环境中,我确认修改后的脚本使用版本 27.0.0 和最新版本 (35.0.0) 的 googleapis 工作正常。不幸的是,我无法复制你的情况。所以我想提出其他方法。
示例脚本:
此脚本使用 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);
});
});
}