Я работаю над некоторыми электронными таблицами (25 из них), каждая из которых предназначена для одного сотрудника и имеет 12 листов, по одному на месяц.Иногда, увы, все электронные таблицы нуждаются в некоторых изменениях.Теперь им нужно внести некоторые изменения в форматирование.И скрипт ниже работает.Но это очень медленно. Можете ли вы помочь мне с оптимизацией? Я думаю, что основной областью оптимизации должен быть переход к определенным ячейкам для создания границ.Я понятия не имею, что я могу сделать, чтобы сделать это быстрее.
Второе, что касается оптимизации, заключается в том, что этот скрипт работает для 4 электронных таблиц - если я дам все 25 электронных таблиц одновременно, он заканчивается в середине 5-го числа.
function format() {
//list of spreadsheetIDs, I have 25 of them, each one is a summary for one employee
var summary = [
'example1_asdfghjklqwertyuiop',
'example2_asdfghjklqwertyuiop’,
……
……
……
'example24_asdfghjklqwertyuiop’,
'example25_asdfghjklqwertyuiop’
];
//list of sheets in every spreadsheet, they are the same in everyone spreadsheet, month names are here in Polish
var month= ['Styczeń','Luty','Marzec','Kwiecień','Maj','Czerwiec','Lipiec','Sierpień','Wrzesień','Październik','Listopad','Grudzień'];
for each (ss in summary){
var s = SpreadsheetApp.openById(ss);
for each (m in month){
var sheet = s.getSheetByName(m);
if (m == 'Styczeń'||m == 'Marzec'||m == 'Maj'||m == 'Lipiec'||m == 'Sierpień'||m == 'Październik'||m == 'Grudzień'){
var days = 31;
} else if (m == 'Kwiecień'||m == 'Czerwiec'||m == 'Wrzesień'||m == 'Listopad'){
days = 30;
} else {
days = 28;
};
sheet.getRangeList(['F11:F43', 'K11:K43', 'M11:M43', 'U11:U43', 'AA11:AA43']).setFontColor('#999999');
for (var i = 1 ; i<=days ; i++){
//13 row is the first row for 1st January, February…
var cell = sheet.getRange(12 + i, 7);
//checking if background color of a cell is white (holidays, saturdays and sundays have different backgroung)
var bg_color = sheet.getRange(12 + i, 7).getBackground();
if (bg_color == "#ffffff") {
//if a day is weekday then its row needs to have some cells with border
sheet.getRange(12 + i, 7).setBorder(true, true, true, true, true, true, '#000000', SpreadsheetApp.BorderStyle.SOLID);
sheet.getRange(12 + i, 12).setBorder(true, true, true, true, true, true, '#000000', SpreadsheetApp.BorderStyle.SOLID);
sheet.getRange(12 + i, 14).setBorder(true, true, true, true, true, true, '#000000', SpreadsheetApp.BorderStyle.SOLID);
sheet.getRange(12 + i, 21).setBorder(true, true, true, true, true, true, '#000000', SpreadsheetApp.BorderStyle.SOLID);
sheet.getRange(12 + i, 27).setBorder(true, true, true, true, true, true, '#000000', SpreadsheetApp.BorderStyle.SOLID);
//sheet.getRange('A1:AE50').setBorder(false, false, false, false, false, false);
}
}
}
}
}