im trying to clean some sheets, individually i make it work uncommenting and changing sheet name
function doClean(sheet)
{
// var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Resultado");
var LR = sheet.getLastRow();
var LC = sheet.getLastColumn();
sheet.getRange(1,1,LR,LC).getDisplayValues()
sheet.createTextFinder("-").matchEntireCell(true).replaceAllWith("");
sheet.createTextFinder("0").matchEntireCell(true).replaceAllWith("");
sheet.createTextFinder("0,00").matchEntireCell(true).replaceAllWith("");
sheet.createTextFinder("0,0000").matchEntireCell(true).replaceAllWith("");
};
but when when i try to group in array and execute with foreach
function doCleanSheets() {
var sheet = ["BLC", "Balanço", "DRE", "Resultado", "FLC", "Fluxo", "DVA", "Valor"];
SpreadsheetApp.getActive().sheet.forEach(doClean);
};
im getting error
TypeError: Cannot read property ‘forEach’ of undefined doCleanSheets @ – 10x_to_11x.gs:87
line 87 is SpreadsheetApp.getActive().sheet.forEach(doClean);
searched for error, but results were way more complex than my case, and i couldnt apply
Advertisement
Answer
When I saw your script, unfortunately, SpreadsheetApp.getActive() has no property of sheet. By this, such error occurs. When you want to use the sheet names of sheet in the forEach, how about the following modification?
Modified script:
Please modify doCleanSheets as follows.
function doCleanSheets() {
var sheet = ["BLC", "Balanço", "DRE", "Resultado", "FLC", "Fluxo", "DVA", "Valor"];
var sheets = SpreadsheetApp.getActive().getSheets().filter(s => sheet.includes(s.getSheetName()));
sheets.forEach(doClean);
}