Convertir date en jj/mm/aaaa
Bonjour,
Je rame depuis plusieurs jours...
Dans mon tableau, chaque feuille est nommée par le n° de semaine. Je souhaite changer ça par la date du lundi au format JJ/MM/AAAA reprise dans la cellule H3.
Le script ci-dessous, me sert à multiplier les semaines automatiquement jusqu'à 25 semaines dans le futur.
Voici mon script et une capture d'écran de mon fichier. Merci.
function DuplicateSheetWithProtectionsAutomatic() {
// INFO : Ce script se déclenche automatiquement les jeudis entre 4h et 5h du matin (via déclencheur ou trigger)
var ss = SpreadsheetApp.getActiveSpreadsheet();
var date = new Date();
for (var j = 0; j < 25; j++) {
// lundis
date.setDate(date.getDate() + 7 - date.getDay() + 1);
var sheetName = 'Sem. ' + date.getWeek();
gotoLastSheet();
if (ss.getSheetByName('✅ ' + sheetName) == null && ss.getSheetByName('⛔ ' + sheetName) == null) {
sheet = ss.getSheetByName('Template');
sheet2 = sheet.copyTo(ss).setName('✅ ' + sheetName).setTabColor('#00ff00');
sheet2.getRange('D1').setValue(date.getWeekYear());
sheet2.getRange('F3').setValue(date.getWeek());
protectAutorise();
}
}
}
// Renvoie la date sous format ISO.
Date.prototype.getWeek = function () {
var date = new Date(this.getTime());
date.setHours(0, 0, 0, 0);
// C'est le jeudi de la semaine en cours qui détermine l'année
date.setDate(date.getDate() + 3 - (date.getDay() + 6) % 7);
// Le 4 janvier est toujours dans le semaine 1
var week1 = new Date(date.getFullYear(), 0, 4);
// Ajustez au jeudi de la semaine 1 et comptez le nombre de semaines de la date à la semaine 1
return 1 + Math.round(((date.getTime() - week1.getTime()) / 86400000 - 3 + (week1.getDay() + 6) % 7) / 7);
}
// Renvoie l'année sous le format AAAA (à quatre chiffres) correspondant à la semaine ISO de la date.
Date.prototype.getWeekYear = function () {
var date = new Date(this.getTime());
date.setDate(date.getDate() + 3 - (date.getDay() + 6) % 7);
return date.getFullYear();
}
function gotoLastSheet(){
// Va à la dernière feuille
const ls = SpreadsheetApp.getActiveSpreadsheet();
ls.getSheets()[ls.getSheets().length-1].activate();
}
function protectAutorise() {
// Bloque les students et autorise 1 utilisateur pour certaines cellules (F2:J2 + A5:A45 + E1)
gotoLastSheet();
var spreadsheet = SpreadsheetApp.getActive();
var email = /[\w.-]+@[\w.-]{2,}\.[a-z]{2,}/.exec(spreadsheet.getRange('K2').getValue())[0]
var protection = spreadsheet.getRange('F2:J2').protect();
protection.setDescription('Student')
var protection = spreadsheet.getRange('A5:A45').protect();
protection.setDescription('Student')
var protection = spreadsheet.getRange('E1').protect();
protection.setDescription('Student')
var protection = spreadsheet.getRange('F3:J4').protect();
protection.setDescription('Student and User')
.removeEditors([email]);
var protection = spreadsheet.getRange('K1:K4').protect();
protection.setDescription('Student and User')
.removeEditors([email]);
var protection = spreadsheet.getRange('B5:E45').protect();
protection.setDescription('Student and User')
.removeEditors([email]);
var protection = spreadsheet.getRange('F1:J1').protect();
protection.setDescription('Student and User')
.removeEditors([email]);
var protection = spreadsheet.getRange('A1:E4').protect();
protection.setDescription('Student and User')
.removeEditors([email]);
};