onEdit(e)触发器对我不起作用-Google表格,Google Apps脚本

时间:2020-02-27 13:33:52

标签: sorting google-apps-script google-sheets

我只是尝试在添加新名称或编辑现有名称后按字母顺序对名称进行排序(我从第二行开始了排序过程,因为第一行是我的标题)。如图所示,我使用了onEdit(e)触发器。这应该是一件简单的事情,但是却行不通。当我在工作表中添加名称或编辑现有名称时,没有任何反应。

ss = SpreadsheetApp.openById("1nQZT16wiN9AX6FqZhioKyeLWoL7_BKfi09zRg");
sheet = ss.getSheetByName("Sheet1");

function onEdit(e) {
  range = sheet.getRange(2, 1, sheet.getLastRow()-1);
  range.sort(1);  
}

电子表格的外观如下图所示: Sreadsheet

我希望有人能解决这个问题。

1 个答案:

答案 0 :(得分:2)

您正在获取全球范围内的电子表格:

ss = SpreadsheetApp.openById("1nQZT16wiN9AX6FqZhioKyeLWoL7_BKfi09zRg");

这需要任何 following scopes

但是简单的触发器会未经授权运行1。因此,您不能使用SpreadsheetApp.openById()。不过,您可以从onEdit内的事件对象2获取电子表格:

const onEdit = e => e.source
  .getSheetByName("Sheet1")
  .getRange("A2:A")
  .sort(1)

如果要打开当前绑定的电子表格以外的其他任何电子表格,则需要使用installable triggers