Доступ к объекту формы службы HTML

1

Изображение 174551

Я работаю через https://developers.google.com/apps-script/guides/html/communication, пытаясь отправить форму с информацией, загруженной с листа google. На стороне клиента у меня (основывается на примере формы в статье):

<!DOCTYPE html>
<html>
<head>
    <base target="_top">
    <script>
        // Prevent forms from submitting.
        function preventFormSubmit() {
          var forms = document.querySelectorAll('form');
          for (var i = 0; i < forms.length; i++) {
            forms[i].addEventListener('submit', function(event) {
              event.preventDefault();
            });
          }
        }
        //      window.addEventListener('load', preventFormSubmit);

        function handleFormSubmit(formObject) {
          google.script.run.withSuccessHandler(updateUrl).processForm(formObject);
        }
        //      function updateUrl(url) {
        //        var div = document.getElementById('output');
        //        div.innerHTML = '<a href="' + url + '">Got it!</a>';
        //      }
    </script>
</head>
<body>
    <form id="myForm" onsubmit="handleFormSubmit(this)">
        <div>
            <select id="optionList" name="email">
                <option>Loading...</option>
            </select>
        </div>
        <br>
        <div>
            <textarea name="message" rows="10" cols="30">
            The cat was playing in the garden.
            </textarea> 
        </div>
        <input type="submit" value="Submit" />
    </form>

На стороне сервера (code.gs) у меня есть:

function processForm(formObject) {

  Logger.log('in here');
  var formBlob = formObject.myFile;
  var driveFile = DriveApp.createFile(formBlob);

return driveFile.getUrl();
}

Я вижу, что подача работает, потому что я вижу "здесь" в журналах. Как я могу получить доступ к полям формы из функции processForm?

Теги:
google-apps-script

1 ответ

1
Лучший ответ

Этот кусок не имеет смысла для меня

  var formBlob = formObject.myFile;

Ваша форма не содержит вход, атрибут 'name' которого установлен в 'myFile'. После нажатия кнопки "Отправить" переменная "formObject" будет выглядеть следующим образом:

{
 email: "Loading...", //from <select id="optionList" name="email">
 message: "The cat was playing in the garden." //from  <textarea name="message">

}
  • 0
    Спасибо, что показали мне, как это работает. Есть ли способ отладить это? Я знаю, что при использовании AJAX вы можете использовать консоль браузера.
  • 0
    Вы можете использовать console.log () в JS-функциях на стороне клиента, таких как handleFormSubmit (). На стороне сервера (файлы .gs) нет доступа к объектной модели браузера, поэтому вы должны использовать Logger.log ().
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню