Envoyer par Email une feuille d'un classeur google Sheet Le sujet est résolu

Thierry

Coach Numericoach
Invétéré
Messages : 132
Inscription : 11 sept. 2022 20:27
A remercié : 3 fois
Remercié : 23 fois

Re: Envoyer par Email une feuille d'un classeur google Sheet

Message par Thierry »

merci de corriger le problème => Décidemment va falloir se calmer et mettre la forme sur ce forum.
Y a vraiment un problème de ton !
Même à chat gpt je parle plus poliment 😁
Avatar de l’utilisateur
Omar Lean

Membre tout neuf
Messages : 1
Inscription : 24 juil. 2024 16:37

Re: Envoyer par Email une feuille d'un classeur google Sheet

Message par Omar Lean »

Bonjour, 
J'ai un script qui a le mem fonctionnement.
Par contre, je voudrais que le script s'exécute avec une autre boite email mais pas la mienne.
Comment je dois faire ?

Merci d'avance. 
Avatar de l’utilisateur
NC_Quentin

Coach Numericoach
Invétéré
Messages : 36
Inscription : 10 oct. 2022 09:06
A remercié : 1 fois
Remercié : 12 fois

Re: Envoyer par Email une feuille d'un classeur google Sheet

Message par NC_Quentin »

Bonjour,

Désolé pour la réponse plus que tardive !

De manière générale, les scripts sont exécutés avec le compte de la personne qui l’exécute, et donc avec son adresse e-mail (jusqu’ici, c’est logique). Si vous voulez que le mail soit envoyé depuis une autre adresse, deux solutions :

- La plus compliquée : mettre en place un compte de service avec une délégation de domaine, puis écrire un code complexe qui fait que vous vous connectez au compte de service pour que lui-même se connecte au compte voulu afin que ce compte envoie le mail.
- La plus simple : rajouter l’autre boîte email en tant qu’alias de votre email, puis changer le code d’envoi d’email en utilisant GmailApp.sendEmail() avec un objet contenant la propriété from et l’alias que vous venez d’établir. Ainsi, le mail sera envoyé via l’alias, qui s’avère être l’autre boîte mail !

Code : Tout sélectionner

function envoiPDF() {
  // /!\ Bien qu’un commentaire, cette ligne sert à forcer la détection automatique des autorisations par Apps Script lors de l’exécution du script.
  // En effet, pour que l’export PDF fonctionne, il faut que le script soit autorisé à lire les fichiers de votre Drive, chose qu’il ne détecte pas par défaut.
  // Bien qu’il soit possible de le faire à la main, il est plus simple de le faire ainsi, avec une ligne en commentaire comme ci-dessous :
  // DriveApp.getFiles();

  // VARIABLES
  // À FAIRE : Mettre l'ID du Google Sheets à exporter, par exemple : "1injaUvfQu1CSvmmfn8YT0wLNjg7Ixxxxxxxxxxxxxxx"
  // L’ID est dans l’URL du fichier Google Sheets, après /d/
  const docID = "";

  // À FAIRE : Mettre l’ID de la feuille, qui se trouve dans l’URL du Google Sheets, derrière gid=
  const feuilleID = "";

  // À FAIRE : Mettre l’adresse email à laquelle envoyer le PDF
  const email = "";

   // À FAIRE : Mettre l’alias qui enverra le mail
   const alias = "";

  // L’objet du mail à envoyer.
  const objet = "Export PDF par Google Apps Script";

  // Le corps du mail à envoyer.
  const corps = "Ci-joint : le fichier PDF.";

  // Le nom de l’export PDF. Il faut bien inclure le .pdf !
  const nomFichierPDF = "Export.pdf"

  // À FAIRE : Mettre la région de cellules à exporter, en notation A1 (par exemple, "C2:O27")
  const range = "A1:B4";

  // Création du fichier pdf avec l’URL spéciale d’export
  const url = 'https://docs.google.com/spreadsheets/d/' + docID + '/export?';

  // Les options d’export, à rajouter au besoin. L’ordre n’a pas d’importance. Retirez les barres obliques (//) en début de ligne pour activer une option.
  const exportOptions =
    "exportFormat=pdf&format=pdf" +
    "&range=" + range +
    //"&size=A4" +                            // Taille de la feuille
    //"&portrait=true" +                      // orientation portrait, false pour paysage
    //"&fitw=false" +                         // pas d'ajustement en largeur
    //"&sheetnames=false&printtitle=false" +  // pas de nom ni de titre à l'impression
    //"&pagenumbers=false&gridlines=false" +  // pas de numérotation, pas de grille
    //"&fzr=false" +                          // frozen rows = pas de répétition de l'en-tête
    "&gid=" + feuilleID;

  // UrlFetchApp pour récupérer le résultat à l’URL que l’on construit avec l’URL de base et les options d’export définies juste au-dessus.
  const params = {
    headers: {
      'Authorization': 'Bearer ' + ScriptApp.getOAuthToken(),
    },
    muteHttpExceptions: true,
  }
  const reponse = UrlFetchApp.fetch(url + exportOptions, params);

  if (reponse.getResponseCode() !== 200) {
    console.log("Erreur dans l’appel à UrlFetchApp ! – " + reponse.getResponseCode());
    console.log(reponse.getContentText());
    console.log(reponse.getHeaders());
    return;
  }

  // Récupération du "blob" représentant notre fichier
  const blob = reponse.getBlob();

  // Envoi email avec fichier attaché
  GmailApp.sendEmail(email, objet, corps, {
    htmlBody: corps,
    from: alias,
    attachments: [{
      fileName: nomFichierPDF,
      content: blob.getBytes(),
      mimeType: "application/pdf"
    }]
  });
}
Cela devrait fonctionner correctement :)
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