gpt4 book ai didi

node.js - 如何在 NodeJS 中更新单元格数据而不清除先前的值(google-sheets-api)

转载 作者:太空宇宙 更新时间:2023-11-04 01:30:05 24 4
gpt4 key购买 nike

我正在研究 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] = 我输入的日志

我想将我的日志保存在一个单元格中。如果日志每次都从新行开始,那就太好了。

最佳答案

  • 您想要使用 Sheets API 和 Node.js 将值附加到新行。

如果我的理解是正确的,那么修改一下怎么样?

修改点:

  • 我认为使用values.append的方法比较适合你的情况。

修改后的脚本:

请修改如下。

来自:

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) => {

注意:

  • 根据您的问题,我可以确认您已经能够使用 Sheets API。
  • 在这种情况下,可以将值设置为 {values: [["date", "result", "comment"]] }

引用文献:

如果我误解了您的问题并且这不是您想要的结果,我深表歉意。

编辑:

  • 您想要将值添加到相同的单元格而不覆盖。例如,单元格 A1:B1 具有 sample1sample2。将 sample3sample4 的值分别添加到 A1B1 时,单元格将变为 sample1sample3sample2sample4

从你的回复评论中,我可以这样理解。对于这种情况,遗憾的是,在现阶段,这还不能通过一次API调用直接实现。所以需要进行如下流程。

  1. A1:B1 获取值。
  2. 通过更新值将值放入 A1:B1

为了做到这一点,例如,使用spreadsheets.values.getspreadsheets.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 具有 sample1sample2 时,通过运行此脚本,单元格将更新为 sample1sample3sample2sample4

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

引用文献:

关于node.js - 如何在 NodeJS 中更新单元格数据而不清除先前的值(google-sheets-api),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56383096/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com