无法获得Hello world示例作为Web应用程序

时间:2014-10-27 20:57:07

标签: google-apps-script

我是谷歌应用程序脚本的新手,但我无法相信我遇到的问题。我甚至无法获得Hello World!例如,作为网络应用程序工作。

我已经从谷歌的文档网站复制并粘贴了代码,但仍然无法让它发挥作用。 (我先尝试了更复杂的东西,但后来我开始尝试更简单,更简单的代码,直到我解决了下面的问题。)

当我将以下代码发布为网络应用时:

function doGet() {
    return ContentService.createTextOutput('Hello, world!');
}

而不是看到" Hello,world!"在浏览器中,我收到以下错误消息:

脚本已完成,但未返回任何内容。

我真的很茫然。我不知道如何尝试更简单的方法,而且上面的代码段直接从Content Service文档页面(https://developers.google.com/apps-script/reference/content/)进行了复制和粘贴。

非常感谢任何有关此问题的帮助。

提前致谢。

3 个答案:

答案 0 :(得分:1)

感谢Alan的回复。

我创建了一个新项目并将Hello world代码粘贴到其中,并且它有效。我将从这个新项目开始工作。

...

现在我还有几分钟的经验,我认为我的问题在于版本控制。我认为当我对代码进行更改并更新当前版本时,作为Web应用程序发布的当前版本将反映我的代码中的此更改。但是,您似乎必须创建新版本的代码,以便新发布的Web应用程序能够反映代码中的最新更改。我的问题是我没有创建新版本,因为我更改了我的代码,因此我一直在访问旧代码,该代码始终与首次创建该版本时相同。

(使用测试网络应用获取 最新代码 链接(位于 部署为网络应用 )从发布菜单访问的对话框确实反映了我最近的更改,但这不适合我的测试目的,因为我向我的网络应用程序网址发送了参数。( 最新代码 链接仅使用没有附加参数的Web应用程序URL的只读版本调用您的Web应用程序。)为了正确测试附加了所有参数的Web应用程序网址,我需要在不同的版本号下重新发布新代码,以便将这些更改反映在已发布的网络应用中。只有这样我才能访问这个指向我最新代码的网址。附加的参数。)

再次,只需点击 部署为Web应用程序 对话框中的 更新 按钮,而无需指定新版本实际上并没有使用您的新代码更新当前版本。为了部署您的最新/最新代码,您必须创建一个新版本的代码,以反映您的最新更改。要创建新版本,首先必须从文件菜单中选择 管理版本... ,然后保存新版本通过点击 保存新版 按钮反映您最近的代码更改。完成此操作后,您可以选择在 部署为Web应用程序 对话框中发布此新版本。然后,您的网络应用的网址将访问您上次部署/发布的代码版本。

我知道这里的每个人可能已经知道了这一点,但我想我会澄清我的问题是什么(了解代码发布周期的工作流程的问题),以防将来任何新手也运行这个问题。

<<<<<的 更新 >>>>>
请参阅Serge下面的答案,了解如何使用附加参数的web应用程序URL的开发版本。在许多情况下,如果/当您只对代码进行增量更改时,这可以减少创建Web应用程序的新(exec)版本的需要,如上所述。

为了在浏览器地址栏中保存您的dev url,以便您可以将其复制以供进一步使用(而不是获取用于临时提供内容/输出的script.googleusercontent.com ... url您的网络应用程序)只需在您的网络应用程序代码中调用未定义的功能。然后使用测试网络应用获取 最新代码 链接,以调用您的网络应用的开发版本。这将导致返回错误页面,然后您的dev url将可以在浏览器地址栏中进行复制。

答案 1 :(得分:0)

按照这些步骤,我可以运行Hello World脚本:

  • 转到script.google.com
  • 将上述代码粘贴到脚本区域。
  • 另存为Hello World。
  • 发布为1.0版。
  • 转到它生成的网址和“Hello,world!”现在显示。

现在,您还可以在发布时使用最新代码测试Web应用程序。

答案 2 :(得分:0)

您的.dev网址无法支持参数的说法并不完全正确(最新的代码链接仅使用您的网络应用网址的只读版本调用您的网络应用,该网页应用网址没有附加参数它)。实际上它就像exec一样,但你只能直接从浏览器(而不是从另一个应用程序)调用这个URL,因为只有你可以使用这个特殊的URL来访问应用程序

演示代码:

function doGet(e) {
  var valToReturn = ContentService.createTextOutput('the parameter was '+e.parameter.val).setMimeType(ContentService.MimeType.TEXT);
  return valToReturn;
}

带参数的测试.dev url如下所示:

https://script.google.com/macros/s/AKfycb___vWxs/dev?val='test'

您在浏览器中获得的回报是:

enter image description here