Не уверен, что вы подразумеваете под "связать скрипт", у вас есть код где-нибудь еще?Под «ссылкой» звучит, как будто вы имеете в виду «Вызов» кода с помощью обработчика событий.Я покажу вам, как вызывать функцию с помощью ServerHandler, запускаемую либо событием ListBox Change с графическим интерфейсом пользователя, либо событием Click Button.
В Google Apps Scrips (GAS) есть три способа сделатьGUI.
В GoogleСайты вы можете добавить большинство HTML напрямую без сценария.Служба пользовательского интерфейса и GUI Builder сгенерируют для вас теги HTML-формы, и поскольку редко есть какая-либо причина для вставки элементов графического интерфейса, если вы не выполняете какой-либо код, который вы, вероятно, захотите начать с их использованием.
Вот пример раскрывающегося списка с некоторыми изменениями, показывающими, как можно вызывать функцию-обработчик из нескольких элементов пользовательского интерфейса (которые они иногда называют виджетами) и как использовать параметр:
function doGet(e) { // use doGet() & UiApp to make a canvas.
var app = UiApp.createApplication();
var doEvent = app.createServerHandler('doEvent').setId('doEvent');
var myList = app.createListBox().setId('myList').setName('myList');
myList.addItem('one'); // add items, I use single quote strings.
myList.addItem('two').addItem('three') // I know it looks weird.
// Scripts let you do this, by returning self for your convenience.
.addChangeHandler(
app.createServerHandler('doEvent')
);
app.add(myList); // Add element to GUI.
doEvent.addCallbackElement(myList); // Add to Event Handler.
app.add(app.createButton('Click Me').setId('myButton')
.addClickHandler(doEvent));
return app;
} // Simple DropDown by Jason K.
function doEvent(e) { // use split() if isMultipleSelect is true
var app = UiApp.getActiveApplication();
app.add(app.createLabel(
'List Value is ' + e.parameter.myList
+ ' from ' + e.parameter.source));
return app;
}
Что касается устранения неполадок, не забудьте добавить каждый элемент с помощью app.add () и вернуть приложение;в конце doGet и каждой функции-обработчика.
Обработчики выполняют такие функции, как JavaScript onClick () или onChange (), большинство интерфейсов бесполезны без обработчиков.ClientHandler более эффективен, но ServerHandler делает больше, начиная с ServerHandlers, и любые простые функции могут быть преобразованы в ClientHandlers для повышения производительности.Вы можете разделить ваши обработчики или объединить все в одну строку кода, на самом деле это вопрос личных предпочтений, однако вы можете назначить его переменной, если вы планируете использовать его для более чем одного объекта GUI.Возможно, вы захотите посмотреть различные менеджеры компоновки, чтобы сделать приложения более привлекательными, или просто использовать GUI Builder.Также существуют другие функции создания, такие как app.createServerClickHandler (), но я понимаю, что они были бесполезны и теперь устарели, поэтому игнорируйте любые другие ссылки, которые вы найдете таким образом, однако мы по-прежнему используем addChangeHandler () и addClickHandler () для элементов GUIсами по себе.
setName () кажется глупым, нужно только установить имя параметра (я надеюсь, что они его изменят), поэтому сейчас я предлагаю просто установить его так же, как и идентификатор элемента.Я также сделал имя переменной обработчика = его id = имя функции события, чтобы проиллюстрировать, как они все связаны.