我相信你的目标如下。
在这种情况下,我认为当使用Sheets API时,可以降低工艺成本。因此,在这个答案中,我想建议使用Sheets API。
从你的剧本中,我了解到你的价值观
documentObject
和
lastRow
分别是类表的对象和整数。在这个答案中,这些值用于图纸API的请求。当你的脚本
deleteVisibleRows
修改后,它变为如下。
修改的脚本:
在使用此脚本之前,
please enable Sheets API at Advanced Google services
.
function deleteVisibleRows(documentObject, lastRow) {
const spreadsheetId = documentObject.getParent().getId();
const sheetName = documentObject.getSheetName();
const sheetId = documentObject.getSheetId();
const rowMetadata = Sheets.Spreadsheets.get(spreadsheetId, { ranges: [sheetName], fields: "sheets(data(rowMetadata(hiddenByFilter)))" }).sheets[0].data[0].rowMetadata;
const requests = rowMetadata.reduceRight((ar, { hiddenByFilter }, i) => {
if (!hiddenByFilter && i > 0 && i + 1 < lastRow) ar.push({ deleteDimension: { range: { sheetId, startIndex: i, endIndex: i + 1, dimension: "ROWS" } } });
return ar;
}, []);
Sheets.Spreadsheets.batchUpdate({requests}, spreadsheetId);
}
笔记
-
当运行此函数时,显示的行将被删除。请小心。因此,当您测试这个脚本时,我建议您使用一个示例电子表格。
参考文献: