I have excel file in sharepoint.
Here is my office script that I saved in folder.
function main(workbook: ExcelScript.Workbook) {
BalanceSheet(workbook);
IncomeStatement(workbook);
CashFlow(workbook);
Depreciation(workbook);
TaxLiability(workbook);
ExpenseAccount(workbook);
Equity(workbook);
FinalBalance(workbook);
Revenue(workbook);
GeneralLedger(workbook);
}
function BalanceSheet(ws: ExcelScript.Worksheet) {
const rangesToCheck = ["E32", "E31", "E30", "E29", "E28", "E27", "E26"];
const rowsToHide = [33, 32, 31, 30, 29, 28, 27];
rangesToCheck.forEach((rangeAddress, index) => {
const value = ws.getRange(rangeAddress).getValue();
const rowIndex = rowsToHide[index];
ws.getRange(rowIndex + ":" + rowIndex).getEntireRow().setRowHidden(value === 0);
});
}
function IncomeStatement(ws: ExcelScript.Worksheet) {
const valueE34 = ws.getRange("E34").getValue();
const valueE45 = ws.getRange("E45").getValue();
ws.getRange("12:14").getEntireRow().setRowHidden(valueE34 === valueE45);
}
function CashFlow(ws: ExcelScript.Worksheet) {
const valueE35 = ws.getRange("E35").getValue();
ws.getRange("47:49").getEntireRow().setRowHidden(valueE35 === 0);
}
function Depreciation(ws: ExcelScript.Worksheet) {
const valueE26 = ws.getRange("E26").getValue();
const valueE35 = ws.getRange("E35").getValue();
const valueE37 = ws.getRange("E37").getValue();
ws.getRange("46:46").getEntireRow().setRowHidden(valueE26 === 0 && valueE35 === 0 && valueE37 === 0);
}
function TaxLiability(ws: ExcelScript.Worksheet) {
const valueH25 = ws.getRange("H25").getValue();
ws.getRange("66:66").getEntireRow().setRowHidden(valueH25 < 1);
}
function ExpenseAccount(ws: ExcelScript.Worksheet) {
const valueH25 = ws.getRange("H25").getValue();
const valueE35 = ws.getRange("E35").getValue();
const valueE37 = ws.getRange("E37").getValue();
ws.getRange("50:52").getEntireRow().setRowHidden(valueH25 === 0 && valueE35 === 0 && valueE37 === 0);
}
function Equity(ws: ExcelScript.Worksheet) {
const valueE35 = ws.getRange("E35").getValue();
ws.getRange("F:F").getEntireColumn().setColumnHidden(valueE35 === 0);
}
function FinalBalance(ws: ExcelScript.Worksheet) {
const valueH25 = ws.getRange("H25").getValue();
const valueH34 = ws.getRange("H34").getValue();
ws.getRange("D:D").getEntireColumn().setColumnHidden(valueH25 <= 0 && valueH34 <= 0);
}
function Revenue(ws: ExcelScript.Worksheet) {
const valueH25 = ws.getRange("H25").getValue();
const valueE35 = ws.getRange("E35").getValue();
const valueE37 = ws.getRange("E37").getValue();
ws.getRange("38:38").getEntireRow().setRowHidden(valueH25 === 0 && valueE35 === 0 && valueE37 === 0);
}
function GeneralLedger(ws: ExcelScript.Worksheet) {
const valueE26 = ws.getRange("E26").getValue();
const valueE35 = ws.getRange("E35").getValue();
const valueE37 = ws.getRange("E37").getValue();
const valueE65 = ws.getRange("E65").getValue();
const valueE66 = ws.getRange("E66").getValue();
ws.getRange("79:159").getEntireRow().setRowHidden(
valueE26 === 0 &&
valueE35 === 0 &&
valueE37 === 0 &&
valueE65 === 0 &&
valueE66 === 0
);
}
I have power automate that watches changes in that excel file and executes that script, but it takes 8 seconds to run it.
The idea is to add new row any time I add entry to balance sheet, and to show or hide columns based on some other criteria in other worksheets.
Seems like reading takes a lot of time, it is not as fast as in vba script.
How can I optimize that script?