Google表格 - 通过表格整合数据

时间:2017-01-03 10:44:22

标签: javascript excel google-sheets-api

我正在谷歌的工作表中循环一些帮助。

场景 - 我有大约20个选项卡都具有相同的布局,我需要从所有这些选项卡中收集信息并放入1个主表单中。 数据从第2行(标题)开始,长度可变(如果需要,结束列为“Z”列)

代码可以创建一个新选项卡来放置所有数据,也可以创建一个特定的选项卡。

(可能需要考虑到我不需要包含一些表格 - 我可以定义这些表格)

在excel中它会很简单 创建新标签(被叫摘要) 循环选项卡 如果选项卡名称不在我的例外列表中,则在工作表上复制范围(动态范围) 将范围放在“摘要”选项卡上的下一个可用行 重复完成

任何帮助表示赞赏

1 个答案:

答案 0 :(得分:0)

如果其他人有类似的问题,我设法自己编写了一些代码(可能不是最快的,但是它可以完成工作)

function LoopSheetsMergeData(){
var ss = SpreadsheetApp.getActive();
var allsheets = ss.getSheets();
var destsheet = ss.getSheetByName("Summary");//MasterSheet To Merge To
var StartRow = 4//StartRow on all tabs
var StartCol = 1//AllData starts in Column 1  
var EndCol = 26//End Column of all data  
for (var s in allsheets){
    var sheet=allsheets[s]
    if (sheet.getName() == "Summary") //Disregard certain tabs
    {      
    }
    else
    {    
var EndRow = sheet.getLastRow();
var copyRng = sheet.getRange(StartRow,StartCol,EndRow,EndCol);
var destlastRow = destsheet.getLastRow();
var nextRow = destlastRow +1 
var shtname = sheet.getName(); 
copyRng.copyTo(destsheet.getRange(nextRow,2));//Row and Column of where to paste the information  
var newLastRow = destsheet.getLastRow();//New last Row after pasting the data
destsheet.getRange(nextRow,1,newLastRow,1).setValue(shtname&&newLastRow);//Insert into column 1 for each row copied the name of the sheet it came from      
    }
  }//end of  sheets loop.
}// end of function...

function LoopSheetsMergeData(){ var ss = SpreadsheetApp.getActive(); var allsheets = ss.getSheets(); var destsheet = ss.getSheetByName("Summary");//MasterSheet To Merge To var StartRow = 4//StartRow on all tabs var StartCol = 1//AllData starts in Column 1 var EndCol = 26//End Column of all data for (var s in allsheets){ var sheet=allsheets[s] if (sheet.getName() == "Summary") //Disregard certain tabs { } else { var EndRow = sheet.getLastRow(); var copyRng = sheet.getRange(StartRow,StartCol,EndRow,EndCol); var destlastRow = destsheet.getLastRow(); var nextRow = destlastRow +1 var shtname = sheet.getName(); copyRng.copyTo(destsheet.getRange(nextRow,2));//Row and Column of where to paste the information var newLastRow = destsheet.getLastRow();//New last Row after pasting the data destsheet.getRange(nextRow,1,newLastRow,1).setValue(shtname&&newLastRow);//Insert into column 1 for each row copied the name of the sheet it came from } }//end of sheets loop. }// end of function...