script chronophage
Publié : 12 déc. 2022 20:54
Bonjour à tous,
J'ai un script qui est utilisés par plusieurs collaborateurs.
Je leurs ai donnés accès à certaines cellules.
Cependant, je constate que certains modifient les bordures de tableau, les couleurs,...
Bref, j'ai imaginé un script qui chaque jour remet en forme mes tableaux.
A savoir que j'ai un document avec une quarantaine de feuille qui doivent donc être remises en forme chaque jour.
Voici mon script qui est chronophage (entre 40 et 60sec.).
function tableauClear() {
// INFO : Ce script se déclenche automatiquement chaque jour entre 21h et 22h (via trigger)
var ss = SpreadsheetApp.getActiveSpreadsheet();
var spreadsheet = SpreadsheetApp.getActive();
ss.getSheets().forEach(sh => {
if (sh.getRange('E1').getValue() == 'Bientôt clôturé' || sh.getRange('E1').getValue() == 'Modifiable' || sh.getRange('E1').getValue() == 'Template'){
sh.activate()
spreadsheet.getRange('F5:K45').activate();
spreadsheet.getActiveRangeList()
.setBorder(true, null, true, true, null, null, '#000000', SpreadsheetApp.BorderStyle.SOLID_THICK)
// info : haut, gauc, bas , droi, vert, hori, couleur ,
.setBorder(null, true, null, null, null, null, '#000000', SpreadsheetApp.BorderStyle.DOUBLE)
.setBorder(null, null, null, null, true, true, '#000000', SpreadsheetApp.BorderStyle.DOTTED)
.setHorizontalAlignment('center')
.setVerticalAlignment('middle')
.setFontFamily('Calibri')
.setFontSize(12)
.setFontWeight('bold')
.setFontStyle(null)
.setFontColor('#000000');
alternateColor();
spreadsheet.getRange('F2').activate();
};
});
masquerTemplate();
};
function alternateColor() {
var totalRows = SpreadsheetApp.getActiveRange().getNumRows();
var totalColumns = SpreadsheetApp.getActiveRange().getNumColumns();
var startRow = SpreadsheetApp.getActiveRange().getRow();
var startColumn = SpreadsheetApp.getActiveRange().getColumn();
var sheet = SpreadsheetApp.getActiveSheet();
var row = startRow;
while (row < totalRows+startRow) {
var column = startColumn
while (column < totalColumns+startColumn) {
if(row%2 == 0){
sheet.getRange(row, column).setBackgroundColor('#cfe2f3'); //light blue 3 (source : https://kierandixon.com/google-sheets-colors/)
}
else {
sheet.getRange(row, column).setBackgroundColor('#fce5cd'); //light orange 3 (source : https://kierandixon.com/google-sheets-colors/)
}
column++;
}
row++;
}
}
Quelqu'un a une idée pour accélérer mon script?
J'ai un script qui est utilisés par plusieurs collaborateurs.
Je leurs ai donnés accès à certaines cellules.
Cependant, je constate que certains modifient les bordures de tableau, les couleurs,...
Bref, j'ai imaginé un script qui chaque jour remet en forme mes tableaux.
A savoir que j'ai un document avec une quarantaine de feuille qui doivent donc être remises en forme chaque jour.
Voici mon script qui est chronophage (entre 40 et 60sec.).
function tableauClear() {
// INFO : Ce script se déclenche automatiquement chaque jour entre 21h et 22h (via trigger)
var ss = SpreadsheetApp.getActiveSpreadsheet();
var spreadsheet = SpreadsheetApp.getActive();
ss.getSheets().forEach(sh => {
if (sh.getRange('E1').getValue() == 'Bientôt clôturé' || sh.getRange('E1').getValue() == 'Modifiable' || sh.getRange('E1').getValue() == 'Template'){
sh.activate()
spreadsheet.getRange('F5:K45').activate();
spreadsheet.getActiveRangeList()
.setBorder(true, null, true, true, null, null, '#000000', SpreadsheetApp.BorderStyle.SOLID_THICK)
// info : haut, gauc, bas , droi, vert, hori, couleur ,
.setBorder(null, true, null, null, null, null, '#000000', SpreadsheetApp.BorderStyle.DOUBLE)
.setBorder(null, null, null, null, true, true, '#000000', SpreadsheetApp.BorderStyle.DOTTED)
.setHorizontalAlignment('center')
.setVerticalAlignment('middle')
.setFontFamily('Calibri')
.setFontSize(12)
.setFontWeight('bold')
.setFontStyle(null)
.setFontColor('#000000');
alternateColor();
spreadsheet.getRange('F2').activate();
};
});
masquerTemplate();
};
function alternateColor() {
var totalRows = SpreadsheetApp.getActiveRange().getNumRows();
var totalColumns = SpreadsheetApp.getActiveRange().getNumColumns();
var startRow = SpreadsheetApp.getActiveRange().getRow();
var startColumn = SpreadsheetApp.getActiveRange().getColumn();
var sheet = SpreadsheetApp.getActiveSheet();
var row = startRow;
while (row < totalRows+startRow) {
var column = startColumn
while (column < totalColumns+startColumn) {
if(row%2 == 0){
sheet.getRange(row, column).setBackgroundColor('#cfe2f3'); //light blue 3 (source : https://kierandixon.com/google-sheets-colors/)
}
else {
sheet.getRange(row, column).setBackgroundColor('#fce5cd'); //light orange 3 (source : https://kierandixon.com/google-sheets-colors/)
}
column++;
}
row++;
}
}
Quelqu'un a une idée pour accélérer mon script?