0

这是我第一次使用 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;
}

我已经在互联网上搜索了几个小时试图找到解决方案,但似乎无法弄清楚。有什么建议么?

4

1 回答 1

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;
}
于 2013-10-07T20:54:31.963 回答