Bonjour,
J’aurai svp besoin de conseil sur mon script qui s’applique à un onglet parmi tant d’autres (tous avec le même format) sachant que chaque onglet comporte 3 parties de tableau à envoyer en automatique par email à différents moments de la journée.
Voici le script :
var feuille = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(‹ AMI ›)
var email = feuille.getRange(‹ B86 ›).getValue()
function envoyerEmail_TG2_AMI() {
MailApp.sendEmail({to:email,
subject: ‹ CR AMI 2 ›,
htmlBody: myTableHTML()})
};
function myTableHTML(){
var feuille = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(‹ AMI ›)
var plage = feuille.getRange(‹ A1:J29 ›);
return (tableHTML(plage))
}
function tableHTML(plage){
var data = plage.getDisplayValues()
var taille = plage.getFontSizes()
var fond = plage.getBackgrounds()
var couleur = plage.getFontColors()
var police = plage.getFontFamilies()
const mergedRanges = plage.getMergedRanges();
var flag = Array.from({ length: plage.getNumRows() }, () => Array.from({ length: plage.getNumColumns() }, () => true));
var layout = Array.from({ length: plage.getNumRows() }, () => Array.from({ length: plage.getNumColumns() }, () => ‹ ›));
mergedRanges.forEach((rng,i) => {
for (x=rng.getRow();x<rng.getRow()+rng.getNumRows();x++){
for (y=rng.getColumn();y<rng.getColumn()+rng.getNumColumns();y++){
flag[x-1][y-1]=false
}
}
flag[rng.getRow()-1][rng.getColumn()-1]=true
layout[rng.getRow()-1][rng.getColumn()-1]=’ colspan=« ‹ +rng.getNumColumns()+ › » rowspan=« ‹ +rng.getNumRows()+ › » ’
});
var htmltable = ‹
for (row = 0; row<data.length; row++){
htmltable += ‹ ›;
for (col = 0 ;col<data[row].length; col++){
if (flag[row][col]){
if (data[row][col] === « » || 0) {
htmltable += ‹ <td ‹ +layout[row][col]+ › style="background-color: › + fond[row][col] + ‹ ;"> › + ’ ’ + ‹ ›;
}
else
htmltable += ‹ <td ‹ +layout[row][col]+ › style="border: 1px solid black; font-family: › + police[row][col] + ‹ ; background-color: › + fond[row][col] + ‹ ; color: › + couleur[row][col] + ‹ ; font-size: › + taille[row][col] + ‹ px;"> › + data[row][col].replace(/(\r\n|\n|\r)/gm,«
») + ‹ ›;
}
}
htmltable += ‹ ›;
}
htmltable += ‹
return htmltable
}
Lorsque je modifie la plage " var plage = feuille.getRange(‹ A1:J29 ›); " pour créer un 2eme envoi automatique sur la même feuille mais un tableau différent en remplacant par " var plage = feuille.getRange(‹ A30:J48 ›) → la 2eme macro envoi email ne fonctionne pas !
Merci par avance de votre aide
Cdt