0

このためのコードを書きましたが、エラーが発生します

The coordinates or dimensions of the range are invalid. (line 44)

コード:

function updateMaster() {
var repArray  = new Array();
 var ss        = SpreadsheetApp.getActiveSpreadsheet();
 var allSheets = ss.getSheets();
 // build array of all sheets
 for (i in allSheets) {                              
   if ((allSheets[i].getName()).match(/.*?\-Rep$/))
      {repArray.push(allSheets[i].getName());}
 }

 // store all sheets in array
 var sheetArray = [];   
 // loop through all rep sheets                             
 for (var j in repArray) {       
   // get each sheet                    
   var tempSheet  = ss.getSheetByName(repArray[j]);  
       // get sheet data
   var dataRange  = tempSheet.getDataRange().getValues(); 
   // remove the first header row
   dataRange.splice(parseInt(0), 1);                 
       // append sheet data to array
   var sheetArray = sheetArray.concat(dataRange);    
 }

 // Time to update the master sheet
 var mSheet    = ss.getSheetByName("summary");        
 // save top header row
 var headerRow = mSheet.getRange(1,1,1,12).getValues(); 
 // clear the whole sheet
 mSheet.clear({contentsOnly:true});                 
 // put back the header row 
 mSheet.getRange(1, 1, 1, 12).setValues(headerRow); 

これは、マスターシートへの書き込み中にエラーが発生する場所です。

 // write to the Master sheet via the array 
 mSheet.getRange(2, 1, sheetArray.length, 12).setValues(sheetArray);
  // force spreadsheet updates
 SpreadsheetApp.flush();                   
 // pause (1,000 milliseconds = 1 second)          
 Utilities.sleep("200");                             

 // delete empty rows at bottom
 var last = mSheet.getLastRow();                     
 var max  = mSheet.getMaxRows();
 if (last !== max) {mSheet.deleteRows(last+1,max-last);}

}

エラーがわかりません。

4

2 に答える 2

0

mSheet.getRange(2, 1, sheetArray.length, 12).setValues(シート配列)

私は同じ問題に直面し、「Rep」ソリューションに従って解決しました。その後、別の問題に遭遇し、列の数が異なることに気付きました...戻って、12番をシートの行数に変更してください。

また、すべてのシートの形式を同じに保つようにしてください。

データを結合するシートの名前を変更します

于 2014-11-05T08:55:02.830 に答える
0

名前の中に「Rep」が入ったシートが必要です。

「最初の配列には、すべての営業担当者シートが格納されます。一部のシートは営業担当者シート以外のものである可能性があるため、スクリプトは、シート名に「-Rep」サフィックスがある場合にのみシートを格納します (例:「JohnDoe-Rep」)。

コードソース: http://blog.ditoweb.com/2012/01/consolidate-spreadsheet-sheets-with.html

それが機能していない理由です。

于 2013-08-15T08:49:37.780 に答える