我一直通过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
答案 0 :(得分:1)
两者都是合适且可行的,但您可以将其作为一项要求使用。
如果您的脚本只需要使用当前脚本,那么您可以使用getActiveSheet(),这里您不能使用其他工作表的数据。
如果你使用getActiveSpreadsheet(),它允许你使用当前和另一张可用的工作表数据。
取决于当前的要求和未来可能的要求。
答案 1 :(得分:0)
最近,我在onEdit简单触发器上使用typeof event.value
时遇到问题,因为它始终返回string
。使用typeof SpreadsheetApp.getActiveRange().getValue()
解决了这个问题,所以我认为最好的方法取决于你将使用的事件属性。
另一方面,您应尽量减少对Google Apps Services类的调用,以便将执行时间保持在最短时间。
my answer至Script to automatically capitalize contents of a cell in Google Sheets?