我使用了几个函数,确切地说是14个,类似于下面的函数,这些函数是由电子表格的更改触发的:
function principleHours(event){
var Col = 53;
var changedRange = event.source.getActiveRange();
if (changedRange.getColumn() == Col) {
var state = changedRange.getValue();
var adjacent = event.source.getActiveSheet().getRange(changedRange.getRow(),Col);
var comments = adjacent.getComments();
var timestamp = Utilities.formatDate(new Date(), "GMT-7", "M/dd/yy', 'h:mm a"); // Get the current time
// We'll do something different, depending on the selected value
if (comments == "") {
comments = "(" + timestamp + ") " + state;
adjacent.setComment(comments);
changedRange.clearContent();
}
else if (comments != "") {
comments = comments + "\n" + "(" + timestamp + ") " + state;
adjacent.setComment(comments);
changedRange.clearContent();
}
}
}
function principalTravel(event){
var Col = 66;
var changedRange = event.source.getActiveRange();
if (changedRange.getColumn() == Col) {
var state = changedRange.getValue();
var adjacent = event.source.getActiveSheet().getRange(changedRange.getRow(),Col);
var comments = adjacent.getComments();
var timestamp = Utilities.formatDate(new Date(), "GMT-7", "M/dd/yy', 'h:mm a"); // Get the current time
// We'll do something different, depending on the selected value
if (comments == "") {
comments = "(" + timestamp + ") " + state;
adjacent.setComment(comments);
changedRange.clearContent();
}
else if (comments != "") {
comments = comments + "\n" + "(" + timestamp + ") " + state;
adjacent.setComment(comments);
changedRange.clearContent();
}
}
}把它们组合成一个函数有意义吗?把他们分开有好处吗?
发布于 2016-10-28 04:48:29
我会同意评论者的意见,并对它没有作为答复而提交感到惊讶。
如果可以避免,我建议不要使用"onEdit“触发器调用多个函数。到目前为止,这两个函数似乎大致相同。如果您的函数之间唯一的区别是Col变量,那么我建议稍微编辑一下,其中您有一个函数执行操作,并让onEdit调用一个新函数,该函数将调用单个函数并发送不同的Col变量。这将意味着您需要对您的函数所做的任何调整都是在单个函数上进行的。
一般来说,如果函数是共享代码库,则应该使用它。所以如果在你的例子中
function foo(Col) {
var changedRange = event.source.getActiveRange();
if (changedRange.getColumn() == Col) {
var state = changedRange.getValue();
var adjacent = event.source.getActiveSheet().getRange(changedRange.getRow(),Col);
var comments = adjacent.getComments();
var timestamp = Utilities.formatDate(new Date(), "GMT-7", "M/dd/yy', 'h:mm a"); // Get the current time
// We'll do something different, depending on the selected value
if (comments == "") {
comments = "(" + timestamp + ") " + state;
adjacent.setComment(comments);
changedRange.clearContent();
}
else if (comments != "") {
comments = comments + "\n" + "(" + timestamp + ") " + state;
adjacent.setComment(comments);
changedRange.clearContent();
}
}
}是在所有函数中都要做的事情,那么在基本代码中,您所要做的就是
function main() {
foo(53)
foo(66)
//as many foo calls as you need
}尝试将函数作为一段代码使用,您可以继续重用这些代码,onEdit将成为您的main()。
https://stackoverflow.com/questions/40291441
复制相似问题