在 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
我一直在通过 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 应用程序服务 类 的调用,以便将执行时间保持在最低限度。