Google Script для l oop не работает - PullRequest
0 голосов
/ 29 января 2020

Я пытаюсь проверить дубликат массива org с массивом chg. Если в массиве temp нет повторяющегося значения pu sh.


  function uList(org, chg){
    //return a unique list
    var org ;
    var chg ;
    var temp ;

    for(var i=0;i<=org.legnth;i++){ 
      for(var j=0;j<=chg.length;j++){
         if(org[i][0]==chg[j][0]){
           if(temp.length>0) {temp.pop();}

         }else{
           temp.push(org[i][0]);


         }
      }

    }
      return temp;
 }

Весь код показан ниже.

   function onEdit(e){
 // Browser.msgBox("test");
  updateForm();
    }

  function uList(org, chg){
    //return a unique list
    var org ;
    var chg ;
    var temp ;

    for(var i=0;i<=org.legnth;i++){ 
      for(var j=0;j<=chg.length;j++){
         if(org[i][0]==chg[j][0]){
           if(temp.length>0) {temp.pop();}

         }else{
           temp.push(org[i][0]);


         }
      }

    }
      return temp;
 } 



 function updateForm(){ // select list from name
  // call your form and connect to the drop-down item
  var form = FormApp.openById("");
  var namesList = form.getItemById("").asListItem(); //data-item-id

// identify the sheet where the data resides needed to populate the drogp-down// Mask_order (responses)
  var ss =  SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/').getSheetByName("");
  var names =ss;
  var namesValues =names.getRange("F2:F").getValues();//desired dorpdown list
  var total=names.getRange("H2").getValue();//Define COUNTA
  var org_list=names.getRange("E2:E").getValues();//original list
  var chg_list=names.getRange("D2:D").getValues();//Redeem list
  var the_list=uList(org_list,chg_list);



  //var thelist=uList(org_list,chg_list);
  // names.getRange("F2").setValue("2");

  var temp=form.getItemById("").setHelpText("No. of :"+total)// Mask redeem  help text.
      debugger;
    var studentNames = [];




  // convert the array ignoring empty cells
  for(var i = 0; i < namesValues.length; i++)   
    if(namesValues[i][0] != "")
      studentNames[i] = namesValues[i][0];

  // populate the drop-down with the array data
  namesList.setChoiceValues(studentNames);

    }

В режиме отладки сценария Google: temp - это объект без данных.

Я попытался поставить повсеместно отладчик, и он не ввел for для l oop.

  • , чтобы поставить для l oop внутри updateForm (), он не запускается.

  • чтобы создать демонстрационную функцию, я мог получить доступ и передавать данные в различные функции.

  • изменить имя переменной не работает.

1 Ответ

1 голос
/ 29 января 2020

Опечатка, вызвавшая ошибку ..... org.legnth -> должна быть длина орг. Я пытаюсь получить длину массива

 function uList(org, chg){
    //return a unique list
    var org ;
    var chg ;
    var temp ;

    for(var i=0;i<=org.legnth;i++){ 
      for(var j=0;j<=chg.length;j++){
         if(org[i][0]==chg[j][0]){
           if(temp.length>0) {temp.pop();}

         }else{
           temp.push(org[i][0]);


         }
      }

    }
      return temp;
 } 

Изменить на

 function uList(org, chg){
    //return a unique list
    var org ;
    var chg ;
    var temp=[] ;

    for(var i=0;i<=org.legnth;i++){ 
      for(var j=0;j<=chg.length;j++){
         if(org[i]==chg[j]){
           if(temp.length>0) {temp.pop();}

         }else{
           temp.push(org[i][0]);


         }
      }

    }
      return temp;
 } 

Журнал изменений:

  • длина орг., Опечатка исправлена ​​
  • удалить [0] позади org и chg, так как его 1D массив
  • определяет переменную var как массив, поскольку мои первые элементы должны быть отправлены.

2020-01-30 0023 GMT + 8

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...