我需要从我的电子表格菜单中访问两个分隔表单。经过一些麻烦后,我从莫格斯德找到了这个很好的答案: 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的答案中的代码相同。
任何帮助尝试!
答案 0 :(得分:1)
你被HtmlService的变化所困。正如2013年5月宣布的那样,Google一直在更改脚本使用的ECMA沙箱模式的默认值。
好消息是您只需要指定NATIVE沙箱模式,表单嵌入将恢复运行。
var htmlApp = HtmlService
.createHtmlOutput(formHtml)
.setSandboxMode(HtmlService.SandboxMode.NATIVE)
.setTitle('Tec-problem')
.setWidth(500)
.setHeight(450);