Google App脚本 - 组件上的setId不起作用

时间:2014-05-29 23:01:12

标签: google-apps-script

我正在尝试为电子表格创建用户界面。不幸的是,在使用UiService时,我似乎无法在任何组件上设置ID。我可以验证是否未使用Chrome开发人员工具设置ID。它可能相关,也可能不相关,但我在Google Apps for Domain环境中使用Drive in。这是代码:

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');
}

1 个答案:

答案 0 :(得分:0)

我相信你在checkLength()和addTweet()函数中缺少return app;