2015-09-04 115 views
0

我有項目數據隨時間表電子表格每月記錄對每個項目ID谷歌電子表格||類型錯誤:無法讀取屬性「0」

我想通過每一張重複,如果有匹配項目ID,我想總結每個項目記錄的小時數。

我寫了下面的代碼,但不斷收到

TypeError: Cannot read property "0" from undefined. (line 31).

這是我的表:https://goo.gl/rrsSxI

這是我的代碼。

function TotalHours(TaskID) { 
 

 
    var a = SpreadsheetApp.getActiveSpreadsheet().getSheets().length; 
 
    var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets(); 
 
    var sum = 0; 
 
    // var fcol = 0; 
 

 

 
    for (var i = 1; i <= a; ++i) { 
 

 
    // var sheetname = sheets[i].getName(); 
 
    //var cell = sheets[i].getActiveCell(); 
 

 
    //Set active cell to A1 on each sheet to start looking from there 
 
    SpreadsheetApp.setActiveSheet(sheets[i]) 
 
     //var sheet = sh.getActiveSheet(); 
 
    var range = sheets[i].getRange("A1"); 
 
    //* sheets[i].setActiveRange(range);  
 

 
    var data = sheets[i].getDataRange().getValues(); 
 

 
    for (var row = 2; row <= data.length; ++row) { 
 

 
     if (data[row][0] == TaskID) { 
 

 
     for (var col = 2; col <= 31; ++col) { 
 
      sum += sheets[i].getRange(row, col).getValue(); 
 
     } 
 
     } 
 
    } 
 
    } 
 

 
    return sum; 
 

 
}

有人可以幫助我什麼,我做錯了。

回答

0

我假設你想在排除公式將被使用(「跟蹤器」片?

看看這個工程?

function TotalHours(TaskID) { 
var sum = 0, 
    s = SpreadsheetApp.getActive(), 
    active = s.getActiveSheet().getName(), 
    sheets = s.getSheets(); 
for (var i = 0, slen = sheets.length; i < slen; i++) { 
    if(sheets[i].getName() != active) { 
    var sheetVal = sheets[i].getDataRange() 
     .getValues(); 
    for (var j = 0, vlen = sheetVal.length; j < vlen; j++) { 
     if (sheetVal[j][0] == TaskID) { 
      for (var k = 2, rlen = sheetVal[j].length; k < rlen; k++) { 
      var c = sheetVal[j][k] 
       sum += c && !isNaN(parseFloat(c)) && isFinite(c)? c : 0; //check if cell holds a number 
      } 
     } 
    } 
    } 
} 
return sum; 
} 
+0

感謝。它的工作。我明白我的錯誤 –

相關問題