如何比较谷歌应用程序脚本中的字符串

时间:2014-03-17 15:34:56

标签: google-apps-script spreadsheet

我正在尝试比较我从谷歌电子表格中获得的字符串值。

我的月份以“Jun13”,“Aug13”等格式出现,我的脚本在以这种格式比较值时遇到问题

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

有人可以帮我解决这个比较字符串的问题吗?我也试过==和===,但它们都不起作用

4 个答案:

答案 0 :(得分:1)

试试:

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

答案 1 :(得分:1)

哈罗德的代码比你的代码更有效但是它有一个不同的逻辑...如果你有兴趣知道为什么你的代码在这里没有工作是一个采用相同方法的版本与你的一样,但有一些错误修正,使其工作。

简而言之,您将值推到循环中的错误位置,并且您忘记添加第一个项目以在第二个数组中至少包含一个元素。你没有以正确的方式使用匹配,匹配返回&#39;普通&#39;部分在字符串中,而不是布尔值。

以下是代码:

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

答案 2 :(得分:0)

你有什么理由不能使用&#39; ==&#39;操作

if ( "April" == ListOfMonths[j][0] ) {
    Logger.log("Match!");
}

答案 3 :(得分:0)

只需使用&#39; ==&#39;操作者:

if(myString != ''){
//do something
}

享受!