在 Google 电子表格的弹出窗口中创建一个 Google 表单。这可以做到吗?
Create a Google Form in Pop up of Google Spreadsheet. Could this be done?
参考:
Single Google Form for multiple Sheets
重新声明:
- 我有点难以使我的写作变得更好或更好
理解(少说英语)。
- 我对 Google Apps Script (GAS) 有了一点了解。
- 我改变了 "MyURLDoc" 和 "MyIdDoc" 波纹管作为 cosderring
我的
问题:
如何在 Google 电子表格中创建一个 Google 表单?
尝试 1:
function goToURL() {
FormApp.openByUrl(//*** MyURLDoc! ***//);
}
尝试 2:
以下是参考文献!
function goToForm() {
var form = FormApp.openById(//*** MyIdDoc! ***//),
formUrl = form.getPublishedUrl(),
response = UrlFetchApp.fetch(formUrl),
formHtml = response.getContentText(),
htmlApp = HtmlService
.createHtmlOutput(formHtml)
.setSandboxMode(HtmlService.SandboxMode.IFRAME)
.setTitle('Ta Daaa!')
.setWidth(500)
.setHeight(450); SpreadsheetApp.getActiveSpreadsheet().show(htmlApp);
}
问题:
它总是这样说: ” 找不到具有给定 ID 的项目,或者您没有权限 “
使用 Google 表单创建边栏
我刚刚使用旧表格获取了嵌入代码。我加载到我在另一个项目上的侧边栏中,并粘贴了嵌入代码,它是一个 iframe,除了大小和我 运行 表单外,它加载完美,果然它将数据加载到包含它的电子表格中。
我想我会继续添加一个完整的示例。这是一个简单的示例,它创建了一个用于将时间戳文本输入到电子表格中的表单。它有两种方式。第一种技术使用标准 html、javascript、JQuery 和 Google 脚本。第二种技术是通过创建一个表单并将其嵌入到一个简单的 html 页面中来实现的。两个版本都适合侧边栏,并且都链接到加载文本和时间戳的电子表格页面。
Code.gs:
function onOpen()
{
SpreadsheetApp.getUi().createMenu('My Tools')
.addItem('createTextEntryForm', 'createTextEntryForm')
.addToUi();
loadSideBar();
SpreadsheetApp.getUi().createMenu('My Menu').addItem('loadSidebar', 'loadSideBar').addToUi();
}
//This loads the text into the spreadsheet for the html version of the form.
function dispText(txt)
{
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sht=ss.getSheetByName('Notes');
var ts=Utilities.formatDate(new Date(), 'GMT-6', "M/dd/yyyy HH:mm:ss");
var row=[];
row.push(ts);
row.push(txt);
sht.appendRow(row);
return true;
}
function loadSideBar()
{
var userInterface=HtmlService.createHtmlOutputFromFile('formBar');//sidebar for html and formBar for form
SpreadsheetApp.getUi().showSidebar(userInterface);
}
//This is the form
function createTextEntryForm()
{
var ss=SpreadsheetApp.getActiveSpreadsheet();
var form=FormApp.create('Form On A Sidebar');
form.setDescription('Enter Your Message and Push Submit when complete.')
.setConfirmationMessage('Message Saved and TimeStamped.')
.setAllowResponseEdits(true)
.setAcceptingResponses(false)
.setDestination(FormApp.DestinationType.SPREADSHEET, ss.getId());
var containerLink=form.addParagraphTextItem();
containerLink.setTitle('Enter your comment now.')
.isRequired();
}
sidebar.html 是 html 形式的版本:
<!DOCTYPE html>
<html>
<head>
<base target="_top">
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
$(function() {
$('#txt1').val('');
});
function sendText()
{
var txt=$('#txt1').val();
google.script.run
.withSuccessHandler(clearText)
.dispText(txt);
}
function clearText()
{
$('#txt1').val('');
}
console.log("My code");
</script>
</head>
<body>
<textarea id="txt1" rows="12" cols="35"></textarea>
<br />
<input id="btn1" type="button" value="submit" onClick="sendText();" />
</body>
</html>
formBar.html 是嵌入表格的地方:
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<iframe src="FormURL?embedded=true#start=embed" width="300" height="550" frameborder="0" marginheight="0" marginwidth="0">Loading...</iframe>
</body>
</html>
这是电子表格和边栏的样子:
参考:
Single Google Form for multiple Sheets
重新声明:
- 我有点难以使我的写作变得更好或更好 理解(少说英语)。
- 我对 Google Apps Script (GAS) 有了一点了解。
- 我改变了 "MyURLDoc" 和 "MyIdDoc" 波纹管作为 cosderring 我的
问题:
如何在 Google 电子表格中创建一个 Google 表单?
尝试 1:
function goToURL() {
FormApp.openByUrl(//*** MyURLDoc! ***//);
}
尝试 2:
以下是参考文献!
function goToForm() {
var form = FormApp.openById(//*** MyIdDoc! ***//),
formUrl = form.getPublishedUrl(),
response = UrlFetchApp.fetch(formUrl),
formHtml = response.getContentText(),
htmlApp = HtmlService
.createHtmlOutput(formHtml)
.setSandboxMode(HtmlService.SandboxMode.IFRAME)
.setTitle('Ta Daaa!')
.setWidth(500)
.setHeight(450); SpreadsheetApp.getActiveSpreadsheet().show(htmlApp);
}
问题:
它总是这样说: ” 找不到具有给定 ID 的项目,或者您没有权限 “
使用 Google 表单创建边栏
我刚刚使用旧表格获取了嵌入代码。我加载到我在另一个项目上的侧边栏中,并粘贴了嵌入代码,它是一个 iframe,除了大小和我 运行 表单外,它加载完美,果然它将数据加载到包含它的电子表格中。
我想我会继续添加一个完整的示例。这是一个简单的示例,它创建了一个用于将时间戳文本输入到电子表格中的表单。它有两种方式。第一种技术使用标准 html、javascript、JQuery 和 Google 脚本。第二种技术是通过创建一个表单并将其嵌入到一个简单的 html 页面中来实现的。两个版本都适合侧边栏,并且都链接到加载文本和时间戳的电子表格页面。
Code.gs:
function onOpen()
{
SpreadsheetApp.getUi().createMenu('My Tools')
.addItem('createTextEntryForm', 'createTextEntryForm')
.addToUi();
loadSideBar();
SpreadsheetApp.getUi().createMenu('My Menu').addItem('loadSidebar', 'loadSideBar').addToUi();
}
//This loads the text into the spreadsheet for the html version of the form.
function dispText(txt)
{
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sht=ss.getSheetByName('Notes');
var ts=Utilities.formatDate(new Date(), 'GMT-6', "M/dd/yyyy HH:mm:ss");
var row=[];
row.push(ts);
row.push(txt);
sht.appendRow(row);
return true;
}
function loadSideBar()
{
var userInterface=HtmlService.createHtmlOutputFromFile('formBar');//sidebar for html and formBar for form
SpreadsheetApp.getUi().showSidebar(userInterface);
}
//This is the form
function createTextEntryForm()
{
var ss=SpreadsheetApp.getActiveSpreadsheet();
var form=FormApp.create('Form On A Sidebar');
form.setDescription('Enter Your Message and Push Submit when complete.')
.setConfirmationMessage('Message Saved and TimeStamped.')
.setAllowResponseEdits(true)
.setAcceptingResponses(false)
.setDestination(FormApp.DestinationType.SPREADSHEET, ss.getId());
var containerLink=form.addParagraphTextItem();
containerLink.setTitle('Enter your comment now.')
.isRequired();
}
sidebar.html 是 html 形式的版本:
<!DOCTYPE html>
<html>
<head>
<base target="_top">
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
$(function() {
$('#txt1').val('');
});
function sendText()
{
var txt=$('#txt1').val();
google.script.run
.withSuccessHandler(clearText)
.dispText(txt);
}
function clearText()
{
$('#txt1').val('');
}
console.log("My code");
</script>
</head>
<body>
<textarea id="txt1" rows="12" cols="35"></textarea>
<br />
<input id="btn1" type="button" value="submit" onClick="sendText();" />
</body>
</html>
formBar.html 是嵌入表格的地方:
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<iframe src="FormURL?embedded=true#start=embed" width="300" height="550" frameborder="0" marginheight="0" marginwidth="0">Loading...</iframe>
</body>
</html>
这是电子表格和边栏的样子: