Google Apps脚本的另一个doGet()问题 - “未知的宏doGet”错误

时间:2012-07-14 21:14:54

标签: api google-apps-script

我显然是Google Apps脚本的新手,但我在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()函数,但我这样做 - 它仍然无法正常工作。我也相信谷歌应该在Google Apps脚本上创建一个真实的文档,这将按照Unix手册的方式工作,因为我无法通过所有这些奇怪的页面帮助:)这既不是Windows的帮助,也不是一本好的手册;)

此致 卡米尔

4 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:1)

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

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

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

答案 2 :(得分: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发布之前,我想出了Creating a framework for custom form interfaces using Google Apps Script可能对你的项目提供帮助]

答案 3 :(得分:0)

谢谢你们的帮助。 Serge ,是的,Google Apps脚本的结构应该是什么并不明显。它们基于JavaScript,但是,由于代码中缺少HTML,它们具有完全不同的流程 - 因此,必须首先执行主要功能。当然,在每个编程环境中,它必须有一个不同的名称,以使其更具可辨性;-)

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

这是脚本的链接,我设置了“有链接的任何人”的访问权限。

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