我需要将数据从3张纸复制到同一电子表格中的另一张主表

时间:2012-08-14 05:56:36

标签: google-apps-script google-sheets google-spreadsheet-api

我为此编写了一个代码,但收到了错误

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

}

我无法弄清楚错误。任何帮助表示赞赏。我是新来的,需要帮助。

2 个答案:

答案 0 :(得分:0)

您需要名称中包含“Rep”的工作表。

“第一个数组存储了所有销售代表工作表。由于某些工作表可能不是销售代表工作表,因此仅当工作表名称具有”-Rep“后缀(例如”JohnDoe-Rep“)时,脚本才会存储工作表“

代码来源:http://blog.ditoweb.com/2012/01/consolidate-spreadsheet-sheets-with.html

这就是为什么它不起作用。

答案 1 :(得分:0)

mSheet.getRange(2,1,sheetArray.length,12).setValues(sheetArray)

我遇到了同样的问题,并按照“Rep”解决方案解决了这个问题。然后我遇到了另一个问题并意识到我的列数不同......所以只需返回并将no 12更改为工作表中的行数。

同时尝试保持所有工作表的格式相同。

重命名要合并数据的工作表