Skip to main content

Sheet merger

Merges data from all sheets into the active sheet by copying the used range of each sheet and appending it.

(function () {
let sheets = Api.GetSheets();
let mergedSheet = Api.GetActiveSheet();
let currentRow = 0;

for (let i = 0; i < sheets.length; i++) {
if (sheets[i].GetName() != mergedSheet.GetName()) {
let sheet = sheets[i];
let data = sheet.GetUsedRange().GetValue();
let range = sheet.GetUsedRange().Address;
range = range.replace(/\$/g, "");

let parts = range.split(":");
let column1 = parts[0].match(/[A-Z]+/)[0];
let column2 = parts[1].match(/[A-Z]+/)[0];

let row1 = parseInt(parts[0].match(/\d+/)[0]) + currentRow;
let row2 = parseInt(parts[1].match(/\d+/)[0]) + currentRow;

currentRow = currentRow + parseInt(parts[1].match(/\d+/)[0]) + 1;

let newRange = column1 + row1 + ":" + column2 + row2;
console.log(newRange);

mergedSheet.GetRange(newRange).SetValue(data);
}
}
})();

Methods used: GetSheets, GetActiveSheet, GetName, GetUsedRange, GetValue, GetRange, SetValue

Result

SheetMergerSheetMerger