我显然是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的帮助,也不是一本好的手册;)
此致 卡米尔
答案 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/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的某个人应该看看这个:)
这是脚本的链接,我设置了“有链接的任何人”的访问权限。