我相信你的目标如下。
- 您想实现问题中显示的图像。
- 您希望降低脚本的处理成本。
在这种情况下,使用 Sheets API 怎么样?我认为当您的情况使用 Sheets API 时,流程成本将能够减少一点。当您的脚本使用 Sheets API 时,它变为如下。
示例脚本:
在使用此脚本之前,please enable Sheets API at Advanced Google services。
function myFunction() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName("Sheet1"); // Please set the sheet name
const sheetId = sheet.getSheetId();
const lastRow = sheet.getLastRow();
const requests = [];
for (var i = 3; i <= lastRow; i += 5) {
requests.push({ insertDimension: { range: { sheetId, dimension: "ROWS", startIndex: i, endIndex: i + 2 } } });
}
requests.reverse();
Sheets.Spreadsheets.batchUpdate({ requests }, ss.getId());
}
参考资料:
补充:
关于V8 runtime is enable, still it doesn't work.,当我看到你当前的脚本时,你的脚本如下。
function myFunction() {
const ss = SpreadsheetApp.openById("1zsnqh6kNbeOJiDTh5olFj432Hkx5OPkynI1NGAO8pBk");
const sheet = ss.getSheetByName("Forecast1");
const lastRow = sheet.getLastRow();
const requestor = [];
for (var i = 3; i <= lastRow; i += 5) {
requestor.push({insertDimension: { range: { sheetId: ss.getId(), dimension: "ROWS", startIndex: 1, endIndex: 1 + 2 } } });
}
requestor.reverse();
Sheets.Spreadsheets.batchUpdate({requests:requestor}, ss.getId());
}
-
很遗憾,我可以确认您没有正确反映我提议的脚本。
-
此脚本与示例图片中显示的脚本不同。
-
我已经在my comment提到了这个问题。
根据您的错误消息,我认为您可能没有正确反映我提议的脚本。因为在你的错误中,当使用Spreadsheet ID作为sheet ID时,就会出现这样的错误。
-
我在循环中提出了requests.push({ insertDimension: { range: { sheetId, dimension: "ROWS", startIndex: i, endIndex: i + 2 } } });。但是您已修改为requestor.push({ insertDimension: { range: { sheetId: sheet.getSheetId(), dimension: "ROWS", startIndex: 1, endIndex: 1 + 2 } } });。这没有正确反映我提议的脚本。
修改脚本:
当您使用const ss = SpreadsheetApp.openById("1zsnqh6kNbeOJiDTh5olFj432Hkx5OPkynI1NGAO8pBk") 修改您当前的脚本时,它变为如下。请不要修改来测试这个脚本。
function myFunction() {
const ss = SpreadsheetApp.openById("1zsnqh6kNbeOJiDTh5olFj432Hkx5OPkynI1NGAO8pBk");
const sheet = ss.getSheetByName("testing"); // Please set the sheet name
const sheetId = sheet.getSheetId();
const lastRow = sheet.getLastRow();
const requests = [];
for (var i = 3; i <= lastRow; i += 5) {
requests.push({ insertDimension: { range: { sheetId, dimension: "ROWS", startIndex: i, endIndex: i + 2 } } });
}
requests.reverse();
Sheets.Spreadsheets.batchUpdate({ requests }, ss.getId());
}
注意:
-
您的“Forecast1”表很大(18732 行和 59 列)。所以,首先,为了测试这个脚本,我建议使用你的“测试”样本表并确认脚本是否有效。
-
当我测试您的“测试”样本表时,没有出现错误。但是,当我测试您的“Forecast1”时,出现了与 Sheets API 内部错误相关的错误。我担心这可能与当前的限制有关(未显示)。从这里,关于大表,例如,当您测试我的“Forecast1”脚本时,会出现同样的问题,我建议拆分表以减小大小。