Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
User interface 第三个列表框由前两个列表框填充,例如参数[GAS]_User Interface_Google Apps Script - Fatal编程技术网

User interface 第三个列表框由前两个列表框填充,例如参数[GAS]

User interface 第三个列表框由前两个列表框填充,例如参数[GAS],user-interface,google-apps-script,User Interface,Google Apps Script,我有一个类似的问题-但是我需要获得两个e.parameters的第一个和第二个列表框,以便填充第三个列表框的电子表格 e.参数正在读取vert,但chan未定义,我不理解,因为它在第二个列表框中功能齐全,但在第三个列表框中没有 在这段代码中有我监督过的东西吗 var channelBox = app.createListBox().setId('channelBox').setName('channelBox').setWidth(152).setHeight(22); var chan

我有一个类似的问题-但是我需要获得两个e.parameters的第一个和第二个列表框,以便填充第三个列表框的电子表格

e.参数正在读取
vert
,但
chan
未定义,我不理解,因为它在第二个列表框中功能齐全,但在第三个列表框中没有

在这段代码中有我监督过的东西吗

  var channelBox = app.createListBox().setId('channelBox').setName('channelBox').setWidth(152).setHeight(22);
  var chanHandler = app.createServerChangeHandler('showChannelinfo');
  chanHandler.addCallbackElement(channelBox);
  channelBox.addChangeHandler(chanHandler);
  var chaArray = ['Select channel','--','Email','Phone','Chat']; for (var i=0;i<chaArray.length;++i) {channelBox.addItem(chaArray[i]);};

  var verticalBox = app.createListBox().setId('verticalBox').setName('verticalBox').setWidth(152).setHeight(22);
  var vertHandler = app.createServerChangeHandler('showVerticalinfo');
  vertHandler.addCallbackElement(verticalBox);
  verticalBox.addChangeHandler(vertHandler);

function showChannelinfo(e){
  var app = UiApp.getActiveApplication();
  var itemSpreadsheetKey = 'ABC------------123';
  var openedSS = SpreadsheetApp.openById(itemSpreadsheetKey);
  var sheetList3 = openedSS.getSheetByName("boolean3");//Vertical Lookup Sheet
  var channelBox = app.getElementById('channelBox');
  var verticalBox = app.getElementById('verticalBox');
  var chan = e.parameter.channelBox;

  if (chan == 'Phone')
  { verticalBox.clear();
   var marketFilter = sheetList3.getRange('A1').setFormula('=iferror(filter(boolean2!A:D,boolean2!B:B=TRUE))');}
  if (chan == 'Email')
  { verticalBox.clear();
   var marketFilter = sheetList3.getRange('A1').setFormula('=iferror(filter(boolean2!A:D,boolean2!D:D=TRUE))');}
  if (chan == 'Chat')
  { verticalBox.clear();
   var marketFilter = sheetList3.getRange('A1').setFormula('=iferror(filter(boolean2!A:D,boolean2!C:C=TRUE))');}

  var numItemList1 = sheetList3.getLastRow();//get the item array
  var list1ItemArray = sheetList3.getRange(1,1,numItemList1).getValues();//Add the items in ListBox
  for(var i=0; i<list1ItemArray.length; i++)
  {verticalBox.addItem(list1ItemArray[i][0]);}

  if (chan == '--')
  {verticalBox.clear();
   var vertArray = ['Select vertical','Hardware','Apps','Ebooks','Movies','Music','Nik','Shopping','Places','Wallet','YouTube','BeatThatQuote'];
   for (var i=0;i<vertArray.length;++i) {verticalBox.addItem(vertArray[i]);};}

  return app
};

function showVerticalinfo(e){
  var app = UiApp.getActiveApplication();
  var itemSpreadsheetKey = 'ABC------------123';
  var openedSS = SpreadsheetApp.openById(itemSpreadsheetKey);
  var sheetList4 = openedSS.getSheetByName("boolean4");//Language Lookup Sheet
  var channelBox = app.getElementById('channelBox');
  var verticalBox = app.getElementById('verticalBox');
  var langBox = app.getElementById('langBox');
  var chan = e.parameter.channelBox;
  var vert = e.parameter.verticalBox;

  langBox.clear();
  var langFilter = sheetList4.getRange('A1').setFormula('=iferror(filter(boolean!A:D,boolean!A:A="' + chan + '",boolean!B:B="' + vert + '",boolean!D:D=TRUE))');
  //**this returns as chan = undefined**
  var numItemList2 = sheetList4.getLastRow();//get the item array
  var list1ItemArray2 = sheetList4.getRange(1,3,numItemList2).getValues();//Add the items in ListBox
  for(var i=0; i<list1ItemArray2.length; i++){langBox.addItem(list1ItemArray2[i][0]);}

  if (chan == '--')
  {langBox.clear();
   var langArray = ['Select language','Dutch','French','German','Italian','Portuguese', 'Russian','Spanish'];
   for (var i=0;i<langArray.length;++i) {langBox.addItem(langArray[i]);};} 

  return app
};
var channelBox=app.createListBox().setId('channelBox').setName('channelBox').setWidth(152).setHeight(22);
var chanHandler=app.createServerChangeHandler('showChannelinfo');
chanHandler.addCallbackElement(channelBox);
channelBox.addChangeHandler(chanHandler);

var chaArray=['选择频道','-','电子邮件','电话','聊天'];对于(var i=0;i而言,问题在于callback元素。 我建议您将这两个列表框放在一个面板中,并将此面板作为回调元素添加到两个处理程序中

function doGet(){
   /* Your other code here */ 
   var panel = app.createVerticalPanel().setId('panel'); 

   var channelBox = app.createListBox().setId('channelBox').setName('channelBox').setWidth(152).setHeight(22);
  var chanHandler = app.createServerChangeHandler('showChannelinfo');
  chanHandler.addCallbackElement(panel); /* Add panel as the callback element */
  channelBox.addChangeHandler(chanHandler);
  var chaArray = ['Select channel','--','Email','Phone','Chat']; for (var i=0;i<chaArray.length;++i) {channelBox.addItem(chaArray[i]);};


  var verticalBox = app.createListBox().setId('verticalBox').setName('verticalBox').setWidth(152).setHeight(22);
  var vertHandler = app.createServerChangeHandler('showVerticalinfo');
  vertHandler.addCallbackElement(panel); /* Add panel as the callback element */
  verticalBox.addChangeHandler(vertHandler);

  panel.add(channelBox);
  panel.add(verticalBox);

  /* Your other UI Code here */

}
函数doGet(){
/*您的其他代码在这里*/
var panel=app.createVerticalPanel().setId('panel');
var channelBox=app.createListBox().setId('channelBox').setName('channelBox').setWidth(152).setHeight(22);
var chanHandler=app.createServerChangeHandler('showChannelinfo');
chanHandler.addCallbackElement(panel);/*添加panel作为回调元素*/
channelBox.addChangeHandler(chanHandler);

var chaArray=['Select channel'、'--'、'Email'、'Phone'、'Chat'];for(var i=0;我不敢相信它真的那么简单!我感谢您的超快速回复,它很有效-是否有解释说明面板是callback元素而不是列表框,或者这是正常情况?@Srik