运行OnEdit(E)以发射特定表范围的错误



我只需要在特定范围内进行更改时将函数 onEdit()限制为触发。用户在B列中选择一个值,而A列A则用特定值oppot。尽管下面的Funciton似乎可以根据需要起作用,但是当从应用程序编辑器中运行时,它会引发错误:
TypeError: Cannot read property "source" from undefined.

显然是指e.source.getSheetName线

function onEdit(e) {
  if (
    e.source.getSheetName() == "Activity" &&
    e.range.columnStart == 2 &&
    e.range.columnEnd == 2 &&
    e.range.rowStart >= 2 &&
    e.range.rowEnd <= 100
  ) {
    e.value !=='' ? e.range.offset(0,-1).setValue(caseID()) : null
    };
  };

我不确定是否可以忽略这一点,因为该函数的作品(在B列B)中更改值时caseID函数的结果?预先感谢您,

简短答案:我想,我们现在可以忽略它。

原因:在应用程序编辑器中手动运行该功能时,我们不会传递事件对象。这就是为什么它将e作为undefined错误。

我想我们可以手动解释该功能为运行onEdit(),而功能签名则需要参数e。这就是为什么手动执行e不确定。

但是,当它由于表格中的编辑而被触发时,该事件对象将作为参数传递给该函数,因此可以按预期工作。

我相信getSheetName()仅返回第一个表的名称,而不是编辑表的名称。要获取正确的编辑表名,您应该首先获取表格,然后是名称。另外,最好是从范围而不是来源完成:

e.range.getSheet().getName() === "Activity"

最新更新