【问题标题】:How do I get the onEdit script to run如何让 onEdit 脚本运行
【发布时间】:2015-01-22 23:18:13
【问题描述】:

我创建了一个电子表格,然后添加了一些值。我通过菜单打开了脚本编辑器,并添加了一个 onEdit 功能。在我编辑工作表中的单元格时,我一辈子都无法让该脚本执行任何操作。

如果我专门按下编辑器中的“运行”按钮,它就会运行,但这有点违背了目的。我错过了什么?

如果重要的话,这里是我的代码

function onBugEdit() {
  Browser.msgBox("test");
  var sheet = SpreadsheetApp.getActiveSheet();
  var rng   = sheet.getActiveRange();
  var val   = rng.getValues();
  var col   = rng.getColumn();
  var row   = rng.getRow();
  var h_string = '=HYPERLINK("http://example.com?id='+val+'","'+val+'")';
  if(col == 4) { 
    col = "D";
    cell = sheet.getRange(col+row);
    cell.setFormula(h_string);
  }
};

为 onEdit 函数设置了项目触发器,但是当我编辑单元格时仍然没有任何反应。

【问题讨论】:

  • 我还尝试了在 onOpen 函数上安装的脚本。我可以看到在项目触发器上注册的功能,但仍然没有任何反应。

标签: google-apps-script google-sheets google-spreadsheet-api


【解决方案1】:

您是否尝试过调用您的函数 onEdit 而不是 onBugEdit
另请记住,编辑后退出单元格时会注册“编辑”。


您的代码可以简化为:

function onEdit(e) {
  if(e.range.getColumn() == 4) { 
  makeHyperlink(e)
  }
};
function makeHyperlink(e) {

    e.range.setFormula('=HYPERLINK("http://example.com?id='+e.value+'","'+e.value+'")');
};

【讨论】:

  • 我之前有一个名为 onEdit 的函数,但它不起作用。我清除了所有设置并将其重命名为 onEdit,这一次它开始工作了。不知道发生了什么变化,但它现在可以工作了。
  • 另外,编写一个名为makeHyperlink 或类似名称的单独函数并从onEdit 中调用它可能是更好的做法。另请注意,onEdit(e) 为您提供了一个事件对象,该对象已经包含有关已编辑单元格的信息,因此无需再次查询它们。例如:e.rangee.value。见G-Docs documentation
  • 我添加了建议的简化
  • 感谢您的样品。我可能会简化它。我正在使用我在网上找到的一些示例代码,只是为了让它首先工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-24
  • 2021-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多