Формы Google не являются динамическими. Никакой связи с сервером они не держат, поэтому ничего "подтягивать" они не будут. Но иногда случаются задачи, которые могут быть решены с помощью возможности редактирвоания Формы. Триггер отправки Формы запускает цепочку изменений.
Совсем как в дополнениии "Other Etc".
Пример
Небольшое приложение, которое открывает Таблицу и читает значение диапазона по адресу
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(function(base){ | |
var spreadsheet = undefined; | |
var defaultRange = "A1"; | |
var App = { | |
open: function(id){ | |
spreadsheet = SpreadsheetApp.openById(id); | |
return this; | |
}, | |
getValue: function(rangeName){ | |
rangeName = rangeName || defaultRange; | |
return spreadsheet.getRange(rangeName).getValue(); | |
} | |
}; | |
base.App = App; | |
})(this); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function onFormSubmit(e){ | |
var form = e.source; | |
var newValue = App.open(form.getDestinationId()).getValue("'To Form'!A1"); | |
form | |
.setDescription( | |
Utilities.formatString | |
('Текущее значение %s. Код %s', newValue, 'https://goo.gl/aondzl') | |
); | |
} |
- Создается проект скрипта в Форме или в Таблице.
- Регистрируется триггер отправки Формы для функции
onFormSubmit
. В данном примере это сделано в Форме. - При срабатывании триггера , открывается Таблица, к которой привязана Форма и оттуда берется указанное в настройках значение.
- Для текущего примера это значение общей суммы всех чисел внесенных через Форму.
- Как только значение получено, обновляется описание Формы - выводится новая сумма для последующих респондентов.
Хороший пример.
ОтветитьУдалитьА можно внутри function onFormSubmit(e) вызвать функцию, определённую в скрипте таблицы, связанной с этой формой?
Можно вызвать практически все. Но в данном случае это будет непросто
УдалитьНепросто, но возможно, так?
УдалитьВ чем сложность?
Мне не нужно передавать в неё параметры.
УдалитьАлександр, вы могли бы прокомментировать строки кода?
ОтветитьУдалитьПочему функция открытия таблицы в скобках?
Откуда open получает id?
Как посмотреть значение логгера?
Я вот об этом:
Удалить(function(base){
Почему начинается с круглой скобки?
App.open(form.getDestinationId()) - свойство кода, не больше
ОтветитьУдалитьid Таблицы берется из Формы
Лог возвращает число из ячейки https://docs.google.com/spreadsheets/d/1cWzqwQXGBhKBOL0pn1nFzuiGcZaPz9m9brDFoWK-Uks/edit#gid=1836421092&range=A1
Этот комментарий был удален автором.
УдалитьСпасибо. Сейчас снова на смарте, смотрю, как в замочную скважину. Завтра гляну на ноуте.
УдалитьПосмотрел - не понял связи с logger.log?
Удалитьссылка на git не работает(
ОтветитьУдалить