Надстройка для Google Forms - постоянные переменные - постоянное сохранение значений - PullRequest
2 голосов
/ 05 мая 2020

Я создаю надстройку Google Form. Пользователь указывает на боковой панели, какой файл использовать и где файлы должны находиться на Google Диске. Надстройке необходимо постоянно сохранять эти две переменные на сервере. Как сохранить пользовательские настройки?

My 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.  

}

1 Ответ

1 голос
/ 08 мая 2020

Теперь отлично работает. Ниже моя функция для сохранения моих переменных из формы. Я добавил один дополнительный ввод в форму, поэтому здесь это почтовая переменная.

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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...