sorting - 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);
}
我希望有人能解决这个问题。
解决方案
您将获得全局范围内的电子表格:
ss = SpreadsheetApp.openById("1nQZT16wiN9AX6FqZhioKyeLWoL7_BKfi09zRg");
这需要以下任何范围:
- https://www.googleapis.com/auth/spreadsheets.currentonly
- https://www.googleapis.com/auth/spreadsheets
但是简单的触发器在没有授权的情况下运行1。因此,您不能使用SpreadsheetApp.openById()
. 但是,您可以从onEdit中的事件对象2获取电子表格:
const onEdit = e => e.source
.getSheetByName("Sheet1")
.getRange("A2:A")
.sort(1)
如果要打开当前绑定的电子表格以外的任何其他电子表格,则需要使用可安装的触发器
推荐阅读
- angular - 使用 @angular/elements 为每个组件生成不同的 js 包
- html - 徽标 CSS 导航栏不断爆炸
- python - 安装 Tensorflow 时出现有关 Python 的错误
- excel - Power Query 忽略缺少的列
- python - 在 Python 中从 Azure Blob 下载 XLSX 文件
- flutter - Flutter 的 ReorderableListView 会拖出项目吗?
- java - 事件类随 Axon CQRS 变化
- javascript - Javascript:复制元素 html
- kotlin - 如何仅返回 Kotlin 中两个并发异步挂起函数中的第一个的结果?
- java - 如何使用 Spring Boot 调度程序获取价格差异