2014-12-01 34 views
0

我對以下任務感到困惑。最終,我想在電子表格中找到某些數據。 這是不是一個問題,我可以找到一個定義的值,抓住任何信息,我需要圍繞它通過:通過電子表格循環收集以xxx_bb開頭的數據

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_xxx」 。我嘗試使用indexOf,但我不確定我做錯了什麼 - 這個任務聽起來不太難解決。有人在這裏得到一個好主意嗎?

謝謝你的建議, 薩

回答

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