-
Notifications
You must be signed in to change notification settings - Fork 36
Expand file tree
/
Copy pathCopyTablesFromSelectSheets.ts
More file actions
30 lines (28 loc) · 1.13 KB
/
CopyTablesFromSelectSheets.ts
File metadata and controls
30 lines (28 loc) · 1.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
function main(workbook: ExcelScript.Workbook) {
const sheetNames = ['Sheet1', 'Sheet2', 'Sheet3'];
workbook.getWorksheet('Combined')?.delete();
const newSheet = workbook.addWorksheet('Combined');
let targetTableCreated = false;
let combinedTable;
sheetNames.forEach((sheet) => {
const tables = workbook.getWorksheet(sheet).getTables();
if (!targetTableCreated) {
const headerValues = tables[0].getHeaderRowRange().getTexts();
const targetRange = updateRange(newSheet, headerValues);
combinedTable = newSheet.addTable(targetRange.getAddress(), true);
targetTableCreated = true;
}
for (let table of tables) {
let dataValues = table.getRangeBetweenHeaderAndTotal().getTexts();
let rowCount = table.getRowCount();
if (rowCount > 0) {
combinedTable.addRows(-1, dataValues);
}
}
})
}
function updateRange(sheet: ExcelScript.Worksheet, data: string[][]): ExcelScript.Range {
const targetRange = sheet.getRange('A1').getResizedRange(data.length-1, data[0].length-1);
targetRange.setValues(data);
return targetRange;
}