0

我需要两个单独的表格才能从我的电子表格的菜单中访问。经过一些麻烦后,我从 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 答案中的代码相同。

4

1 回答 1

1

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

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

  var htmlApp = HtmlService
      .createHtmlOutput(formHtml)
      .setSandboxMode(HtmlService.SandboxMode.NATIVE)
      .setTitle('Tec-problem')
      .setWidth(500) 
      .setHeight(450);
于 2013-08-29T16:27:47.777 回答