google 工作表从脚本启动表单
google sheets launch form from script
我正在尝试按照从此处借用的代码从我的脚本中的脚本启动表单:
Single Google Form for multiple Sheets
我的操作如下:
function CreateForm() {
var form = FormApp.create('New Form');
var item = form.addCheckboxItem();
item.setTitle('Is this working now?');
item.setChoices([
item.createChoice('yes'),
item.createChoice('no')
]);
form.addMultipleChoiceItem()
.setTitle('What should I do about it?')
.setChoiceValues(['Complain', 'Rejoice', 'Keep Trying'])
.showOtherOption(true);
Logger.log('Published URL: ' + form.getPublishedUrl());
Logger.log('Editor URL: ' + form.getEditUrl());
Logger.log('Form ID: ' + form.getId());
}
function launchForm() {
var formTitle = 'Weekly Report Questionnaire';
var formID = '1NjNO7JTlt9H2IB6L3QowGitR38o2KrnZxpKB3MWoVXE';
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(formTitle)
.setWidth(500)
.setHeight(450);
SpreadsheetApp.getActiveSpreadsheet().show(htmlApp);
}
所以问题是,当我从我的菜单加载项执行 launchForm 时,表单出现了,但它不起作用 - 我无法选中复选框、输入文本或提交表单 ,尽管当我将鼠标悬停在某个项目上时光标会发生变化。我只能关闭表格。我希望表单将表单中输入字段的值存储为变量,以便稍后在我的电子邮件 html 文本中输出。
这个解决方法怎么样?在此解决方法中,直接使用表单 URL 并在 iframe 中打开。
修改脚本:
我只修改了launchForm()
如下
function launchForm() {
var formTitle = 'Weekly Report Questionnaire';
var formID = '1NjNO7JTlt9H2IB6L3QowGitR38o2KrnZxpKB3MWoVXE';
var form = FormApp.openById(formID);
var formUrl = form.getPublishedUrl();
var htmlApp = HtmlService
.createHtmlOutput('<script>location.href = "' + formUrl + '"</script>')
.setSandboxMode(HtmlService.SandboxMode.IFRAME)
.setTitle(formTitle)
.setWidth(500)
.setHeight(450);
SpreadsheetApp.getActiveSpreadsheet().show(htmlApp);
}
如果这对您没有用,我很抱歉。
我正在尝试按照从此处借用的代码从我的脚本中的脚本启动表单:
Single Google Form for multiple Sheets
我的操作如下:
function CreateForm() {
var form = FormApp.create('New Form');
var item = form.addCheckboxItem();
item.setTitle('Is this working now?');
item.setChoices([
item.createChoice('yes'),
item.createChoice('no')
]);
form.addMultipleChoiceItem()
.setTitle('What should I do about it?')
.setChoiceValues(['Complain', 'Rejoice', 'Keep Trying'])
.showOtherOption(true);
Logger.log('Published URL: ' + form.getPublishedUrl());
Logger.log('Editor URL: ' + form.getEditUrl());
Logger.log('Form ID: ' + form.getId());
}
function launchForm() {
var formTitle = 'Weekly Report Questionnaire';
var formID = '1NjNO7JTlt9H2IB6L3QowGitR38o2KrnZxpKB3MWoVXE';
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(formTitle)
.setWidth(500)
.setHeight(450);
SpreadsheetApp.getActiveSpreadsheet().show(htmlApp);
}
所以问题是,当我从我的菜单加载项执行 launchForm 时,表单出现了,但它不起作用 - 我无法选中复选框、输入文本或提交表单 ,尽管当我将鼠标悬停在某个项目上时光标会发生变化。我只能关闭表格。我希望表单将表单中输入字段的值存储为变量,以便稍后在我的电子邮件 html 文本中输出。
这个解决方法怎么样?在此解决方法中,直接使用表单 URL 并在 iframe 中打开。
修改脚本:
我只修改了launchForm()
如下
function launchForm() {
var formTitle = 'Weekly Report Questionnaire';
var formID = '1NjNO7JTlt9H2IB6L3QowGitR38o2KrnZxpKB3MWoVXE';
var form = FormApp.openById(formID);
var formUrl = form.getPublishedUrl();
var htmlApp = HtmlService
.createHtmlOutput('<script>location.href = "' + formUrl + '"</script>')
.setSandboxMode(HtmlService.SandboxMode.IFRAME)
.setTitle(formTitle)
.setWidth(500)
.setHeight(450);
SpreadsheetApp.getActiveSpreadsheet().show(htmlApp);
}
如果这对您没有用,我很抱歉。