Простой пример использования HTML в Google Apps Script на примере GoogleSheet
А вы знали, что в Google Apps Script можно использовать HTML страницы со скриптами (javascript) и даже JQuery(с небольшими ограничениями) - совсем как сайты? Сейчас мы покажем простой пример этого!
Итак приступим. Для примера создадим новую таблицу в GoogleSheet. В ней создадим 2 вкладки: test и problems.
На вкладке test сделаем кнопку (для удобства), по которой будет вызваться наш скрипт:
На вкладке problems сделаем таблицу с 3 столбцами - Имя, Браузер, Описание проблемы:
Теперь заходим в редактор скриптов и создаем новую HTML страницу с названием index:
На этой странице делаем простенькую форму с полями для ввода имени, выбора браузера и описания проблемы. И добавляем 2 кнопки - очистить и отправить. На отправить вешаем
скрипт на нажатие кнопки - clickButton()
Выглядеть эта форма будет вот так:
Скрипт на нажатие кнопки - clickButton()
- выглядит следующим образом:
Принцип действия скрипта очень прост:
Получаем ссылку на Форму и значения полей Имя и Описание проблемы:
var name = form.elements.name.value
var problem = form.elements.problem.value
Проверяем на заполненность поля Имя:
if(!checkFill(name)){
alert('Не заполнено обязательное поле - ИМЯ')
return
}
.............................
function checkFill(objValue){
if(objValue.length > 0){
return true
}
return false
}
Проверяем на заполненность поля Описание проблемы
if(!checkFill(problem)){
alert('Не заполнено обязательное поле - ОПИСАНИЕ ПРОБЛЕМЫ')
return
}
.............................
function checkFill(objValue){
if(objValue.length > 0){
return true
}
return false
}
Получаем наименование Браузера:
var browser = getBrowser(form)
.............................
function getBrowser(form){
var arrRadio = form.browser
for(var i = 0; i<arrRadio.length;i++){
if(arrRadio[i].checked){
return arrRadio[i].value
}
}
}
И в конце концов запускаем скрипт сервера writeProblem(name, browser, problem) (который будет у нас находится в этом же проекте) с помощью специальной директивы. Так же приписываем 2 callback - они запускаются в зависимости от ответа сервера (нашего скрипта writeProblem). При ошибке запускается выполняется команда .withFailureHandler(onFailure), которая в свою очередь запускает скрипт на клиентской стороне (в этом HTML коде) onFalilure. При правильном завершении скрипта на сервере, запускается команда .withSuccessHandler(onSuccess), которая в свою очередь запускает скрипт на клиентской стороне (в этом HTML коде) onSuccess. В этот скрипт неявно в виде первого аргумента передается возвращаемое значение от скрипта с сервера:
google.script.run
.withFailureHandler(onFailure)
.withSuccessHandler(onSuccess)
.writeProblem(name, browser, problem)
Скрипт onFalilure выводит сообщение, что произошла ошибка:
function onFailure(){
alert('Проблема с записью. Попробуйте еще раз')
}
Скрипт onSuccess проверяет возвращенное значение с сервера, и если это true, то модальное окно с HTML формой закрывается специально директивой:
function onSuccess(test){
if(test){
google.script.host.close()
}
}
Теперь настало время написать серверный скрипт (в нашем случае - это обычный, стандартный Google Apps Script). Переименовываем автоматически созданный скрипт с названием Код на test и создаем 2 функции:
В функции test мы задаем, что из нашего файла index.html мы создаем HTMLOutput и специально командной показываем модальное окно.
В функции writeToProblem мы получаем 3 значения из HTML формы, записываем их на страницу problems и возвращаем true.
Осталось только к нашей картинке назначить скрипт test и можно проверять результаты нашей работы!
Теперь просто нажимаем на нашу кнопку, появляется форма. Заполняем форму, нажимаем отправить - и на нашей вкладке problems появляется новая запись!
Вот такой простой пример использования HTML в GoogleSheets!
Как обычно, ссылка на пример в Google Sheets:
Ссылка на файл