【问题标题】:"Script function not found" - Google App Scripts“找不到脚本函数” - Google 应用脚本
【发布时间】:2015-06-01 14:48:44
【问题描述】:

我开始使用 Google App Scripts,并且我对 JavaScript 知之甚少,我尝试了以下操作。我收到一个错误,但脚本似乎确实有效。

为什么会报错?当我按下小播放按钮时,它似乎特别希望运行一个功能。像我在下面所做的那样构建一个谷歌应用程序脚本文档会是不好的做法吗?

(function (id) {

  var sheet = SpreadsheetApp.openById(id).getSheets()[0];

  var data = sheet.getDataRange().getValues();

  Logger.log(data);

  sheet.appendRow(['this','is','another', 'bigger','test','of','stuff']);

})('1BXDicksYS19jre0tZKHEjqqyvdzbhbtFfSm053q2sZ0')

=== 编辑 ===

Google Apps 脚本不应该从 IIFE 运行,因为它想显式地触发一个函数。所以是的。我认为,根据我一年后仍然有限的经验,这是编写 Google Apps 脚本的糟糕方式。

【问题讨论】:

  • 在 VIEW 菜单下,选择“Execution Transcript”。查看列表的底部。有错误信息吗?如果是这样,它是什么,是什么线?
  • 是的,有一个错误:15-06-01 16:55:53:632 SAST] 执行失败:找不到脚本函数:createReport [0.0 秒总运行时间]
  • 但是脚本中没有命名函数。我不知道为什么它一直试图运行一个(起初我有一个名为 createReport 的函数。但是,它完全按照它应该的方式工作,所以它几乎是一个错误?
  • 您使用的 JavaScript 语法被许多人称为“自调用”函数。在某些条件下,该函数无需调用即可运行。它也是一个匿名函数。 (它没有名称)因此函数名称字段中没有列出名称。如果单击 Run 按钮,该函数可能会运行,因为它位于全局范围内。不知道你想怎么触发这个功能?
  • 是的,就像桑迪说的那样。使用 function myFunction() { var id='xxxxx'; etc; } 中的“常规”函数语法,然后它将出现在函数列表中并可以在触发器中使用

标签: javascript google-apps-script iife


【解决方案1】:

当您加载文件时,以 .gs 结尾的 Google App Scripts 文件不会像 JavaScript 那样运行文件中的所有函数,所有 IIFE 都将运行。

为了在 .gs 文件中运行您在上面使用的函数,您需要添加电子表格的 onOpen 或 onEdit 触发器。 打开/编辑:https://developers.google.com/apps-script/guides/triggers/

您可以根据特定的 h/d/m 条件设置的时间触发器。 可安装触发器: https://developers.google.com/apps-script/guides/triggers/installable

如果您想将此连接到 google 网络应用程序,您需要使用 google.scripts.run.functionName() 在客户端运行 .gs 函数: https://developers.google.com/apps-script/guides/html/reference/run

不要在 .gs 文件中使用立即调用的函数。由于 Google App Script 文件树的工作方式,为您的 .gs 函数指定非常具体的名称也很好。

所有函数都可以在 google app 脚本文件树中的任何文件中访问,这意味着您可以在 google app 脚本中的任何文件中调用任何函数。

如果在这个结构中有一个没有名字的函数,就不可能调用无名的函数。希望对您有所帮助。

【讨论】:

    【解决方案2】:

    Google Apps 脚本不应该从 IIFE 运行,因为它想显式地触发一个函数。所以是的。我认为,根据我一年后仍然有限的经验,这是编写 Google Apps 脚本的糟糕方式。

    【讨论】:

      猜你喜欢
      • 2019-04-28
      • 2016-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-22
      • 2016-12-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多