如何在谷歌文档GAS中使用面板中输入的数据



首先:这个网站对我已经有了很大的帮助,thnx很多!

在谷歌文档中,我添加了一个垂直面板来帮助用户撰写和发送信件。我在这个线程中使用了这个例子,它很好地显示了面板:

function onOpen() {
  var app = UiApp.createApplication().setWidth(455).setTitle('User input')
  var panel = app.createVerticalPanel().setStyleAttribute('padding','25px')
  var label1 = app.createLabel('Your name please');
  var box1 = app.createTextBox().setId('Field1').setName('Field1');
  panel.add(label1)
  panel.add(box1)
  var pasteHandler = app.createServerChangeHandler('readTextbox');
  pasteHandler.addCallbackElement(panel);
  var clickButton=app.createButton('OK').setId('PasteTest').addClickHandler(pasteHandler) 
  panel.add(clickButton);
  app.add(panel);
  DocumentApp.getUi().showSidebar(app);
//I want to arrive here only after a value is entered in the panel
//  ... follows more code ...
 }
function readTextbox(e){
  var app = UiApp.getActiveApplication(); 
  var boxValue=e.parameter.Field1;
//how to get this e.parameter values (more than one..) to the main function
  return app;
}

我的问题是:如何让主函数在"showSidebar"之后等待,直到输入值
第二个问题:如何在处理程序之外使用此输入,例如在文档中写入?我找到了一个变通方法,将字段写入处理程序中的电子表格,但这不是很优雅;-)
非常感谢。。。

你不能让onOpen()函数等待,但你不需要。你有一个点击处理程序和readTextbox()函数。并且不需要获取readTextbox()函数就可以分支回onOpen()函数。如果根据用户的操作,存在需要分支到不同函数的条件,则可以创建一个新函数。

只需使用函数的名称、名称后的括号和分号,就可以从函数中调用函数。

function readTextbox(e){
  var app = UiApp.getActiveApplication(); 
  var boxValue=e.parameter.Field1;
  anotherCoolFunction(boxValue);
//how to get this e.parameter values (more than one..) to the main function
  return app;
}
function anotherCoolFunction(someArg){
  Logger.log('Some Arg: ' + someArg);
}

在上面的代码中,输入名称并单击按钮后,运行readTextBox函数,然后readTextBox()函数调用anotherCoolFunction(boxValue);函数并将变量boxValue传递给anotherCoolFunction()

您可以通过查看日志来验证它是否有效。选择查看菜单和日志菜单项以显示日志输出。

相关内容

  • 没有找到相关文章

最新更新