通过电子表格菜单启动Google表单

时间:2013-08-22 13:41:16

标签: google-apps-script google-sheets google-form

我需要从我的电子表格菜单中访问两个分隔表单。经过一些麻烦后,我从莫格斯德找到了这个很好的答案: Single Google Form for multiple Sheets

我使用他的代码使用htmlservice将表单嵌入到teh 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登录提示,要么我收回服务器错误。表单设置为publick,因此不需要登录。最后登录也不起作用,因此它要求允许cookie(在浏览器设置中是允许的。我猜html服务无法处理登录cookie。)

那么如何让脚本重新恢复工作呢?我没有改变任何东西,它仍然与Mogsdad的答案中的代码相同。

任何帮助尝试!

1 个答案:

答案 0 :(得分:1)

你被HtmlService的变化所困。正如2013年5月宣布的那样,Google一直在更改脚本使用的ECMA沙箱模式的默认值。

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

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