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

时间:2016-08-09 10:59:33

标签: javascript google-apps-script javascript-events

我一直通过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

2 个答案:

答案 0 :(得分:1)

两者都是合适且可行的,但您可以将其作为一项要求使用。

如果您的脚本只需要使用当前脚本,那么您可以使用getActiveSheet(),这里您不能使用其他工作表的数据。

如果你使用getActiveSpreadsheet(),它允许你使用当前和另一张可用的工作表数据。

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

答案 1 :(得分:0)

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

另一方面,您应尽量减少对Google Apps Services类的调用,以便将执行时间保持在最短时间。

参考

my answerScript to automatically capitalize contents of a cell in Google Sheets?