Google Apps脚本 - 在功能之间共享小部件

时间:2013-10-07 20:34:47

标签: google-apps-script

这是我第一次使用Google应用脚本,而且我对如何从多个功能访问小部件感到困惑。

基本上,我想要一个更新label小部件的按钮。因此标签有一些默认文本,但在按下“更新”按钮后会更新以显示其他文本。

根据我的阅读,可以传递给事件处理程序的唯一内容是具有setName方法的对象。 label窗口小部件没有这个,所以如何从其他处理函数更新doGet函数中窗口小部件的值?

以下是我想做的事情(但无法开展工作):

function doGet() {
  var app = UiApp.createApplication();

  // Create the label
  var myLabel = app.createLabel('this is my label')
  app.add(myLabel)

  // Create the update button
  var updateButton = app.createButton('Update Label');
  app.add(updateButton)

  // Assign the update button handler
  var updateButtonHandler = app.createServerHandler('updateValues');
  updateButton.addClickHandler(updateButtonHandler);

  return app;
}

function updateValues() {
  var app = UiApp.getActiveApplication();

  // Update the label
  app.myLabel.setLabel('This is my updated label')

  return app;
}

我一直在网上搜索数小时试图寻找解决方案,但似乎无法弄明白。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

您提到的从对象名称属性获取窗口小部件的值的方法是获取窗口小部件的值,而不是设置它。 (在这种情况下,大写不是“喊”而只是为了引起注意: - ))

Label的示例通常是一个小部件的示例,您无法读取值...

您正在寻找的是设置窗口小部件值的方法:您必须通过其ID获取元素:请参阅更新代码中的以下示例:

function doGet() {
  var app = UiApp.createApplication();
  // Create the label
  var myLabel = app.createLabel('this is my label').setId('label');
  app.add(myLabel)
  // Create the update button
  var updateButton = app.createButton('Update Label');
  app.add(updateButton)
  // Assign the update button handler
  var updateButtonHandler = app.createServerHandler('updateValues');
  updateButton.addClickHandler(updateButtonHandler);
  return app;
}

function updateValues() {
  var app = UiApp.getActiveApplication();
  // Update the label
  var label = app.getElementById('label').setText('This is my updated label');
  return app;
}