我对此很陌生,所以我确定修复工作既简单又简单。我尝试创建一个代码,允许用户单击按钮,按确认,然后删除所有包含数据的行减去顶行。代码如下:
Code.gs
//adds custom menu to activate function from.
function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu('Delete Responses')
.addItem('Delete Current Responses', 'deleteAll')
.addToUi();
}
//Trying to delete all rows that contain data minus the first one here.
function deleteAll() {
var ui = SpreadsheetApp.getUi();
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
var response = ui.prompt('Are you sure you want to delete all responses?', ui.ButtonSet.YES_NO);
var lastRow = sheet.getLastRow();
if (response.getSelectedButton() == ui.Button.YES) {
sheet.deleteRows(2, lastRow)
}
}
目前,在lastRow
的最后一位调用sheet.deleteRows
时,Google会返回错误,说明"这些行超出范围。"如果我将它更改为10之类的整数,只是为了查看它是否有效,它在脚本完成后什么都不做。我错过了一些简单的东西吗?
(x-posted来自Code Review,我在那里删除了我原来的帖子。抱歉,我以为我之前成功发布了这样的问题,但看起来它只是发布在一般网站上。) / p>
答案 0 :(得分:3)
第二个参数是“要删除的行数”而不是“要删除的最后一行”。更改脚本以反映此情况并检查空白表单是否有效。
if (response.getSelectedButton() == ui.Button.YES && lastRow-1>0) {
sheet.deleteRows(2, lastRow-1)
}