1

現在、ドロップダウンの質問があるUIがあります。ユーザーがドロップダウンリストで特定の回答を選択したときに、ユーザーがさらに質問に回答できるようにする別のUIを表示したいと思います。次に、このウィンドウを閉じて、ユーザーを最初のUIに戻し、質問への回答を続けたいと思います。

私はpopuppanelを試し、1つのUiの不可視性をfalseに設定しましたが、何も機能しないようです。

注:最初のUIのデータは動的であるため、GUIビルダーを使用できません。そのため、コードを使用したソリューションのみを提供してください。

これらは私がこれまでに持っているコードです:

// when user select this drop down option, show another UI
case 'Move to a special meeting':
  displayActionItemsUI();
  cellStatus.offset(numOfRowsOffset,0).setValue(N);
  cellMeetingType.offset(numOfRowsOffset,0).setValue('Special Meeting');
  break;


function displayActionItemsUI() {

  var app = UiApp.getActiveApplication();

  var panelActionItems = app.createVerticalPanel();

  var gridActionItems = app.createGrid(3, 2).setId('gridActionItems')
      .setCellPadding(15);

  var lblTaskStatement = app.createLabel('Task Statement:');
  var lblOwner = app.createLabel('Owner:');
  var lblDeadline = app.createLabel('Deadline:');

  var tboxTask = app.createTextBox().setId('tboxTask').setName('tboxTask');
  var tboxOwner = app.createTextBox().setId('tboxOwner').setName('tboxOwner');
  var dboxDeadline = app.createDateBox()
      .setFormat(UiApp.DateTimeFormat.DATE_SHORT)
      .setId('dboxDeadline').setName('dboxDeadline');

  gridActionItems.setWidget(0, 0, lblTaskStatement);
  gridActionItems.setWidget(0, 1, tboxTask);

  gridActionItems.setWidget(1, 0, lblOwner);
  gridActionItems.setWidget(1, 1, tboxOwner);

  gridActionItems.setWidget(2, 0, lblDeadline);
  gridActionItems.setWidget(2, 1, dboxDeadline);

  var btnAdd = app.createButton('Add');

  var lblTest = app.createLabel().setId('lblTest').setVisible(false);

  panelActionItems.add(gridActionItems)
    .add(btnAdd).add(lblTest);

  app.add(panelActionItems);

  addHandler = app.createServerHandler('_responseToAdd')
    .addCallbackElement(panelActionItems);

  btnAdd.addClickHandler(addHandler);

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  ss.show(app);
}


// add response to a separate tab and close the UI
function _responseToAdd(e) {

  // store user's inputs;
  var actionItems = [];

  var actionObject = new Object();

  var taskStatement = e.parameter.tboxTask;
  var owner = e.parameter.tboxOwner;
  var deadline = e.parameter.dboxDeadline;

  actionObject['task'] = taskStatement;
  actionObject['owner'] = owner;
  actionObject['deadline'] = deadline;

  actionItems.push(actionObject);

  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Action Items");

  var headers = ['task', 'owner', 'deadline'];

  var valuesR = ObjApp.objectToArray(headers, actionItems); //returns [[]]
  sheet.getRange(sheet.getLastRow()+1, 1, 1, valuesR[0].length).setValues([valuesR[0]]);

  var app = UiApp.getActiveApplication();

  var panelActionItems = app.getElementById('panelActionItems');
  panelActionItems.clear();

  return app;


}
4

1 に答える 1

1

この投稿の回答のように複数のパネルを使用してそれを行うことができると思います。回答に応じてパネルを作成し、その内容を変更することができます...

于 2012-08-07T00:07:24.393 に答える