首页 > 解决方案 > onEdit(e) 触发器对我不起作用 - Google 表格、Google Apps 脚本

问题描述

我只是尝试在添加新名称或编辑现有名称后按字母顺序对名称的列进行排序(我从第二行开始排序过程,因为第一行是我的标题)。如图所示,我使用了 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);  
}

电子表格看起来如图所示: 电子表格

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

标签: sortinggoogle-apps-scriptgoogle-sheets

解决方案


您将获得全局范围内的电子表格:

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

这需要以下任何范围

但是简单的触发器在没有授权的情况下运行1。因此,您不能使用SpreadsheetApp.openById(). 但是,您可以从onEdit中的事件对象2获取电子表格:

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

如果要打开当前绑定的电子表格以外的任何其他电子表格,则需要使用可安装的触发器


推荐阅读