【发布时间】:2021-11-10 03:01:12
【问题描述】:
我正在尝试将数据行从 Sheet 1 传输到 Sheet 2。
谢谢
【问题讨论】:
-
参见 tag info page 了解“最佳实践” -> 获取值数组和 setValues 数组。
标签: google-apps-script google-sheets google-sheets-api
我正在尝试将数据行从 Sheet 1 传输到 Sheet 2。
谢谢
【问题讨论】:
标签: google-apps-script google-sheets google-sheets-api
我相信你的目标如下。
这样的话,下面的修改怎么样?
在此修改中,使用 setValues 复制行并由 Sheets API 删除。这样一来,我认为可以减少一点工艺成本。所以,please enable Sheets API at Advanced Google services before you use this script。
function archive() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var firstSheet = ss.getSheetByName("Sheet 1");
var firstSheetValues = firstSheet.getRange(1, 1, firstSheet.getLastRow(), firstSheet.getLastColumn()).getValues();
var sheetId = firstSheet.getSheetId();
var {values, requests} = firstSheetValues.reduce(function (o, r, i) {
if (r[1] == "Archive") {
o.values.push(r);
o.requests.push({ deleteDimension: { range: { sheetId, startIndex: i, endIndex: i + 1, dimension: "ROWS" } } });
}
return o;
}, { values: [], requests: [] });
var secondSheet = ss.getSheetByName("Sheet 2");
secondSheet.getRange(secondSheet.getLastRow() + 1, 1, values.length, values[0].length).setValues(values);
Sheets.Spreadsheets.batchUpdate({requests: requests.reverse()}, ss.getId());
}
【讨论】:
const date = new Date(); 放在var sheetId = firstSheet.getSheetId(); 之后,并从o.values.push(r); 修改为@987654329 @,这是您期望的结果吗?如果我误解了您的新问题,我再次道歉。