Здесь что-то не так, и все предложения, которые я пробовал у других с подобными вопросами, похоже, не работают.
У меня есть два файла: myPage.html и myCode.gs в сценариях Google. Я развернул html-файл в качестве веб-приложения, и я выяснил (с помощью), как сделать событие onclick для кнопки «отправить», чтобы вызвать функцию электронной почты из файла myCode.gs.
Теперь я хочу вставить значение из текстового поля в html-файле в электронное письмо, которое вызывается из события onClick. Я попробовал document.getElementById('textBoxId').value
, но я получаю следующую ошибку: «Reference Error:« document »не определен.« Что дает?
Файл myPage.html:
Test Page
Файл myCode.gs:
function doGet() { return HtmlService.createHtmlOutputFromFile('myPage'); } function emailTech(){ var nameBox = document.getElementById('textBox').value; var message = "This is the text box value" + nameBox; MailApp.sendEmail("123@xyz.com", "This is the subject", message ); }
Сообщение об ошибке правильное – в вашей функции Script Script функция emailTech()
не существует переменной в области, которая называется document
.
У вас есть два разных способа развертывания скрипта приложений ScriptApps. Поскольку вы используете службу HTML (и ваш пользовательский интерфейс представляет собой html-файл), вы не можете использовать методы службы UI (например, getElementById()
) для доступа к входным значениям. Итак, вы сделаете что-то другое.
Чтобы связать кнопку отправки и поле ввода вместе, используйте форму, заключенную в tags
. Кнопка «Отправить» по-прежнему будет иметь функцию onclick, но теперь это будет функция javascript, встроенная в ваш HTML- emailTech()
, который передаст все входные данные формы в emailTech()
.
В обработчике на стороне приложения-скрипта вы получите ввод формы как объект, с полями из формы в виде пар ключ-значение. Ключ – это name
из поля.
Общее решение описано в этом ответе . Вот версия, которая соответствует вашему коду. Я оставил без внимания успех и неудачу, которые показывает Арун. Разумеется, вы должны встроить проверку ошибок, прежде чем развертывать это в реальной жизни.
function doGet() { return HtmlService.createHtmlOutputFromFile('myPage'); } function emailTech(form){ var nameBox = form.techEmail; var message = "This is the text box value" + nameBox; MailApp.sendEmail("email@somewhere.com", "This is the subject", message ); }
Test Page