javascript - 在 Google Apps 脚本中调用函数

标签 javascript google-apps-script google-sheets

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

我希望使用 Google Apps 脚本将一个函数调用到另一个函数中。这两个函数都在当前项目中,但当我这样做时,我调用的函数没有被拉出,因为变量没有在两个函数之间链接

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

这是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);
    }

最佳答案

Google Apps 脚本和旧版本的 JS 通常使用函数作用域,因此函数内声明的任何值都无法通过其包含的环境访问,除非返回该值。

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

您想要向 getDates() 函数 returnyear; 添加一行,并将其分配给 one() 中的变量

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

关于javascript - 在 Google Apps 脚本中调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35987248/

相关文章:

javascript - JS 检测 html 元素何时换行

google-apps-script - 既然链接没有反射(reflect)为超链接,如何从单元格中提取链接?

javascript - Google Apps 脚本重命名事件文档

google-apps-script - 如何自定义工作表标签的右键弹出菜单

Google 表单/Google 表格的 JavaScript 验证

google-sheets - 基于一列颜色缩放整行

javascript - 如何使用 React 中的 google Sheets api 动态获取电子表格中的工作表列表?

javascript - 在 Redux 中使用 Action 的正确方法

javascript - jquery 更改所选 div 的背景颜色

google-apps-script - 仅通过菜单运行 Google 表格脚本时来自 API 的 "Request Blocked"(在脚本编辑器中运行)