Envoi automatique d'email en appuyant sur bouton et comprenant uniquement un tableau sheet avec envoi en plusieurs étape Le sujet est résolu

Avatar de l’utilisateur
nulenmacro29

Membre tout neuf
Messages : 3
Inscription : 06 déc. 2022 19:23

Envoi automatique d'email en appuyant sur bouton et comprenant uniquement un tableau sheet avec envoi en plusieurs étape

Message par nulenmacro29 »

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 = '<table cellspacing=0 cellspadding=2px>';
  for (row = 0; row<data.length; row++){
    htmltable += '<tr>';
    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] + ';">' + ' ' + '</td>';
        } 
        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,"<br>") + '</td>';
        }
      }
    htmltable += '</tr>';
  }
  htmltable += '</table>';
  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
 
Avatar de l’utilisateur
NC-Ahmet

Coach Numericoach
Invétéré
Messages : 86
Inscription : 19 sept. 2022 14:09
A remercié : 16 fois
Remercié : 19 fois

Re: Envoi automatique d'email en appuyant sur bouton et comprenant uniquement un tableau sheet avec envoi en plusieurs é

Message par NC-Ahmet »

Bonjour nulenmacro29,

Bonne année 2023 ! Tous mes meilleurs vœux. 😉

Qu'entends tu par "la 2eme macro envoi email ne fonctionne pas" ? Obtiens tu un message d'erreur ?

Pourrais tu nous le transmettre et nous décrire plus en détails à quel moment intervient l'erreur ?

Pour changer de plage tu modifies directement ton code à la main ?

Tu indiques que l'envoi se fait à plusieurs moments de la journée, tu utilises donc des déclencheurs ?

Nous n'avons pas assez d'éléments pour t'aider là.

Sinon à vue d'œil, plusieurs solutions peuvent se présenter à toi : 

- Définir une nouvelle fonction pour ta plage A30:J48, par exemple créer une fonction envoyerEmail_TG2_AMI_Table2()
- Comme dit précédemment, tu n'as pas explicité si tu utilisais un déclencheur ou non, essaye de te pencher sur le sujet pour voir à ce niveau là et mieux nous renseigner.
- Si cela ne fonctionne toujours pas, essaye de déboguer ton code en ajoutant des affichages de messages d'erreur ou en utilisant des outils de débogage tels que la console Google Apps Script. Ensuite envoie nous tous les éléments que tu as pour qu'on puisse te renseigner correctement, sinon c'est difficile pour nous également.

A+,
Ahmet
Répondre

Rejoignez la discussion 💬

Vous devez être enregistré pour participer à la discussion et échanger avec les différents membres

Inscrivez-vous dès aujourd'hui

Vous n'êtes pas encore membre ? Rejoignez-nous gratuitement dès aujourd'hui et contribuer en postant votre réponse ou question sur tous les forums disponibles

Inscription

Connectez-vous