首页 > 解决方案 > Google Script for 循环未运行

问题描述

我正在尝试使用 chg 数组检查 org 数组中的重复项。如果临时数组没有重复的推送值。


  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 脚本调试模式下,临时对象是没有数据的对象。

我试图将调试器放在任何地方,但它没有进入 for 循环。

标签: javascriptgoogle-sheets

解决方案


导致错误的错字..... org.legnth --> 应该是org.length 我正在尝试获取数组长度

 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;
 } 

更改日志:

  • org.length,一个错字更正
  • 删除 org 和 chg 后面的 [0] ,因为它的一维数组
  • 将 var temp 定义为数组,因为我的第一个项目需要被推送。

2020-01-30 0023 GMT+8


推荐阅读