Envoyer par mail automatiquement plusieurs feuilles à plusieurs mails

Hello

Je sais que c'est un sujet récurrent mais comme les fichiers sheet sont en partage, on a difficilement accès aux scripts et je ne trouve pas de script adapté à mon besoin sur internet

Chaque matin, je renseigne une feuille "BASE"

J'ai dispatché cette BASE sur plusieurs feuilles qui se remplissent automatiquement.

Il faut que chaque feuille soit automatiquement envoyée par mail lorsque je clique sur un bouton (ou au pire que je lance le script manuellement)
Pour chaque feuille à envoyer, j'ai créer une liste des mails à associer au mail. La liste dépend en effet de chaque feuille.

Je ne sais pas si j'ai renseigné comme il faut ma liste de mail mais je peux la recréer en fonction du besoin du script

Quel script utiliser pour que chaque personne réceptionne une seule feuille du sheet avec en corps de mail un texte assez basique du style "Bonjour, Veuillez trouver ci-joint les départs du jour. Cordialement"

Si on ne peut pas envoyer une feuille seule mais uniquement tout le spreadscheet, je pourrai faire si besoin un sheet pou chaque liste de mail

De même comme le tableau à envoyer est assez petit, je ne me rends pas compte s'il est possible de copier coller le tableau dans le corps du mail afin que le destinataire n'ai même pas besoin d'ouvrir une pièce jointe et ait directement l'info dans le corps du mail

Demandez moi les droits d'accès au fichier si vous etes en mesure de m'aider

Cdt

https://docs.google.com/spreadsheets/d/1bEHHuLt__l0zWRQHVkYG4ifMD7XMOyPzxTVh7g_X140/edit#gid=0

Bonjour,

accès demandé !

on peut presque tout faire (sauf découper par sheet que je n'ai jamais fait mais cela doit être possible), dis nous quelle est la meilleure solution ... je pencherais dans un premier temps à envoyer le tableau dans le corps du mail (le plus confortable pour celui qui reçoit) ou la feuille jointe en pdf

ok, j'en ai pris une copie pour travailler avec mon email seulement

il vaudrait mettre systématiquement 2 lignes avec destinataires et copies, même si les copies restent vides

je regarde cela ce soir et demain matin

Bonjour,

j'ai mis BASE en majuscule dans le nom d'onglet comme dans la liste des mails

j'ai systématiquement mis une ligne pour les copies

voici le script ... avant de le mettre en place, règle les "sujets" et "contenu" du mail

function envoi(){
  var classeur = SpreadsheetApp.getActiveSpreadsheet();
  var feuille = classeur.getSheetByName('liste mail');
  for (var i=1;i<=feuille.getLastRow();i=i+2){
    var f = classeur.getSheetByName(feuille.getRange('A'+i).getValue());
    var destinataires = feuille.getRange('B'+i).getValue()
    var copies = feuille.getRange('B'+(i+1)).getValue()
    var objet = 'ici l\'objet du mail'
    var der = f.getLastRow()
    var corps = 'Bonjour,<br>Veuillez trouver ci-dessous ...'
    corps = corps + tableHTML(f.getRange("B7:D"+der).getValues())
    corps = corps + '<br>Salutations !'
    GmailApp.sendEmail(destinataires, objet, '', {
      cc: copies,
      htmlBody: corps}
    );
  }
}

function tableHTML(data){
  var tableformat = 'cellspacing="2" cellpadding="2" border="1" style="border-collapse:collapse;border:1px solid #ccc;text-align:center;'
  var htmltable = '<table ' + tableformat +' ">';
  for (row = 0; row<data.length; row++){
    htmltable += '<tr>';
    for (col = 0 ;col<data[row].length; col++){
      if (data[row][col] === "" || 0) {htmltable += '<td>' + ' ' + '</td>';} 
      else
        if(row==0 && col==2){htmltable += '<td>' + Utilities.formatDate(data[row][col], "GMT+1", "dd/MM/yyyy") + '</td>';}
        else{htmltable += '<td>' + data[row][col] + '</td>';}
      }
      htmltable += '</tr>';
    }
  htmltable += '</table>';
  return htmltable
}

Merci, je regarde ca en détail

Salut,

Ca marche super bien!

Petite question dans le corps du mail, les couleurs ne sont pas copiées. Il y a une ligne a ajouter dans le script ou c'est juste qu'il est seuleument possible de copier un tableau sans mis en forme?

je suis allé au plus simple ! j'ai zappé aussi les cellules fusionnées ...

c'est sans doute possible, mais va falloir que je réfléchisse ... (pas tout de suite, je mets cela en réserve)

Les couleurs c'est vraiment pas le plus important

Par contre je me rends compte que dans le mail que je reçois la date est avec 1 jour de moins.

Exemple quand j'envoi le mail de ce jour, les tableaux affichent le 19/04

Je ne comprends pas ton script pour corriger cela

Tu es bien en France ? en GMT+1 ?

Tout à fait.

Après dans le script, que je mette GMT, GMT+1 ou GMT-1, ca va afficher le 19/04

Pourquoi dans le script tu ne fais pas un simple copier coller du tableau en valeur?

essaie alors, je crains le pire ... supprime carrément ceci et fais un test !

if(row==0 && col==2){htmltable += '<td>' + Utilities.formatDate(data[row][col], "GMT+1", "dd/MM/yyyy") + '</td>';}

Si je n'enleve que cela, j'ai une erreur de syntaxe

Surement car il attend une donnée après le else

if (data[row][col] === "" || 0) {htmltable += '<td>' + ' ' + '</td>';} 
      else

      }

Et bien sur si j'enleve tout ca je n'ai pas de tableau.

En tout cas dans mon tableau si je met aujourd'hui() +1 dans mes cellules, j'ai la bonne date dans mon mail.

Enfin l'objectif est que celui qui crée le tableau s'y retrouve aussi ^^

ok, il faut que je reprenne le fichier

plus simplement dans ce cas, remplace

if(row==0 && col==2){htmltable += '<td>' + Utilities.formatDate(data[row][col], "GMT+1", "dd/MM/yyyy") + '</td>';}

par

if(row==0 && col==2){htmltable += '<td>' + data[row][col] + '</td>';}

Dans ce cas au lieu d'avoir la date 19/04/2021, j'ai ceci dans le mail

Tue Apr 20 2021 00:00:00 GMT+0200 (Central European Summer Time)

La date est bonne mais le format est illisible.

On est donc bien obligé d'inscrire un format dans le script

qu'est-ce qui est indiqué dans les paramètres régionaux ? Fichier > Paramètres de la feuille de calcul ...

je regarderai demain plus en détail, c'est curieux tout ceci !

L'écart est là : tu est en Tue Apr 20 2021 00:00:00 GMT+0200 et on sort en GMT+1. Les valeurs étant introduites à 0h00, alors en GMT+1 on change de jour.

Il faut mettre en adéquation les paramètres régionaux et le script. C'est parfaitement logique.

Ce qui est étrange est que je suis bien en GMT + 1

image

J'ai mis mes paramètres en GMT +0 et cette fois la date est bien la date du jour dans le mail.

Pas logique mais le plus important est que ca marche

j'avoue que quelque chose m'échappe ... j'ai une feuille en

image

et voici ce que je trouve

image

pfttt, va falloir creuser !

Rechercher des sujets similaires à "envoyer mail automatiquement feuilles mails"