【发布时间】:2013-08-22 13:41:16
【问题描述】:
我需要两个单独的表格才能从电子表格的菜单中访问。经过一些麻烦后,我从 Mogsdad 找到了这个很好的答案: Single Google Form for multiple Sheets
我使用他的代码通过 htmlservice 将表单嵌入到 uiapp 中。所以我的代码看起来和他的一模一样:
function launchTecForm() {
var TecformID = '1_some_form_ID';
var Tecform = FormApp.openById(TecformID);
var TecformUrl = Tecform.getPublishedUrl();
var response = UrlFetchApp.fetch(TecformUrl);
var formHtml = response.getContentText();
var htmlApp = HtmlService
.createHtmlOutput(formHtml)
.setTitle('Tec-Response')
.setWidth(500)
.setHeight(450);
SpreadsheetApp.getActiveSpreadsheet().show(htmlApp);
}
所以这段代码在大约 2-3 周前运行良好(不能确切地说),但从那以后我要么得到登录 google-apps 的登录提示,要么得到一个服务器错误。表单设置为公开,因此不需要登录。最后登录也不起作用,因为它要求允许 cookie(在浏览器设置中是允许的。我猜 html-service 无法处理对 cookie 的登录。)
那么如何让脚本重新开始工作呢?我没有更改任何内容,它仍然与 Mogsdad 答案中的代码相同。
【问题讨论】:
-
只要您的脚本包含任何需要经过验证的用户帐户的方法,身份验证机器人就会启动并要求登录。 (例如 MailApp、GmailApp、DriveApp ...)我注意到即使代码被注释掉也是如此。因此,您可能需要查看脚本文件中的其他内容。 ...我不了解你们关于 cookie 的 cmets,您能详细说明一下吗?
-
所以应该调用的表单不需要任何登录信息。它是完全公开的。我在需要登录时遇到的问题是在 HtmlService 弹出框中无法完成登录。谷歌应用程序建议“在浏览器设置中禁用 cookie”,这将需要登录。 (实际上它们已启用,我的想法是问题将是 HtmlService 来传输登录输入......但这只是一个猜测)。
-
但我的主要问题仍未解决:当前函数没有在 HtmlService-popup 中打开任何表单(即公开的)。它总是给我一个服务器错误,没有进一步说明。我不知道在哪里寻找解决方案。
-
如果您使用上一个问题的答案创建一个新的电子表格,它对您有用吗? (它对我有用。)我认为您需要查看脚本项目中的其他功能 - 身份验证基于对整个项目的扫描。
-
@Mogsdad :我可以在全新的电子表格上重现该问题。 [链接]docs.google.com/a/computer-bildung-berlin.de/spreadsheet/… 除了我将函数绑定到自定义菜单之外,我找不到与您的示例有任何区别。 Ty 为您提供帮助和时间 :)
标签: google-apps-script google-sheets google-forms