0

看起来获取文本框值的 e.parameter.name 方法在文档 UI 上不起作用,例如,在主 UI 中

==================================================== ===========

var app = UiApp.createApplication().setWidth(455).setTitle('My UiApp Sidebar');
var panel = app.createVerticalPanel()
var textBoxA =   app.createTextBox()
                    .setId('textBoxA')
                    .setName('textBoxA').setTag('textBoxA');


var clickButton=app.createButton("Paste")
                   .setId("PasteTest")
                   .addClickHandler(pasteHandler) 


var pasteHandler = app.createServerChangeHandler('readTextbox');
pasteHandler.addCallbackElement(panel);

panel.add(textBoxA);
panel.add(clickButtion);
app.add(panel);
DocumentApp.getUi().showSidebar(app);

==================================================== =====================

然后在事件处理程序中

readTextbox(e){
  var app = UiApp.getActiveApplication(); 
var boxValue=e.parameter.textBoxA;
  return app;
}

boxValue 返回未定义,e.parameter.textBoxA_Tag 也不起作用,我将 e.paramter 放在日志中,而不是 textBoxA 在那里。

它在电子表格 UI 中运行良好,看起来不太支持文档 UI

4

1 回答 1

1

试着把事情按正确的顺序排列,它会起作用的。

测试文档在这里

function xx(){
  var app = UiApp.createApplication().setWidth(455).setTitle('test sideBar with textBox');
  var panel = app.createVerticalPanel().setStyleAttribute('padding','25px')
  var textBoxA =   app.createTextBox()
                    .setId('textBoxA')
                    .setName('textBoxA').setTag('textBoxA');

  var pasteHandler = app.createServerChangeHandler('readTextbox');
  pasteHandler.addCallbackElement(panel);

  var clickButton=app.createButton("type anything and click here to get the textBoxValue")
                   .setId("PasteTest")
                   .addClickHandler(pasteHandler) 

  panel.add(textBoxA);
  panel.add(clickButton);
  app.add(panel);
  DocumentApp.getUi().showSidebar(app);
}

function readTextbox(e){
  var app = UiApp.getActiveApplication(); 
  var boxValue=e.parameter.textBoxA;
  var butn = app.getElementById('PasteTest').setHTML(boxValue);
  return app;
}
于 2013-06-28T22:01:54.507 回答