如果行不存在,如何将行附加到表 API,否则更新它



在JavaScript中,我正在尝试使用Google Sheets API。我想做的是,如果一行在电子表格中还不存在,就附加它,但如果重复,就更新它。

我的床单:

IDS 状态
A1 状态1
A2 状态2

我相信您的目标如下。

  • 你的"Sheet1";的电子表格在你的问题表中。

    • 在脚本中,您使用的范围为'Sheet 1'!A3:A23。但是,在您的表中,数据似乎显示在第2行
  • 您具有类似[["A1", "Status2"], ["A3", "Status1"]]的输入值。

  • 您想要更新";Sheet1";使用输入值。当使用您的显示表和您的输入值时,您希望实现以下情况:;Sheet1";。

    IDS  Status
    A1   Status2
    A2   Status2
    A3   Status1
    
  • 从您添加的标签中,您希望使用Node.js.的Googleapi来实现这一点

  • 您已经能够使用Sheets API获取值并将其放入电子表格。

在这种情况下,下面的示例脚本如何?

示例脚本:

const sheets = google.sheets({ version: "v4", auth }); // Please use your authorization.
const spreadsheetId = "###"; // Please set your Spreadsheet ID.
const inputValues = [["A1", "Status2"], ["A3", "Status1"]]; // This is from your question.
sheets.spreadsheets.values.get({spreadsheetId, range: "'Sheet 1'!A2:B"},
(err, { data: { values } }) => {
if (err) {
console.log(err);
return;
}
const obj1 = inputValues.reduce((o, e) => ((o[e[0]] = e), o), {});
const obj2 = values.reduce((o, e) => ((o[e[0]] = e), o), {});
const res = [
...values.map((e) => obj1[e[0]] || e),
...inputValues.reduce((ar, e) => (obj2[e[0]] || ar.push(e), ar), []),
];
sheets.spreadsheets.values.update(
{
spreadsheetId,
range: "'Sheet 1'!A2",
resource: { values: res },
valueInputOption: "USER_ENTERED",
},
(err, { data }) => {
if (err) {
console.log(err);
return;
}
console.log(data);
}
}
);
}
);
  • 在这个示例脚本中,首先,从列"中检索值;A";以及";B";的";Sheet1";。并且,检索到的值使用输入值进行更新。并且,更新后的值被设置为"0";Sheet1">

注意:

  • 在显示脚本中,工作表名称似乎是Sheet 1,而不是Sheet1。因此,请再次确认您的表单名称

参考文献:

  • 方法:spreadsheets.values.get
  • 方法:spreadsheets.values.update

最新更新