Google sheets 跨多个电子表格共享相同的google表单
我已经创建了一个反馈表,希望从多个电子表格中打开并共享它。我在下面的帖子中使用了代码的修订版 表单按预期作为IFRAME打开,但不允许我(或任何用户)填充字段并创建响应。我错过了什么 函数onOpen(){ var ui=SpreadsheetApp.getUi(); //或文档或格式。 ui.createMenu(“数据架构”) .addItem('创建文件注释','菜单项1') .addSeparator() .add子菜单(ui.createMenu('Feedback&Actions')) .addItem('提供反馈','提供反馈') .addItem('Create and Action','createAction')) .addToUi(); } 函数provideFeedback(){ var documentName=SpreadsheetApp.getActive().getName(); var dataentityName=SpreadsheetApp.getActiveRange().getCell(1,1.getDisplayValue(); launchForm(); } 函数createAction(){ var documentName=SpreadsheetApp.getActive().getName() var documentID=SpreadsheetApp.getActive().getId() var dataentityName=SpreadsheetApp.getActiveRange().getCell(1,1).getDisplayValue() launchForm(); } 函数启动窗体(){ 变量formID='1pmH3AWiMUczat5uIaZ5zaT--cmDjq9v3W9pePPjwGF0'; var form=FormApp.openById(formID); var formURL=form.getPublishedUrl(); var response=UrlFetchApp.fetch(formURL); var formHtml=response.getContentText(); var htmlApp=HtmlService .createHtmlOutput(formHtml) .setSandboxMode(HtmlService.SandboxMode.IFRAME) .setTitle(“反馈和行动表”) .setWidth(800) .设置高度(800); SpreadsheetApp.getActiveSpreadsheet().show(htmlApp);Google sheets 跨多个电子表格共享相同的google表单,google-sheets,google-spreadsheet-api,google-forms,Google Sheets,Google Spreadsheet Api,Google Forms,我已经创建了一个反馈表,希望从多个电子表格中打开并共享它。我在下面的帖子中使用了代码的修订版 表单按预期作为IFRAME打开,但不允许我(或任何用户)填充字段并创建响应。我错过了什么 函数onOpen(){ var ui=SpreadsheetApp.getUi(); //或文档或格式。 ui.createMenu(“数据架构”) .addItem('创建文件注释','菜单项1') .addSeparator() .add子菜单(ui.createMenu('Feedback&Actions'
}您可以在URL中使用带有src的iframe标记,而不是访问网页并生成HTML内容并再次提供它
function launchForm(){
var formID='1pmH3AWiMUczat5uIaZ5zaT--cmDjq9v3W9pePPjwGF0';
var form = FormApp.openById(formID);
var formURL = form.getPublishedUrl()+ "?embedded=true"
var htmlApp = HtmlService
.createHtmlOutput('<iframe src="'+formURL+'" width="500" height="400" frameborder="0" marginheight="0" marginwidth="0"> </iframe>')
.setTitle('Feedback and action form')
.setWidth(400)
.setHeight(400);
SpreadsheetApp.getActiveSpreadsheet().show(htmlApp);
}
我已将各个选项分开,以便更容易与表单中的条目进行比较。现在要修改条目,只需修改每个条目的“=”符号后的值。因此,要更改名称,请执行以下操作:
var name = "Chuck Norris"
entry.1739076204='+name+'
同样,您可以通过修改URL来修改每个输入。下面的代码修改我托管的特定表单的条目。您必须根据您的需要修改if
function launchForm(){
var publishedURl = "https://docs.google.com/forms/d/e/1FAIpQLSdsHM53jTWJ0Eqn8VSxE5bWHjnD9KXsVBrqLsBwtyJIIsjpnA/viewform"
var name = "Chuck Not Norris"
var dt = Utilities.formatDate(new Date(), "GMT-05:00", "yyyy-MM-dd")
var options1 = ["Correct","Incorrect"]
var options2 = "Chuck Norris is google Apps Scripts"
var options3 = ["Select Me","Don't select me"]
var preEditUrl = publishedURl + '?usp=pp_url&entry.1739076204='+name
+'&entry.1869878870='+dt
+'&entry.799903038='+options1[0]
+'&entry.1996064114='+options2
+'&entry.607023772='+options3[0]
var htmlApp = HtmlService
.createHtmlOutput('<iframe src="'+preEditUrl+'" width="500" height="400" frameborder="0" marginheight="0" marginwidth="0"> </iframe>')
.setTitle('Feedback and action form')
.setWidth(400)
.setHeight(400);
SpreadsheetApp.getActiveSpreadsheet().show(htmlApp);
}
函数启动表单(){
var publishedURl=”https://docs.google.com/forms/d/e/1FAIpQLSdsHM53jTWJ0Eqn8VSxE5bWHjnD9KXsVBrqLsBwtyJIIsjpnA/viewform"
var name=“Chuck Not Norris”
var dt=Utilities.formatDate(新日期(),“GMT-05:00”,“yyyy-MM-dd”)
变量选项1=[“正确”、“不正确”]
var options2=“Chuck Norris是谷歌应用程序脚本”
变量选项3=[“选择我”、“不选择我”]
var preEditUrl=publishedURl+'?usp=pp_url&entry.1739076204='+name
+“&entry.1869878870=”+dt
+“&entry.799903038=”+选项1[0]
+“&entry.1996064114=”+选项2
+“&entry.607023772=”+选项3[0]
var htmlApp=HtmlService
.createHtmlOutput(“”)
.setTitle(“反馈和行动表”)
.setWidth(400)
.设置高度(400);
SpreadsheetApp.getActiveSpreadsheet().show(htmlApp);
}
希望这能让你朝着正确的方向开始 分享你用来显示表单的部分代码会很有用。我已经将代码添加到原始帖子中。这很有用,非常感谢;非常感谢。剩下的唯一问题是,当表单在IFRAME中打开时,如何预填充某些字段,例如创建响应的用户的电子邮件地址,将日期字段默认为当前日期,以及调用方传递的3个参数。@MVega更新了答案,解释了如何预填充字段
function launchForm(){
var publishedURl = "https://docs.google.com/forms/d/e/1FAIpQLSdsHM53jTWJ0Eqn8VSxE5bWHjnD9KXsVBrqLsBwtyJIIsjpnA/viewform"
var name = "Chuck Not Norris"
var dt = Utilities.formatDate(new Date(), "GMT-05:00", "yyyy-MM-dd")
var options1 = ["Correct","Incorrect"]
var options2 = "Chuck Norris is google Apps Scripts"
var options3 = ["Select Me","Don't select me"]
var preEditUrl = publishedURl + '?usp=pp_url&entry.1739076204='+name
+'&entry.1869878870='+dt
+'&entry.799903038='+options1[0]
+'&entry.1996064114='+options2
+'&entry.607023772='+options3[0]
var htmlApp = HtmlService
.createHtmlOutput('<iframe src="'+preEditUrl+'" width="500" height="400" frameborder="0" marginheight="0" marginwidth="0"> </iframe>')
.setTitle('Feedback and action form')
.setWidth(400)
.setHeight(400);
SpreadsheetApp.getActiveSpreadsheet().show(htmlApp);
}