循环遍历电子表格以收集以xxx_bb开头的数据

时间:2014-12-01 20:51:36

标签: javascript loops google-apps-script

我对以下任务感到困惑。 最后,我想在电子表格中找到某些数据。 这不是问题,我可以找到一个定义的值,并通过以下方式获取我需要的任何信息:

function findCell() {
       var ss = SpreadsheetApp.openById('ID');
       var sheet = ss.getSheetByName('NAME');
       var dataRange = sheet.getDataRange();
       var values = dataRange.getValues();

       for (var i = 0; i < values.length; i++) {
         var row = "";
         for (var j = 0; j < values[i].length; j++) {     
           if (values[i][j] == "Hallo") {
             row = values[i][j+11];
             Logger.log(row);
             Logger.log(i);
             }
           }       
     } 
  }

但我并不是想找到确切的值“Hallo”,而是以“Hallo_xxx”开头。我试图使用即indexOf,但我不确定我做错了什么 - 这个任务听起来不太难解决。这里有人有个好主意吗?

感谢您的建议, 萨

2 个答案:

答案 0 :(得分:0)

这里是我刚编写和测试过的一些代码。 findCell()应该做你想要的。正如您所推测的那样,indexOf()会快速查找字符串中的特定文本,但我不知道您在代码中尝试使用它的位置。

var ROW = 0;
var COLUMN = 1;

function test(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];

  var results = findCell("Hallo_xxx", sheet);

  for(var i=0 ; i<results.length ; i++){
    Logger.log("Match found at: " + colToA1(results[i][COLUMN]) + (results[i][ROW] + 1));
  }
}

function findCell(string, sheet) {
  var range = sheet.getDataRange();
  var values = range.getValues();  
  var results = [];

  for(var i=0 ; i<values.length ; i++){
    for(var j=0 ; j<values[0].length ; j++){
      if(values[i][j].indexOf(string) != -1){
        results.push([i, j]);
      }
    }
  }

  return results;  
}

function colToA1(col){
  return col < 26 ? 
    String.fromCharCode(col + 65) : 
    String.fromCharCode(parseInt(col / 26) + 64) + String.fromCharCode((col % 26) + 65);
}

答案 1 :(得分:0)

稍微研究一下,我正在寻找的答案是:

function findCell2() {
var ss = SpreadsheetApp.openById('ID');
var sheet = ss.getSheetByName('Name');
var values = sheet.getDataRange().getValues();


 for(var i=1;i<values.length;i++){
 if((values[i][1].indexOf('Hallo') >  -1){
            Logger.log('xxx: ' + values[i][2]);
  }
}  
}