我只需要在特定范围内进行更改时将函数 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"