尝试创建从电子表格中删除行的脚本,无法使其工作

时间:2015-12-18 03:33:40

标签: google-apps-script google-sheets

我对此很陌生,所以我确定修复工作既简单又简单。我尝试创建一个代码,允许用户单击按钮,按确认,然后删除所有包含数据的行减去顶行。代码如下:

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>

1 个答案:

答案 0 :(得分:3)

第二个参数是“要删除的行数”而不是“要删除的最后一行”。更改脚本以反映此情况并检查空白表单是否有效。

if (response.getSelectedButton() == ui.Button.YES && lastRow-1>0) {
  sheet.deleteRows(2, lastRow-1)   
}