【问题标题】:Launch a Google-Form via Spreadsheet menu通过电子表格菜单启动 Google 表单
【发布时间】: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


【解决方案1】:

您被 HtmlService 中的更改所吸引。正如 2013 年 5 月所宣布的那样,Google 一直在更改脚本使用的 ECMA 沙盒模式的默认设置。

好消息是您只需要指定 NATIVE 沙盒模式,表单嵌入就会恢复运行。

  var htmlApp = HtmlService
      .createHtmlOutput(formHtml)
      .setSandboxMode(HtmlService.SandboxMode.NATIVE)
      .setTitle('Tec-problem')
      .setWidth(500) 
      .setHeight(450);

【讨论】:

  • 再次感谢!你让我的一天......现在它再次起作用,至少对于测试电子表格。我想我会让它在我需要它的复杂工作流程中再次工作。但现在我更进一步了。我想我现在必须将使用身份验证的脚本部分与 htmlservice 部分分开。我会看到...如果我不明白,我会回来的 :) Ty,祝你有美好的一天!
猜你喜欢
  • 2013-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多