在Google Apps脚本中调用for循环内的函数

时间:2013-03-10 23:46:38

标签: javascript google-apps-script

我发现了很多关于在循环中调用函数的信息,但我还没有发现任何涉及Google Apps脚本的内容。我已经完成了几个教程并根据我的代码编写了http://tobyho.com/2011/11/02/callbacks-in-loops/

我的真实脚本从Fusion Table中提取数据并将其放入Google Doc。我正在尝试用实际名称替换一些Fusion Table数值数据,但我需要一个在循环内运行的函数才能工作。这是一个简化的场景,给我同样的问题。

    var big = [];
    var data = [["fname1", "lname1", 2, 1980],["fname2", "lname2", 3, 1989]];

    function loop() {
      for(i in data) {
        Logger.log(big[i] = changeData(data[i][2]));
    }
    }

    function changeData(n) {
      return function() {
        Logger.log(n + "this worked");
      };
    }

当我检查日志时,我得到了两次:function(){Logger.log(n +“this working”);}

而不是执行该函数,它只是返回文本。我是javascript和Google Apps脚本的新手。这是一个GAS问题还是我的代码关闭?任何帮助表示赞赏。

感谢。

1 个答案:

答案 0 :(得分:1)

你拥有的changeData函数是声明一个函数并返回新函数。

您只需要返回changeData函数的结果

function changeData(n) {      
    Logger.log(n + "this worked"); 
    return "changed data result";
}