2013-02-11 4 views
2

Я новичок в мире скриптов приложений Google, и я пытаюсь создать базовый интерфейс для моего конечного пользователя для запроса данных (хранящихся в электронных таблицах Google) и отображения данных в форматированном/удобный для пользователя способ.Получить значение TextBox из сценария Google Apps

Поскольку я хочу начать с простых и добавлять компоненты, поскольку изучаю скрипт приложений, я решил создать базовую форму, которая позволит мне вводить текст в текстовое поле, а затем присваивать это значение метке (что я думал было бы простым упражнением в создании базовых компонентов формы и извлечении/присвоении значений).

К сожалению, камень преткновения, с которым я столкнулся, заключается в отсутствии функции getText() или TextBox.getValue(). Я попробовал поиск в онлайн-форумах/google и т. Д., Чтобы узнать, как это происходит, но ничего, что я пытаюсь, кажется, работает (предыдущий обыск приводил меня к работе и обрабатывал это в обработчике событий).

Мой вопрос в том, что. Если у меня есть textBox ('textBox1') и кнопка ('button1') и метка ('label1'). Как заставить мое веб-приложение присвоить значение, которое я вводил в textBox1, на ярлык1, когда я нажимаю кнопку1?

Я понимаю, что это, пожалуй, самый простой вопрос, и я знаю, что это было задано раньше .... но независимо от того, насколько сильно я прорываю эти старые должности, я не могу представить, что должно быть легко бит кода.

Заранее спасибо.

+0

Вы не искали очень хорошо ... простой поиск на этом форуме с газовым тегом возвратил десятки результатов ... например [этот] (http://stackoverflow.com/questions/14739464/google-apps-script-get-textbox-value-insert-in-database): простой и понятный! –

ответ

1

Предположим, у вас есть код, который выглядит следующим образом:

var textbox = app.createTextBox().setName("textboxName"); 
var buttonHandler = app.createServerHandler("updateLabelText").addCallbackElement(textbox); 
var button = app.createButton("Click me").addClickHandler(buttonHandler); 
var label = app.createLabel().setId("label"); 

Тогда в функции:

function updateLabelText(e) { 
    var app = UiApp.getActiveApplication(); 
    app.getElementById("label").setText(e.parameter.textboxName); 
    return app; 
} 

Так вещи, чтобы отметить:

  1. Обработчик кнопки с учетом имя функции, которую вы определяете где-то еще в своем коде.
  2. Обработчик кнопки также должен иметь «элемент обратного вызова». Это необходимо, если вы хотите прочитать значение этого элемента в своей функции. Вы можете добавить панель в качестве элемента обратного вызова, и все, что находится на этой панели, будет добавлено к обратному вызову.
  3. Значения элементов обратного вызова передаются обратно через e.parameter. Имя свойства - это имя элемента. Пример: e.parameter.textboxName.
  4. На этикетке требуется идентификатор, чтобы вы могли ссылаться на него с помощью другой функции.
+0

В ответ на ваш «камень преткновения» скрипты приложений требуют, чтобы вы явно передали значение обратно в скрипт. Скрипты запускаются на серверах Google, поэтому они не знают значения текстовых полей, если вы не сообщите им, что это такое. [Прочитайте здесь документацию] (https://developers.google.com/apps-script/uiapp#ServerHandlers). –

+0

Благодарим за быстрый ответ! Я пробовал то, что, как я думал, был таким, но моя проблема заключается в том, что текстовое значение, которое я возвращаю, входит как «Неопределенный». Вот мой текущий код: – user2061929

+0

function doGet() { var app = UiApp.createApplication(); app.add (app.loadComponent ("studentLookup01")); var handler = app.createServerClickHandler ('testGetFunction'); обработчик.addCallbackElement (app.getElementById ('sNameEntryBox')); app.getElementById ('Button1'). AddClickHandler (обработчик); return app; } – user2061929

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