Передача данных из выпадающего меню => в функцию javascript (скрипт Google App) - PullRequest
0 голосов
/ 03 октября 2019

Надеюсь, я включил достаточно кода без публикации всего этого ...

У меня есть основная функция, которая вызывает displayDropdown () - которая вызывает HTMLService и отображает модальное окно свыпадающий список и текстовое поле:
screenshot of modal.
Это (сокращенный) код JavaScript, в котором хранятся данные:

<html>
<input type="submit" value="Submit" class="action" onclick="sendData()" />       
</html>
<script>
function sendData() {
          var values = {};
          values.textJob = document.getElementById("input").value;
          values.selectedJob = document.getElementById("dropJob").value;
          google.script.run.withSuccessHandler(closeIt).grabData(values);
       };
        function closeIt(){
          google.script.host.close()
        };
</script>

Затем функция grabData ()в моем файле .gs:

function grabData(values) {
  if(values.textJob=="")
   //return values.selectedJob;
    Logger.log(values.selectedJob);
  else 
    //return values.textJob;
    Logger.log(values.textJob);
}

Если я оставлю закомментированные результаты и попытаюсь записать данные, я получу ожидаемые данные. Но если я переверну это и верну вместо этого, вернусь к основной функции сразу после вызова displayDropdown () и установлю переменную равной функции grabData:

displayDropdown();
var stuff = grabData();
Logger.log(stuff);

Я получаю ошибку,говорит:

error message

Почему я не могу получить доступ к данным?

1 Ответ

2 голосов
/ 03 октября 2019

Это то, что я обычно делаю для отправки данных из формы HTML в GS:

HTML

<form method="POST" action="#" id="formID">
  <button class="btn" type="submit">Send</button>
</form> 

JS

document.querySelector("#formID").addEventListener("submit", function(e) {
  var test = google.script.run.withSuccessHandler('client side function').processForm(this);
}); 

Обычно я передаю 'this' в качестве аргумента и обрабатываю информацию на GS.

EDIT:

GS

function processForm(values){

  Logger.log(values);
  Logger.log(typeof values);

}

Снимки экрана :

1 - веб-приложение

enter image description here

2 - Журналы сервера (функция processForm)

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...