0

前のリストボックスに基づいて3つのリストボックスを作成する方法を理解するのに少し助けが必要です。これまでのところ、スプレッドシートから入力する1つのリストボックスがあります。2番目のリストボックスが最初のリストボックスに基づいて入力され、3番目のリストボックスが最初のリストボックスに基づいて入力されるように設定するのを誰かが手伝ってもらえますか?コードは次のとおりです。

function doGet(e){
  var app = UiApp.createApplication();
  var mainPage = app.createVerticalPanel().setId('mainPage');
  var dataItemsLB = app.createListBox().setId('dataItemsLB').setName('dataItemsLB'); 
  var dataItemsLbl = app.createLabel('Data Items'); 
  dataItems(dataItemsLB);
  mainPage.add(dataItemsLB);
  app.add(mainPage);
  return app;
  }


  function dataItems(listbox){
  var app = UiApp.getActiveApplication();
  var ss = SpreadsheetApp.openById('0AhraBJOts4V3dDhYbERTR0hFNUtNdEhZd2c4OElpY0E');
  var list = ss.getSheetByName('dataItems');
  var values = list.getRange(1,1,ss.getLastRow(),1).getValues();
  for (var i in values){
  listbox.addItem(values[i][0].toString());
  }
  return app;
  }

上記のコードは1つのリストボックス専用ですが、下から始めるのに役立つと思ったので、説明を理解しました。アドバイスありがとうございます!

4

1 に答える 1

1

コミュニティに返信して、次のコードを試してください。

function doGet(e){
  var app = UiApp.createApplication();
  var mainPage = app.createVerticalPanel().setId('mainPage');
  var dataItemsLB = app.createListBox().setId('dataItemsLB').setName('dataItemsLB'); // create a basic list box
  var dataItemsLB2 = app.createListBox().setId('dataItemsLB2').setName('dataItemsLB2'); // create a basic list box
  var dataItemsLB3 = app.createListBox().setId('dataItemsLB3').setName('dataItemsLB3'); // create a basic list box
  var dataItemsLbl = app.createLabel('Data Items'); 
  dataItems(dataItemsLB); // call the "dataItems" function to populate the list box


  // Create Server Handlers
  var sHandlerLB = app.createServerHandler("listLBSelect");
  sHandlerLB.addCallbackElement(mainPage);
  dataItemsLB.addChangeHandler(sHandlerLB);
  dataItemsLB2.addChangeHandler(sHandlerLB);  

  mainPage.add(dataItemsLB);
  mainPage.add(dataItemsLB2);
  mainPage.add(dataItemsLB3);
  app.add(mainPage);

  return app;
}


function dataItems(listbox){
  var app = UiApp.getActiveApplication();
  var ss = SpreadsheetApp.openById('0AhraBJOts4V3dDhYbERTR0hFNUtNdEhZd2c4OElpY0E');
  var list = ss.getSheetByName('dataItems');
  var values = list.getRange(1,1,ss.getLastRow(),1).getValues();
  for (var i in values){
    listbox.addItem(values[i][0].toString());
  }
  return app;
}

function listLBSelect(e) {
  var app = UiApp.getActiveApplication();
  Logger.log(e);
  Logger.log("Listbox changed: " + e.parameter.source);
  // check which listbox has been changed:
  switch(e.parameter.source) {
    case "dataItemsLB":
      var dataItemsLB2 = app.getElementById("dataItemsLB2");
      dataItemsLB2.addItem("aaaaaa"); 
      dataItemsLB2.addItem("bbbbbb"); 
      dataItemsLB2.addItem("cccccc"); 
      break;
    case "dataItemsLB2":
      var dataItemsLB3 = app.getElementById("dataItemsLB3");
      dataItemsLB3.addItem("hhhhhh"); 
      dataItemsLB3.addItem("jjjjjj"); 
      dataItemsLB3.addItem("kkkkkk"); 
      break;     
  }
  return app;
}
于 2012-12-28T15:24:02.030 に答える