0

I have issues with Google app script IF condition. Problem i am facing its not returning value TRUE rather going to next/ Else statements. Code i am having:

const numberOfRowsToUpdate = deliveryDate.length;

// For each item making the for loop to work
for (i=0 ; i < numberOfRowsToUpdate;i++) {
    debugger;
  var dp = depositAmount[i];
  if(dp!==""|| dp!==0 || dp !==null || dp!==isblank())
   { .... <statements>
   }
}

I want to check whether particular cell of the array is empty / zero / returning null value.

thanks in advance for the help.

JPV
  • 26,499
  • 4
  • 33
  • 48

1 Answers1

0

SUGGESTION

I have used a similar script I'm using for a spreadsheet in which I need to search through every row for some data, but obviously adpating it to your case, and since I don't have your full code (and still can't comment asking for more info due to my recent joining in SO), I had to simplify it, in hope it will work for you.

What I did was use your incrementing i index from the for loop and use it to scan every row, while adjusting it to fit your array index, because we can't have i = 0 as a row index, and it would skip the first value on the array if left as i = 1).

SCRIPT

function test(){

const n = 6;
var depositAmount = [7,2,0,2,0,8];

// For each item making the for loop to work
var ss = SpreadsheetApp.getActive();
Logger.log(ss.getName());
for (var i=1 ; i <= n ;i++) {
    debugger;
    ss.getRange("A"+i).setValue(1);
  var dp = depositAmount[i-1];
  Logger.log(dp)
  if(dp != "" || dp != 0 /*|| dp != null || dp != isblank()*/)
   {
     ss.getRange("B"+i).setValue(dp);
   }
   else 
   {
     ss.getRange("C"+i).setValue("VOID")
     Logger.log(i-1+"th index of array is "+ss.getRange("C"+i).getValue());
   }
}

};

RESULTS

After running it with the four original conditions you used, i didn't get the expected result, as you must have, leading to this:

this.

While studying your original code, I stumbled upon this question about the differences between == and ===, as well as != and !==.

So before I used this in our favor, I tried the old trial and error method, using only one condition at a time, and then stacking them up. Not only I managed to find out the !== operator didn't work properly for this case, but also the comparison with null and the isblank() function (at least in my case, because i haven't defined it, and I'm not sure it is a built-in function) also don't work with either operator.

Therefore, using the != operator helps you better than the strict !==. The result of the final script is that:

that.

NOTES

I also tried using a null value within the array ([7,2,0,2,,8]), but it would always break away from the loop, never scanning the whole array, and I don't know how to circle that.

Here is the Execution Log for this script:

LOG

EDIT

While fooling around, I found this question and the answer by Etienne de Villers might be even faster to apply, or at least more useful for your purposes.

Rodrigo Biffi
  • 388
  • 4
  • 12