我正在研究NodeJS和Google Sheets API 我尝试将一些日志添加到工作表上的单元格中,每次我的代码执行函数(创建日志)时都会创建日志。每次代码更新单元格时,我以前的日志都会被删除。如何摆脱单元格中的覆盖?我希望我的新日志保存在旧日志中
我尝试将sheets.spreadsheets.values.batchUpdate({})
更改为
sheets.spreadsheets.batchUpdate({})
,但在那里找不到相关参数
async regressionMapBatchUpdateSheet(auth, cellsRange = "", ...restValues) {
return new Promise((resolve, reject) => {
const sheets = google.sheets({ version: 'v4', auth });
sheets.spreadsheets.values.batchUpdate({
spreadsheetId: 'spreadsheetId',
requestBody: {
data: [
{
range: cellsRange,
values: [
restValues
]
}
],
valueInputOption: "USER_ENTERED",
includeValuesInResponse: true
}
}, (err, response) => {
if (err) {
console.log(err);
return reject(err);
} else {
console.log(`The sheet were updated, cells were updated: "${response.data.responses.map(res => res.updatedData.values)}"`);
resolve(response);
}
})
});
值:[restValues] =我输入的日志
我想将日志保存在一个单元格中。如果每次都从新行开始日志,那就太好了。
答案 0 :(得分:0)
如果我的理解是正确的,那么该修改如何?
请进行如下修改。
sheets.spreadsheets.values.batchUpdate({
spreadsheetId: 'spreadsheetid',
requestBody: {
data: [
{
range: dateCell,
values: [
[date]
]
},
{
range: resultCell,
values: [
[result]
]
},
{
range: commentCell,
values: [
[comment]
]
}
],
valueInputOption: "RAW",
includeValuesInResponse: true
}
}, (err, response) => {
使用此设置时,请设置范围和值。通过此脚本,这些值将追加到新行。
sheets.spreadsheets.values.append(
{
spreadsheetId: 'spreadsheetid',
range: "Sheet1!A:A", // This is a sample range.
valueInputOption: "RAW",
resource: { values: [["date", "result", "comment"]] } // This is a sample value.
}, (err, response) => {
{ values: [["date", "result", "comment"]] }
那样设置值。如果我误解了您的问题,而这不是您想要的结果,我深表歉意。
A1:B1
具有sample1
和sample2
。将sample3
和sample4
的值分别添加到A1
和B1
时,单元格将变为sample1sample3
和sample2sample4
。从您的回复评论中,我可以这样理解。对于这种情况,不幸的是,在当前阶段,这不能通过一个API调用直接实现。因此,需要执行以下流程。
A1:B1
获取值。A1:B1
。例如,要执行此操作,如何使用spreadsheets.values.get
和spreadsheets.values.update
的方法?
sheets.spreadsheets.values.batchUpdate({
spreadsheetId: 'spreadsheetid',
requestBody: {
data: [
{
range: dateCell,
values: [
[date]
]
},
{
range: resultCell,
values: [
[result]
]
},
{
range: commentCell,
values: [
[comment]
]
}
],
valueInputOption: "RAW",
includeValuesInResponse: true
}
}, (err, response) => {
在这种情况下,通过将其他值添加到现有值来更新Sheet1!A1:B1
的单元格。例如,当单元格Sheet1!A1:B1
具有sample1
和sample2
时,通过运行此脚本,单元格将更新为sample1sample3
和sample2sample4
。
const spreadsheetId = "###";
const range = "Sheet1!A1:B1";
const additionalValue = [["sample3", "sample4"]];
sheets.spreadsheets.values.get(
{
spreadsheetId: spreadsheetId,
range: range
},
(err1, result1) => {
if (err1) {
console.log(err1.errors);
return;
}
const newValue = result1.data.values.map((row, i) =>
row.map((col, j) => col + additionalValue[i][j])
);
sheets.spreadsheets.values.update(
{
spreadsheetId: spreadsheetId,
range: range,
valueInputOption: "USER_ENTERED",
resource: { values: newValue }
},
(err2, result2) => {
if (err2) {
console.log(err2.errors);
return;
}
console.log(result2.data);
}
);
}
);