2012-01-20 4 views
0

Я создаю сайт google для своей компании, и я использую скрипты приложений Google, чтобы сделать немного больше на сайте. Мне бы очень хотелось связать сценарий с раскрывающимся меню, которое я сделал. Однако я не могу понять, как связать скрипт. Я знаю, как связать сценарий так же, как гаджет Google, и как отдельную ссылку, но мне бы очень хотелось, чтобы сценарий запускался, когда я нажимаю на элемент из раскрывающегося меню.Как связать скрипт Google Apps на сайте google

ответ

0

Из соображений безопасности Google не позволяет размещать javascript в Сайтах Google. Вместо этого они предоставляют скрипты приложений, но поскольку они работают в изолированном мире (на сервере, а не в браузере), это очень сложно и имеет свои пути.

Поскольку он очень отличается от javascript стандартной страницы, вам нужно переосмыслить свою цель с точки зрения того, что позволяет скрипты приложений.

Сценарии Google Apps позволяют создавать пользовательский интерфейс (с использованием его еще экспериментального интерфейса API), который можно визуализировать как автономный скрипт на полной странице или вставлять в iframe на сайтах. Это означает, что у вас не будет выпадающего меню, перекрывающего ваш сайт: вам нужно статическое пространство для визуализации пользовательского интерфейса вашего скрипта.

Существует еще один примитивный способ «встраивать» ваши скриптовые команды на ваш сайт: использовать ссылки. Ссылка, которая запускает сценарий, даже с вашими собственными параметрами, только для запуска команды, но без какого-либо интерфейса. Вы можете создать меню с параметрами, каждый из которых запускает скрипт. Но я не говорю о выпадающем меню.

О приложении Google Интерфейсы Сценарии пользователя

0

Не уверен, что вы подразумеваете под "связать сценарий", у вас есть код где-нибудь еще? По «ссылке» это звучит так, как будто вы хотите «вызвать» код с обработчиком событий. Я покажу вам, как вызывать функцию с ServerHandler, вызванным либо событием изменения списка графического интерфейса пользователя, либо событием Button Click.

В Google Scrips (GAS) есть три способа сделать GUI.

  • HTML Service - Как обычный HTML, вы можете вставить HTML-форму и теги ввода.
  • UI Service - Как и в случае с менеджерами макетов, как в java (см. Ниже).
  • GUI Builder - Я предлагаю сначала сделать это вручную, чтобы лучше понять макет.

В Сайтах Google вы можете добавить большинство HTML напрямую без скрипта. Служба пользовательского интерфейса и GUI Builder будут генерировать теги HTML-форм для вас, и поскольку редко бывает какая-либо причина вставлять элементы GUI, если вы не выполняете какой-либо код, который, вероятно, хотите начать с использования этих.


Here is a Drop-Down list example с некоторыми изменениями, чтобы показать, как функция обработчика может быть вызвана из нескольких элементов пользовательского интерфейса (который они называют виджеты иногда) и как использовать параметр:

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() и return app; в конце doGet и каждой функции обработчика.

Обработчики выполняют такую ​​функцию, как JavaScript onClick() или onChange(), большинство пользовательских интерфейсов не являются полезными без обработчиков. ClientHandler более эффективны, но ServerHandler делает больше, начиная с ServerHandlers, и любые простые функции могут быть преобразованы в ClientHandlers для лучшей производительности. Вы можете выбрать, чтобы помешать вашим обработчикам или втиснуть все это в одну строку кода, но действительно ли личное предпочтение, но назначьте его переменной, если вы планируете использовать ее для нескольких объектов GUI. Вы можете захотеть найти различные менеджеры макетов, чтобы создавать более привлекательные приложения, или просто использовать GUI Builder. Также существуют другие функции создания, такие как app.createServerClickHandler(), но я понимаю, что они были бесполезны и теперь устарели, поэтому игнорируйте любые другие ссылки, которые вы находите подобными, однако мы все же используем addChangeHandler() и addClickHandler() для элементов GUI самих себя.

SetName() кажется глупым, необходимо только установить имя параметра (я надеюсь, что они меняют это), поэтому на данный момент я предлагаю установить его так же, как идентификатор элемента. Я также сделал имя переменной обработчика = его id = имя функции события, чтобы проиллюстрировать, как все они связаны.

 Смежные вопросы

  • Нет связанных вопросов^_^