I am trying to compare string values that I have obtained from my google spreadsheet.
My Months appear in this format " Jun13", "Aug13" etc. and my script has trouble comparing the values when they are in such formats
var data = ss.getRange(2,2,ss.getLastRow(),3).getValues();
var ListOfMonths = new Array();
for(var i = 0; i < data.length; ++i){
var row = data[i][0];
var duplicate = false;
for(j in ListOfMonths){
if(row.toString.match(ListOfMonths[j][0])){
duplicate = true;
}
if(!duplicate){
ListOfMonths.push(row);
}
}
}
Could someone help me with this issue of comparing strings? I also tried == and === but they all don't work
try that:
function test(){
var ss = SpreadsheetApp.getActive().getSheetByName("month test");
var data = ss.getRange(2,2,ss.getLastRow(),3).getValues();
var ListOfMonths = new Array();
for(var i in data){
var row = data[i][0].toString();
if(ListOfMonths.indexOf(row)==-1){
Logger.log(row+" is not referenced. Adding it");
ListOfMonths.push(row);
}
}
Logger.log(ListOfMonths);
}
Harold's code is more efficient than yours but it has a different logic... if you're interrested to know why your code didn't work here is a version that takes the same approach as yours but with a few bug corrections that make it work.
Shortly described, you pushed the value at a wrong place in the loop and you forgot to add a first item to have at least one element in your second array. You didn't use match the right way, match returns the 'common' part in the string, not a boolean.
Here is the code :
function myFunction() {
var ss = SpreadsheetApp.getActiveSheet();
var data = ss.getRange(2,2,ss.getLastRow(),3).getValues();
var ListOfMonths = new Array();
ListOfMonths.push(data[0])
for(var i = 0; i < data.length; ++i){
var row = data[i];
var duplicate = false;
for(j in ListOfMonths){
var item = ListOfMonths[j][0];
if(row.toString().match(item) == item){
duplicate = true;
break;
}
}
if(!duplicate && i<data.length-1){
ListOfMonths.push(row);
}
}
Logger.log(ListOfMonths);
}
Is there any reason you can't use the '==' operator?
if ( "April" == ListOfMonths[j][0] ) {
Logger.log("Match!");
}
Just use '==' operator:
if(myString != ''){
//do something
}
Enjoy!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With