在 Google 脚本中调用事件的正确方法是什么?

What is the proper way to call an event in Google scripts?

我一直在通过 event.source.getActive... 或 SpreadsheetApp.getActive... 调用活动内容。哪个更合适?我从多个来源提取了这些,所以有时在我的脚本中我会使用一个而不是另一个。我觉得我已经尝试过互换使用它们,但是出了问题,(这是早期所以我放弃了)。但我想知道哪种方式最好,或者我真的需要它们吗?

var ss = SpreadsheetApp.getActiveSpreadsheet();//ss is active spreadhseet
var s = event.source.getActiveSheet();//s is active sheet withing spreadsheet
var r = event.source.getActiveRange();//r is active cell


var sheetAppActive = SpreadsheetApp.getActiveSheet();//sheetAppActive is active sheet within spreadsheet
var rangeAppActive = sheetAppActive.getActiveCell(); //rangeAppActive is the active cell

两者都合适可行,但您可以将其作为需求使用。

如果您的脚本只需要使用当前脚本,那么您可以使用 getActiveSheet(),这里您不能使用另一个 sheet 的数据。

如果您使用 getActiveSpreadsheet(),它允许您使用当前以及另一个可用的 sheet 数据。

取决于当前要求和未来可能的要求。

最近,我在 onEdit 简单触发器上使用 typeof event.value 时遇到问题,因为它总是返回 string。问题已通过使用 typeof SpreadsheetApp.getActiveRange().getValue() 解决,所以我认为最好的方法将取决于您将使用的事件 属性。

另一方面,您应该尽量减少对 Google 应用程序服务 类 的调用,以便将执行时间保持在最低限度。

参考资料

to