在Google Apps脚本中调用函数

时间:2016-03-14 12:12:46

标签: javascript google-apps-script google-sheets

到处寻找这个没有真正的运气。

我希望使用谷歌应用程序脚本将函数调用到另一个函数中。这两个函数都在当前项目中,当我这样做时,我调用的函数没有被拉过来,因为变量没有在两个函数之间进行链接

我希望调用的函数名为“getDates”,其中包含变量“year”。但是当我调用该函数时,脚本会调用'year'它返回undefined。

这是getDates功能:

  function getDates {
 var startDate = new Date(sheet.getRange("B1").getValue());
var year = startDate.getFullYear();}

我希望将此功能称为以下内容:

    function one {

         getDates();

          var url = "https://(hidden url)" + year; 

        UrlFetchApp.fetch(url);
        var dataAll = JSON.parse(response.getContentText()); //
  var dataSet = dataAll;

  var rows = [],
      data;


  for (i = 0; i < Object.keys(dataSet).length; i++) { data = dataSet[Object.keys(dataSet)[i]]; rows.push([data.XXX]); }


  dataRange = sheet.getRange(7, 2, rows.length, 1); 
  dataRange.setValues(rows);
    }

1 个答案:

答案 0 :(得分:2)

Google Apps脚本和旧版本的JS通常使用功能范围,因此除非返回,否则其包含的环境无法访问函数中声明的任何值。

您的函数没有return语句,因此它隐式返回undefined。作为副作用,它声明了两个变量,然后在函数完成时垃圾收集它们。

您想在getDates()函数return year;中添加一行,并将其分配给one()

中的变量

在函数终止后访问函数内变量的唯一方法是让函数(getDates())返回一个函数。然后,该函数将包含contains函数的环境,即使在该函数终止后也可以访问其变量。这称为closure,但在您的情况下不是很有用。