【问题标题】:Google Sheets Apps Script onEdit() TriggerGoogle Sheets Apps 脚本 onEdit() 触发器
【发布时间】:2015-07-01 00:46:16
【问题描述】:

我是编程新手,所以请耐心等待。我正在编写一个脚本,除其他外,它在编辑时获取一个单元格值,然后在其他各种范围内的一系列单元格下划线。给定的单元格具有验证功能,因此用户只能从下拉菜单的一系列选项中进行选择。

据我所知,验证功能运行良好,但是当我通过选择下拉菜单选项之一来编辑指定单元格时,什么也没有发生。我需要调用onEdit(e) 函数吗?我已经阅读了 api 参考并搜索了 stackoverflow 和网络以寻求帮助,但我被困住了。

请指教;任何帮助表示赞赏。这是我的代码的相关部分:

function validateLeagueSizeInput(sheet) {
  var cell = sheet.getRange('G2'),
      values = [[8], [10], [12]],
      range = sheet.getRange('A998:A1000').setValues(values),
      rule = SpreadsheetApp.newDataValidation().requireValueInRange(range, true).build();
  cell.setDataValidation(rule);
}

function onEdit(e) {
  var cell = e.value,
      range = SpreadsheetApp.getActiveSheet().getRange('A2:F301');
  for (var i = cell + 1; i < Math.floor(301 / cell); i += cell) {
    for (var j = 1; j <= 6; j++) {
      range[i][j].setBorder(null, null, true, null, null, null);
    }
  }
}

【问题讨论】:

  • “硬编码”变量 cell -> var cell = 5; 的值。然后设置一个断点并运行调试器。 Link to Google Documentation - Troubleshooting 单步执行代码。如果您不确定onEdit() 函数是否正在运行,请在顶部添加Logger.log('it ran! ' + e.value); 语句,编辑单元格,然后查看日志。
  • 感谢您的建议,@SandyGood!我之前尝试过记录cell 变量,而onEdit(e) 函数肯定没有被触发。可能是从下拉菜单中选择的选项不会触发onEdit() 函数,因为@Mogsdad 已经避开了。
  • 尝试安装的更改触发事件。
  • 再次感谢您的意见。我决定只创建一个菜单项并在以这种方式触发时执行代码。

标签: google-apps-script google-sheets


【解决方案1】:

有很多电子表格更改不会触发 onEdit() 函数 - 您可能只是第一个报告此特定更改的人。见Detect user inserting row or column in a google spreadsheet and reacting in a script

【讨论】:

  • 感谢您的信息,@Mogsdad!你能想出另一种方法来触发下划线代码吗?只允许用户从有限的选项列表中进行选择?
  • 再次感谢您的意见。我决定只创建一个菜单项并在以这种方式触发时执行代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-04
  • 1970-01-01
  • 2016-12-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多