HTML-форма не выполняет (withSuccessHandler) функцию - PullRequest
0 голосов
/ 25 ноября 2018

У меня есть эта HTML-форма в Google App Script (Sheets), которая запрашивает у пользователя значение даты, а затем передает значение.HTML-форма работает.Единственная проблема - объект не регистрируется.Я не могу понять, почему это так.

HTML:

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
   <form id="myForm">

    <input type="date" name="startDate" value="" id="demo" >
    <input type="button" style="font-family: verdana;" value="Submit" onclick="getStartDate()">

   </form> 
    <script>
  function success(msg) {
    alert(msg);
  }

  function getStartDate(){
    var form = document.getElementById("myForm").elements;
    var obj ={};
    for(var i = 0 ; i < form.length ; i++){
        var item = form.item(i);
        obj[item.name] = item.value;
    }
    google.script.run
    .withSuccessHandler(success)
    .getStartDate(obj);

    google.script.host.close();
  };
  </script>
  </body>
</html>

Javascript:

function getStartDate(obj){
  Logger.log(obj)
}

Это должно выводить объект, но это не так.

Спасибо за вашпомощь!

1 Ответ

0 голосов
/ 25 ноября 2018

Как насчет этой модификации?

Точки модификации:

  • google.script.run работает при асинхронной обработке.Таким образом, в вашем сценарии getStartDate() и success() не выполняются из-за google.script.host.close().
  • getStartDate() на стороне GAS не возвращает значения.Итак, alert(msg) показывает undefined.

Когда вышеуказанные точки отражаются на вашем скрипте, он становится следующим:

Модифицированный скрипт:

HTML:

Пожалуйстаизмените Javascript следующим образом.

function success(msg) {
  alert(JSON.stringify(msg)); // Modified
}

function getStartDate(){
  var form = document.getElementById("myForm").elements;
  var obj ={};
  for(var i = 0 ; i < form.length ; i++){
    var item = form.item(i);
    obj[item.name] = item.value;
  }
  google.script.run
  .withSuccessHandler(function(e) { // Modified
    success(e);
    google.script.host.close();
  })
  .getStartDate(obj);
};
GAS:
function getStartDate(obj){
  Logger.log(obj)
  return obj; // Modified
}

Примечание:

  • Если вы хотите дать ключ к Submit, добавьте name к <input type="button" style="font-family: verdana;" value="Submit" onclick="getStartDate()">.
  • Конечно, вы также можете переместить google.script.host.close() в success().

Ссылка:

Если это не то, что вы хотите, пожалуйста, сообщите мне.Я хотел бы изменить его.

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