2014-05-29 3 views
0

Я пытаюсь создать пользовательский интерфейс для электронной таблицы. К сожалению, я не могу получить идентификатор для установки на любом компоненте при использовании UiService. Я могу проверить, что идентификатор не установлен с помощью инструментов разработчика Chrome. Это может быть или не быть релевантным, но я использую Drive in в среде Google Apps для домена. Вот код:Google App Script - setId on Component не работает

function onOpen() { 
    SpreadsheetApp.getUi() 
     .createMenu('Tweet Menu') 
     .addItem('Tweet Sidebar', 'tweetSidebar') 
     .addToUi(); 
}; 

function tweetSidebar() { 
    var ui = SpreadsheetApp.getUi(); 

    var app = UiApp.createApplication(); 
    app.setTitle('Tweet Sidebar'); 

    var panel = app.createVerticalPanel(); 
    panel.setId('twitterPanel'); 
    panel.setStyleAttribute('margin', '5px'); 

    var textArea = app.createTextArea(); 
    textArea.setId('12345'); 
    textArea.setName('tweetText'); 
    textArea.setWidth('290px').setHeight('175px'); 

    var keyPressHandler = app.createServerHandler('checkLength'); 
    keyPressHandler.addCallbackElement(textArea); 
    textArea.addKeyPressHandler(keyPressHandler) 

    var button = app.createButton('Add Tweet'); 
    button.setId('addTweet'); 

    var handler = app.createServerHandler('addTweet'); 
    handler.addCallbackElement(textArea); 
    button.addClickHandler(handler); 

    panel.add(textArea); 
    panel.add(button); 

    app.add(panel); 

    SpreadsheetApp.getUi().showSidebar(app); 
} 

function addTweet(e) { 
    var app = UiApp.getActiveApplication(); 
    var textAreaValue = e.parameter.tweetText; 
    var sheet = SpreadsheetApp.getActiveSpreadsheet(); 
    var lastRow = sheet.getLastRow(); 
    var previousBufferID = sheet.getRange('b' + lastRow); 
    var newBufferID = previousBufferID.getValue() + 1; 
    var lastTweetCell = sheet.getRange('a' + (lastRow + 1)); 
    var lastBufferID = sheet.getRange('b' + (lastRow + 1)); 
    lastTweetCell.setValue(textAreaValue); 
    lastBufferID.setValue(newBufferID); 
    app.getElementById('12345').setValue(''); 
} 

function checkLength(e) { 
    var app = UiApp.getActiveApplication(); 
    var textAreaValue = e.parameter.tweetText; 
    var len = textAreaValue.length; 
    app.getElementById('12345'); 
} 

ответ

0

Я считаю, что вам не хватает return app; в() функций в checkLength() и addTweet.

+0

Я добавил, что, но, похоже, он не изменил поведение. С тех пор я портировал приложение с боковой панели таблицы в веб-приложение Google Apps Script. Код возвращает правильный элемент, когда я вызываю app.getElementById, но он по-прежнему не добавляет атрибут «id» к любому из элементов вывода HTML. –

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