Envoyer un mail automatiquement

Bonjour

Comment envoyer un message automatique à une date prévue et que le message reprenne certaines valeurs dans les cases du tableau.
J’ai bien vu des macros ici et là, mais j’avoue que c’est bien difficile pour moi. en écrivant ce message je m'aperçois que c'est encor plus difficile.
Il y a aussi des applis, mais laquelle choisir?...
Je joins un lien sheets
Je continue à chercher de mon côté

https://docs.google.com/spreadsheets/d/1SDs7YCOZepm8v5zwj22tXKecI6nmPQv66T_ytL5oNZ0/edit?usp=sharing

Hello

je t'ai demandé un accès au fichier

ok je regarde

le gros intérêt de google sheets est de pouvoir lancer une macro sur la feuille à une heure définie dans la journée sans que le tableur soit ouvert !

Voici ...

Dans ta feuille, Outils > macros > Enregistrer une macro que tu nommes envoiMail

Dans l'éditeur de macro, tu remplaces par ceci :

function envoiMail() {
  var f = SpreadsheetApp.getActive();
  var lastRow = f.getLastRow();
  var maintenant = new Date().getTime();
  var debut = new Date(maintenant + 86400000);
  var fin = new Date(maintenant + 2 * 86400000); 
  for (var ligne = 2 ; ligne <= lastRow ; ligne++){
    if (f.getRange('D' + ligne).getValue() >= debut && f.getRange('D' + ligne).getValue() < fin){
      var destinataires = f.getRange('N' + ligne).getValue() + ',' + f.getRange('O' + ligne).getValue();
      var objet = "Visite de l'établissement";
      var quand = Utilities.formatDate(f.getRange('D' + ligne).getValue(), "GMT+1", "dd/MM/yyyy");
      var texte = f.getRange('B' + ligne).getValue() + " et " + f.getRange('C' + ligne).getValue() + " passeront le " + quand + " à " + f.getRange('J' + ligne).getValue() + " au bâtiment " + f.getRange('K' + ligne).getValue() + " au " + f.getRange('L' + ligne).getValue() + " (plus texte de la raison du passage) ";
      //Browser.msgBox(texte);
      MailApp.sendEmail({to: destinataires, subject: objet, htmlBody: texte});
    }
  }
}

tu testes d'abord avec des mails bidon.

Il faudra que tu répondes à des questions sur la sécurité.

Si ok, tu retournes dans l'éditeur de macro, tu cliques sur l'horloge et tu choisis l'heure journalière d'activation de la macro.

bonjour

cela ne fonctionne pas du moins je ne reçois pas de mail aux adresse indique.

pour Gmail j’aie répondu au question de sécurité.

J'ai indiqué 15h à 16h

j'ai aussi essayais de comprendre le code certaine partie son facile d'autre (...)

merci pour ton aide

Pour savoir ce qui en va pas ...

  1. Avant de programmer le déclencheur (horloge), as-tu essayé d'exécuter ta fonction ?
  2. Si cela ne fonctionne toujours pas, exécute directement ceci
  3. function envoiMail() {
      var f = SpreadsheetApp.getActive();
      var lastRow = f.getLastRow();
      var maintenant = new Date().getTime();
      var debut = new Date(maintenant + 86400000);
      var fin = new Date(maintenant + 2 * 86400000); 
      for (var ligne = 2 ; ligne <= lastRow ; ligne++){
        if (f.getRange('D' + ligne).getValue() >= debut && f.getRange('D' + ligne).getValue() < fin){
          var destinataires = f.getRange('N' + ligne).getValue() + ',' + f.getRange('O' + ligne).getValue();
          var objet = "Visite de l'établissement";
          var quand = Utilities.formatDate(f.getRange('D' + ligne).getValue(), "GMT+1", "dd/MM/yyyy");
          var texte = f.getRange('B' + ligne).getValue() + " et " + f.getRange('C' + ligne).getValue() + " passeront le " + quand + " à " + f.getRange('J' + ligne).getValue() + " au bâtiment " + f.getRange('K' + ligne).getValue() + " au " + f.getRange('L' + ligne).getValue() + " (plus texte de la raison du passage) ";
          Browser.msgBox(texte);
          //MailApp.sendEmail({to: destinataires, subject: objet, htmlBody: texte});
        }
      }
    }

