首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >函数的速度

函数的速度
EN

Stack Overflow用户
提问于 2016-10-27 18:07:49
回答 1查看 72关注 0票数 0

我使用了几个函数,确切地说是14个,类似于下面的函数,这些函数是由电子表格的更改触发的:

代码语言:javascript
复制
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();
     } 
  }
}

把它们组合成一个函数有意义吗?把他们分开有好处吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-28 04:48:29

我会同意评论者的意见,并对它没有作为答复而提交感到惊讶。

如果可以避免,我建议不要使用"onEdit“触发器调用多个函数。到目前为止,这两个函数似乎大致相同。如果您的函数之间唯一的区别是Col变量,那么我建议稍微编辑一下,其中您有一个函数执行操作,并让onEdit调用一个新函数,该函数将调用单个函数并发送不同的Col变量。这将意味着您需要对您的函数所做的任何调整都是在单个函数上进行的。

一般来说,如果函数是共享代码库,则应该使用它。所以如果在你的例子中

代码语言:javascript
复制
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();
      } 
  }
}

是在所有函数中都要做的事情,那么在基本代码中,您所要做的就是

代码语言:javascript
复制
function main() {
  foo(53)
  foo(66)
  //as many foo calls as you need
}

尝试将函数作为一段代码使用,您可以继续重用这些代码,onEdit将成为您的main()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40291441

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档