2

我显然是 Google Apps Script 的新手,但我在 C、PHP 和 Java 编码方面有一些经验。由于我们想在我们的公司中使用 Google Apps 脚本创建一个小型 CRM,因此我们需要创建一个应用程序,其中包含 Google 协作平台上可用的表单。我一直在寻找这个问题的答案很长时间,不幸的是我没有找到任何答案。我有这样的代码:

var klienci_id = new Array(100);
var klienci_nazwa = new Array(100);
var klienci_adres = new Array(100);
var klienci_osoba = new Array(100);
var klienci_telefon = new Array(100);
var klienci_email = new Array(100);

function doGet(e) {
  var app = UiApp.createApplication();

   // hello world label
  var helloworldLabel = app.createLabel("I love Apps  Script!").setStyleAttribute("fontSize","16px");

  // add the label to the app container
  app.add(helloworldLabel);

  return app;
}


function main() {

 var klienci = SpreadsheetApp.openById("0ArsOaWajjzv9dEdGTUZCWFc1NnFva05uWkxETVF6Q0E");

 var kuchnia_polska = klienci.getSheetByName("Kuchnia polska");

 var dane = kuchnia_polska.getRange("D7:F22");

doGet();

}

每次我尝试发布它并输入给定的链接时,我都会收到错误“Unknown macro doGet”。我知道当有人不使用 doGet() 函数但我使用时这是一个常见问题 - 但它仍然不起作用。我也相信谷歌应该在谷歌应用脚​​本上创建一个完整的文档,它可以像 Unix 手册那样工作,因为我无法通过所有这些奇怪的页面帮助:) 它既不是 Windows 帮助,也不是一个好的手册;)

问候, 卡米尔

4

4 回答 4

6

我怀疑您制作了一次“版本”,发布了应用程序,转到“真实”链接而不是“开发”链接,然后添加了 doGet() 函数。当你制作一个版本时,它会冻结当时的代码。发布应用程序的版本是在“真实”链接(您为用户提供的内容)上运行的代码版本,它允许您继续编辑代码而不会干扰应用程序的现有用户。在发布对话框中有一个特殊的“开发”链接,它总是引用最新版本的代码,但它只对你有效,对其他人无效。

于 2012-07-15T12:35:28.723 回答
1

我担心您对“doGet()”函数的使用有一点误解。当您想将应用程序作为 webapp 运行时,文档确实说它必须包含一个 doGet 函数,但它没有明确说明这个函数应该是整个应用程序的起点,即函数该网址将首先调用。因此,从所谓的“主”函数调用 doGet 函数没有多大意义,因为“主”函数不是主函数......

我现在无法想象某个函数调用 doGet 函数的情况,因为脚本中的每个函数最初(直接或间接)都是从这个 doGet 函数调用的......实际上是脚本中任何其他函数的“结束”返回'到 doGet 初始函数。好吧,这可能并非在每种情况下都绝对正确,但它可以让您大致了解它是如何工作的。

我希望这足够清楚,回到您的代码片段,如果您删除 doGet(e) 调用,它会显示一个很好的“我喜欢 Apps 脚本!” 但它永远不会做任何其他事情,当然看不到“主要”功能。

于 2012-07-15T10:49:16.923 回答
0

我在这里复制了您的代码https://script.google.com/macros/d/MJ80AK8t7kbgDcC-NaLPYvH797_hv7HHb/edit?template=app&folder=0AKGkLMU9sHmLUk9PVA

并且当部署为网络应用程序时似乎可以工作https://script.google.com/macros/s/AKfycbxOiaukLt7P4pIm7bms7aU16uEo6FuZ-MNOh0tSqUwr/dev

我能想到的唯一一件事是您的代码中还有其他内容未复制到引发异常的代码段中。

[就在 GUI Builder 发布之前,我想出了使用 Google Apps 脚本为自定义表单界面创建一个框架,这可能会对您的项目有所帮助]

于 2012-07-15T08:56:06.640 回答
0

谢谢你们俩的帮助。Serge,是的,Google Apps 脚本的结构应该是什么并不明显。它们基于 JavaScript,然而,由于代码中缺少 HTML,它们的流程完全不同——所以自然必须有一个首先执行的 main 函数。当然,在每个编程环境中,它都必须有一个不同的名称才能使其更容易区分;-)

我创建了我的应用程序的一个新副本,没有完全更改代码 - 部署它并且它工作得很好。由于我没有更改访问选项中的任何内容,因此具有相同代码和相同选项的两个应用程序不会给出相同的结果是很奇怪的。我认为这可能是一种环境缺陷,也许谷歌的人应该看看这个:)

这是脚本的链接,我已将访问权限设置为“知道链接的任何人”。

https://script.google.com/a/macros/foodbroker.pl/s/AKfycbwk2IM-rIYLhQl6HOlbppwGOnw4Ik_kH7ixbaSNVxIE-QR7cq8/exec

于 2012-07-15T12:25:25.943 回答