Je prends la main sur le fichier 2 minutes

Tu mets une date du 18 ou du 19 et tu veux envoyer 2 jours avant ! c'est du passé, nous sommes le 20 !

oui j'ai bien reçu le mail sur Gmail mais rien sur Outlook .
car il y a deux destinataire et le deuxième et le plus important. La macro a disparue la tu supprimer.

en tous cas merci pour ton aide

ben non c'est parti aux deux ! et la macro est toujours bien là !

bonjour

effectivement ça fonctionne sur les deux mails.

je suis en télétravail et j'ai accès a outlook de deux façons et une n'affiche pas le mail.

c'est parfait pour mois je te remercié beaucoup

je vais appliquer se code au tableau pour le quelle il est destiné.

pour être parfait il faudrait que je comprenne ce code de quelle langage s’agit t'il?

et encors une fois merci

Langage google script, issu ou a minima assez similaire à javascript.

Le plus difficile est de l'écrire, mais une fois écrit il se lit facilement !

Sheelson

Je t'ai envoyé un message privé.

merci

et je t'ai répondu

je pense avoir compris :

le script que tu a réalise était valable pour la version "pour essais"

je dois l’adapter fichier pour le quelle est prévus.

je vais essayer ça demain

il faut "raccorder" le script à ton ton fichier

si besoin ... recommence à zéro comme expliqué ici https://forum.excel-pratique.com/sheets/entrer-une-valeur-sans-supprimer-la-formule-148983#p918672

Bonjour

J’ai modifié la macro et je reçois ce message a une seul adresse mail.

Pascal et jean passeront le 25/11/2020 à Wed Nov 25 2020 03:00:00 GMT-0500 (heure normale de l’Est nord-américain) à THORIGNY_SUR_MARNE au collège C- Le moulin à vent (plus texte de la raison du passage)

Je ne voie pas pourquoi les deux colonnes sont indiquées dans la macro.

Le texte à Wed Nov 25 2020 03:00:00 GMT-0500 (heure normale de l’Est nord-américain) n’est pas vraiment digeste en suppriment

getValue(), "GMT+1", "dd/MM/yyyy"); cela le supprimera

De plus je peux le remplacer par getValue() + " et " + f.getRange('ligne ou j’indique l’heure de passage' + ligne)

je pourrait mais j'ai un peut peurs de tout foutre en l'air

merci

J'avais bien mis

Utilities.formatDate(f.getRange('D' + ligne).getValue(), "GMT+1", "dd/MM/yyyy");

pour éviter cette sortie étrange de l'heure.

.

Pour les 2 mails, cela fonctionnait, peux-tu me redonner ta macro ici ?

.

Pour l'heure de passage, il faut mettre

f.getRange('X' + ligne).getHours();

à tester

ou sinon

Utilities.formatDate(f.getRange('X' + ligne).getValue(), "GMT+1", "HH:mm");

X étant la colonne où se trouve l'information

voila

function envoiMailcollége() {
  var f = SpreadsheetApp.getActive();
  var lastRow = f.getLastRow();
  var maintenant = new Date().getTime();
  var debut = new Date(maintenant + 86400000);
  var fin = new Date(maintenant + 2 * 86400000); 
  for (var ligne = 2 ; ligne <= lastRow ; ligne++){
    if (f.getRange('J' + ligne).getValue() >= debut && f.getRange('J' + ligne).getValue() < fin){
      var destinataires = f.getRange('T' + ligne).getValue() + ',' + f.getRange('U' + ligne).getValue();
      var objet = "Visite de votre collège1";
      var quand = Utilities.formatDate(f.getRange('J' + ligne).getValue(), "GMT+1", "dd/MM/yyyy");
      var texte = f.getRange('G' + ligne).getValue() + " et " + f.getRange('H' + ligne).getValue() + " passeront le " + quand + " à " + f.getRange('J' + ligne).getValue() + " à" + f.getRange('P' + ligne).getValue() + " au collège " + f.getRange('Q' + ligne).getValue() + " (plus texte de la raison du passage) ";
      //Browser.msgBox(texte);
      MailApp.sendEmail({to: destinataires, subject: objet, htmlBody: texte});
    }
  }
}

function myFunction() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('G1').activate();
};
Rechercher des sujets similaires à "envoyer mail automatiquement"