在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