Google 表单的附加组件 - 常量变量 - 永久保存值
Add-on to Google Forms - constant variables - Save values permanently
我正在创建一个 Google 表单插件。用户在边栏中指示要使用的文件以及文件在 Google Drive 中的放置位置。附加组件需要将这两个变量永久保存在服务器上。如何保存用户设置?
我的 HTML - 右边的边栏,当此表单的所有者正在创建问题和答案类型时
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<div>
<form id="myForm" onsubmit="handleFormSubmit(this)">
Link to your document:
<br>
<input type="text" name="document"><br><br>
Link to your folder in your Google Drive:
<br>
<input type="text" name="drive"><br><br>
<input type="submit" value="Prześlij">
</form>
</div>
<br>
<script>
function handleFormSubmit(formObject) {
google.script.run.withSuccessHandler(close).processForm(formObject);
}
function close() {
google.script.host.close();
}
</script>
</body>
</html>
My code.gs
function onOpen() {
FormApp.getUi()
.createMenu('Additional menu')
.addItem('Answers to file', 'showSidebar')
.addSeparator()
.addToUi();
}
function showSidebar() {
var html = HtmlService.createHtmlOutputFromFile('sidebar')
.setTitle('Save your form!')
.setWidth(300);
FormApp.getUi()
.showSidebar(html);
}
function processForm(formObject) {
var ui = FormApp.getUi();
var linkToDoc = formObject.document;
ui.alert ('Link do dokumentu to: '+linkToDoc);
var idOfDoc = linkToDoc.match(/[-\w]{25,}/);
ui.alert ('ID dokumentu: '+ idOfDoc);
var linkToDrive = formObject.drive;
ui.alert ('Link do folderu na Dysku Google: '+linkToDoc);
var idOfDrive = linkToDrive.match(/[-\w]{25,}/);
ui.alert ('ID folderu na Dysku Google: '+ idOfDrive);
}
function myFunction(e) { //Trigger that starts when the end user completes and sends the form.
How can I use here variables from proccessForm()? I mean idOfDoc and idOfDrive.
}
现在效果很好。下面是我从表单中保存变量的函数。我在表单中添加了一个额外的输入,所以这里是邮件变量。
var scriptProperties = PropertiesService.getScriptProperties();
function processForm(formObject) {
var ui = FormApp.getUi();
var linkToDoc = formObject.document;
ui.alert ('Link to doc: '+linkToDoc);
var idOfDoc = linkToDoc.match(/[-\w]{25,}/);
ui.alert ('ID of doc: '+ idOfDoc);
var linkToDrive = formObject.drive;
ui.alert ('Link to drive: '+linkToDoc);
var idOfDrive = linkToDrive.match(/[-\w]{25,}/);
ui.alert ('ID of folder in Google Drive: '+ idOfDrive);
var mail = formObject.mail;
ui.alert('Your email: '+mail);
var myJSON = JSON.stringify(idOfDoc);
var myJSON2 = JSON.stringify(idOfDrive);
var myJSON3 = JSON.stringify(mail);
var myJSON4 = JSON.stringify(linkToDoc);
var myJSON5 = JSON.stringify(linkToDrive);
scriptProperties.setProperty('doc', myJSON);
scriptProperties.setProperty('drive', myJSON2);
scriptProperties.setProperty('mail', myJSON3);
scriptProperties.setProperty('linkdoc', myJSON4);
scriptProperties.setProperty('linkdrive', myJSON5);
}
我正在创建一个 Google 表单插件。用户在边栏中指示要使用的文件以及文件在 Google Drive 中的放置位置。附加组件需要将这两个变量永久保存在服务器上。如何保存用户设置?
我的 HTML - 右边的边栏,当此表单的所有者正在创建问题和答案类型时
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<div>
<form id="myForm" onsubmit="handleFormSubmit(this)">
Link to your document:
<br>
<input type="text" name="document"><br><br>
Link to your folder in your Google Drive:
<br>
<input type="text" name="drive"><br><br>
<input type="submit" value="Prześlij">
</form>
</div>
<br>
<script>
function handleFormSubmit(formObject) {
google.script.run.withSuccessHandler(close).processForm(formObject);
}
function close() {
google.script.host.close();
}
</script>
</body>
</html>
My code.gs
function onOpen() {
FormApp.getUi()
.createMenu('Additional menu')
.addItem('Answers to file', 'showSidebar')
.addSeparator()
.addToUi();
}
function showSidebar() {
var html = HtmlService.createHtmlOutputFromFile('sidebar')
.setTitle('Save your form!')
.setWidth(300);
FormApp.getUi()
.showSidebar(html);
}
function processForm(formObject) {
var ui = FormApp.getUi();
var linkToDoc = formObject.document;
ui.alert ('Link do dokumentu to: '+linkToDoc);
var idOfDoc = linkToDoc.match(/[-\w]{25,}/);
ui.alert ('ID dokumentu: '+ idOfDoc);
var linkToDrive = formObject.drive;
ui.alert ('Link do folderu na Dysku Google: '+linkToDoc);
var idOfDrive = linkToDrive.match(/[-\w]{25,}/);
ui.alert ('ID folderu na Dysku Google: '+ idOfDrive);
}
function myFunction(e) { //Trigger that starts when the end user completes and sends the form.
How can I use here variables from proccessForm()? I mean idOfDoc and idOfDrive.
}
现在效果很好。下面是我从表单中保存变量的函数。我在表单中添加了一个额外的输入,所以这里是邮件变量。
var scriptProperties = PropertiesService.getScriptProperties();
function processForm(formObject) {
var ui = FormApp.getUi();
var linkToDoc = formObject.document;
ui.alert ('Link to doc: '+linkToDoc);
var idOfDoc = linkToDoc.match(/[-\w]{25,}/);
ui.alert ('ID of doc: '+ idOfDoc);
var linkToDrive = formObject.drive;
ui.alert ('Link to drive: '+linkToDoc);
var idOfDrive = linkToDrive.match(/[-\w]{25,}/);
ui.alert ('ID of folder in Google Drive: '+ idOfDrive);
var mail = formObject.mail;
ui.alert('Your email: '+mail);
var myJSON = JSON.stringify(idOfDoc);
var myJSON2 = JSON.stringify(idOfDrive);
var myJSON3 = JSON.stringify(mail);
var myJSON4 = JSON.stringify(linkToDoc);
var myJSON5 = JSON.stringify(linkToDrive);
scriptProperties.setProperty('doc', myJSON);
scriptProperties.setProperty('drive', myJSON2);
scriptProperties.setProperty('mail', myJSON3);
scriptProperties.setProperty('linkdoc', myJSON4);
scriptProperties.setProperty('linkdrive', myJSON5);
}