【问题标题】:Google Apps Script: Custom function is not returning expected valueGoogle Apps 脚本:自定义函数未返回预期值
【发布时间】:2017-03-24 18:26:27
【问题描述】:

在我的 Apps 脚本中,我需要在多个不同的函数中使用相同格式的(昨天)日期。因此,我决定制作自己的自定义 makedate() 函数,以便在我需要时可靠地为我创建此日期。然而,问题是它返回undefined 而不是我的日期。这是我当前的功能:

function makeDate(){
  var myDate = new Date();
  var date = (myDate.getDate()-1) + "-" + (myDate.getMonth() + 1) + "-" + myDate.getFullYear();
  Logger.log(date);
  return date
}

在日志文件中,我看到日期是以我想要的格式创建的。但是,当我创建另一个函数来测试返回值时,日志文件显示Made date:,后面没有日期,其他用途显示该值未定义。我做错了什么?

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    您的问题是自定义函数的返回值不能依赖于输入参数以外的任何内容。在您的情况下,您没有任何结果,因此它将缓存第一个结果并将其用于具有相同参数(无)的进一步调用。

    要修复,您必须将日期作为参数传递。

    【讨论】:

      【解决方案2】:

      我发现这个问题实际上与我认为的变量范围有关。我用它来测试项目中另一个脚本的代码,没有意识到脚本中的函数都是连接的。一旦我确定每个函数/全局只有一个实例,问题就解决了。愚蠢的错误,我知道,但对于任何学习 Google Apps 脚本的初学者来说,知道这一点是件好事,所以我认为值得将其发布为答案。

      【讨论】:

      • 最好发布您自己的答案,而不是留下未回答的问题。尝试为寻找相同问题答案的其他人提供答案是件好事。但是,除非标题是描述性的,而且搜索者使用相同的搜索词,否则通常很难找到相关的问题,如果不是不可能的话。我经常很难找到我知道存在的帖子,而且我知道主题是什么。您应该将 Google 电子表格标签添加到您的原始问题中。
      • 当然,如果您认为它会对使用 Google 表格的人有所帮助。我个人不是,但请记住这一点。感谢您的提示