这是多余的吗?有没有更简单的方法可以写这个?
if(e.range.getSheet().getName() == 'Estimate'){
var thisss = SpreadsheetApp.getActive().getSheetByName('Estimate');
}
答案 0 :(得分:3)
是的。这称为WET解决方案。
DRY(不要重复自己)原则被描述为“每条知识在系统中必须具有单一,明确,权威的表示形式”。
简而言之,如果您跟踪代码的一个分支(例如,变量信息),则该分支应该在树/代码的根目录下只有一行,并且不得在代码的其他位置重复。
if(e.range.getSheet().getName() == 'Estimate'){
var sheet1 = SpreadsheetApp.getActive().getSheetByName('Estimate');
}
在这里,您有两个分支(e.range.getSheet()
和SpreadsheetApp.getActive().getSheetByName('Estimate')
)到达同一工作表对象(sheet1
)。可以修改为
var editedSheet = e.range.getSheet();
if(editedSheet.getName() === 'Estimate'){
//Do something with editedSheet here
}
违反DRY的行为通常被称为WET解决方案,通常被认为代表“两次都写两次”,“我们喜欢打字”或“浪费每个人的时间”。
答案 1 :(得分:2)
是的,这是多余的,而且时间效率也低。
如果您已经知道e.range.getSheet()
返回的Class Sheet对象的名称等于'Estimate'
,则无需执行通常在执行方面很昂贵的Google Apps脚本服务调用时间。
要确定是否在消耗执行时间,应该查看执行记录。