Google Apps 脚本示例 - 如何根据单选按钮的值更改列表框的值

Google Apps Script Example - How to change value of listbox dependent value of radio button

我有一个关于 Google Apps 脚本的问题。我想创建一个基本表单,其中表单包含文本框、单选按钮、列表框和文件上传。我的问题是,我想根据单选按钮的 selection 更改列表框的值。

例如:

//variable radio button
var valRadio1 = app.createRadioButton("radio", "One").setName("One").setId("One");
var valRadio2 = app.createRadioButton("radio", "Two").setName("Two").setId("Two");

//arrays of listbox
var item1 = ["item1","item2"];
var item2 = ["item3","item4"];

//variable listbox
var listBox = app.createListBox().setId("box").setName("box");

如果我 select valRadio1,则 listBox 将加载 item1 的值,如果我 select valRadio2,则 listBox 将加载 item2 的值。那么你能向我解释一下我的问题的解决方案吗?你能给我一个小例子来解决我的问题吗?非常感谢大家能帮帮我:D.

注意:我还在使用UI服务,所以请用这种方式向我解释:D.

我建议在 UiApp 上使用 HTML 服务,因为它已经贬值了。

但是,以下答案可能对您的查找有所帮助。为此,您必须为每个单选按钮附加点击事件处理程序。

function doGet(e) {
  var app = UiApp.createApplication().setTitle('Title'); 
  var panel = app.createVerticalPanel();
  var lb = app.createListBox(true)
                 .setId('lbId')
                 .setName('lbName')
                 .setHeight(60)
                 .setWidth(60);

  var valRadio1 = app.createRadioButton("Radio", "one").setName('one').setId('one');
  var valRadio2 = app.createRadioButton("Radio", "two").setName('two').setId('two');

  var handler1 = app.createServerChangeHandler('one');
  handler1.addCallbackElement(panel);  
  valRadio1.addClickHandler(handler1);

  var handler2 = app.createServerChangeHandler('two');
  handler2.addCallbackElement(panel);  
  valRadio2.addClickHandler(handler2);

  panel.add(valRadio1);      
  panel.add(valRadio2);  

  panel.add(lb);
  app.add(panel);  

  return app;
}

function one(e){
  var app = UiApp.getActiveApplication(); 
  app.getElementById('two').setValue(false);
  var lb = app.getElementById('lbId');
  lb.clear();

  var item1 = ["item1","item2"];

  for(var i=0;i<item1.length;i++) {
    lb.addItem(item1[i]);
  }

  return app;
}

function two(e){
  var app = UiApp.getActiveApplication(); 
  app.getElementById('one').setValue(false);
  var lb = app.getElementById('lbId');
  lb.clear();

  var item2 = ["item3","item4"];

  for(var i=0;i<item2.length;i++) {
    lb.addItem(item2[i]);
  }

  return app;
}

更多信息可以参考depreciated documentation of UiApp.