Javascript 附加到Google表单-常量变量-永久保存值
我正在创建一个谷歌表单插件。用户在侧边栏中指示要使用的文件以及文件将在Google Drive中放置的位置。插件需要将这两个变量永久保存在服务器上。如何保存用户设置 右边是我的HTML边栏,当此表单的所有者创建问题和答案类型时Javascript 附加到Google表单-常量变量-永久保存值,javascript,html,google-apps-script,google-forms,Javascript,Html,Google Apps Script,Google Forms,我正在创建一个谷歌表单插件。用户在侧边栏中指示要使用的文件以及文件将在Google Drive中放置的位置。插件需要将这两个变量永久保存在服务器上。如何保存用户设置 右边是我的HTML边栏,当此表单的所有者创建问题和答案类型时 <!DOCTYPE html> <html> <head> <base target="_top"> </head> <body> <div> <
<!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>
现在效果很好。下面是我从表单中保存变量的函数。我在表单中添加了一个额外的输入,这就是为什么这里是mail变量
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);
}
你能分享你的错误吗?要将用户输入存储在何处?属性服务可用于持久存储,通常用于存储用户设置。Properties服务中的数据存储为键/值对,值只能是字符串。数据不能存储为对象,但可以在存储对象之前先对对象进行字符串化。属性服务对键长度、值长度和总数据量有限制。可以通过“帮助”菜单中的“代码编辑器”访问文档。@是的,就是这样。我用过它,效果很好。问题解决了。
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);
}