Script pour envoyer par mail des feuilles non actives d'un classeur sheet

Bonjour,

J'ai un script pour envoyer la feuille active d'un classeur sheet à une liste d'adresse

function SendaMailOK(){

var DateName1 = SpreadsheetApp.getActiveSheet( ).getRange("B4").getValue();
var newdate = new Date(SpreadsheetApp.getActiveSheet( ).getRange("B4").getValue());
var d = Utilities.formatDate(newdate, Session.getScriptTimeZone(), "dd-MM-yyyy");
var f = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Adresses Mail');

//Send active sheet as email attachment

var ss = SpreadsheetApp.getActiveSpreadsheet()
var ssID = ss.getId();
var sheetgId = ss.getActiveSheet().getSheetId();
var sheetName = ss.getSheetName();

var token = ScriptApp.getOAuthToken();

var url = "https://docs.google.com/spreadsheets/d/"+ssID+"/export?" + "format=xlsx" +  "&gid="+sheetgId+ "&portrait=false" + "&exportFormat=xlsx";

var result = UrlFetchApp.fetch(url, {
headers: {
  'Authorization': 'Bearer ' +  token
}
});

var contents = result.getContent();

var subject = "Rapport du " + d;
var body = "Bonjour, \n\nCi-joint le rapport, \n \nCdlt";

var n=f.getLastRow();
for (var i = 1; i < n+1 ; i++ ) {
var emailAddress = f.getRange(i,1).getValue();
MailApp.sendEmail(emailAddress,subject ,body, {attachments:[{fileName:sheetName+".xlsx", content:contents, mimeType:"application//xlsx"}]});
}
};

Après modification de mon fichier, j'ai besoin d'envoyer 2 feuilles du classeur en pièces jointes et non plus la feuille active.

Problème, je n'arrive pas à adapter le script.

Merci pour votre aide.

Bonjour,

pas facile de travailler avec un script non indenté !

il faut que tu fasses 2 fois le parcours de transformer lesdites feuilles en fichiers excel comme suit

  var ss = SpreadsheetApp.getActiveSpreadsheet()
  var ssID = ss.getId();
  var token = ScriptApp.getOAuthToken();

  var sheetgId = ss.getSheetByName('mySheet1').getSheetId();
  var sheetName = ss.getSheetName();
  var url = "https://docs.google.com/spreadsheets/d/"+ssID+"/export?" + "format=xlsx" +  "&gid="+sheetgId+ "&portrait=false" + "&exportFormat=xlsx";
  var result = UrlFetchApp.fetch(url, {
    headers: {
      'Authorization': 'Bearer ' +  token
    }
  });
  var contents1 = result.getContent();

  var sheetgId = ss.getSheetByName('mySheet2').getSheetId();
  var sheetName = ss.getSheetName();
  var url = "https://docs.google.com/spreadsheets/d/"+ssID+"/export?" + "format=xlsx" +  "&gid="+sheetgId+ "&portrait=false" + "&exportFormat=xlsx";
  var result = UrlFetchApp.fetch(url, {
    headers: {
      'Authorization': 'Bearer ' +  token
    }
  });
  var contents2 = result.getContent();

ce qui amène à partir des feuilles mySheet1 et mySheet2 à obtenir contents1 et contents2

et qu'en final tu joignes les 2 dans l'envoi

  MailApp.sendEmail(emailAddress,
    subject ,
    body, 
    {attachments:[
      {fileName:sheetName+".xlsx", content:contents1, mimeType:"application//xlsx"},
      {fileName:sheetName+".xlsx", content:contents2, mimeType:"application//xlsx"}
    ]}
  );

@ Micke

pour mettre en forme (indenter) le code du document faire Maj - Alt - F

ou F1 et rechercher mettre en forme le document ou la sélection

Bonjour,

pour mettre en forme (indenter) le code du document faire Maj - Alt - F

super astuce ! va falloir que je m'en souvienne

@lemicmic,

la solution te convient-elle ? as-tu besoin d'une aide ?

Bonsoir,

Désolé, je n'avais pas eu le temps de regarder !

Ca marche parfaitement.....juste un petit souci, les 2 feuilles envoyées en pièces jointes se nomment normalement Feuille_1 et Feuille_2 mais là le nom des 2 pièces jointes reprend le nom de la feuille active ( Data pour les 2 feuilles du coup) à partir de laquelle le script est exécuté.

Anecdotiquement, je n'ai pas saisi à quel moment utiliser Maj - Alt - F pour indenter le code !

Merci pour votre implication

Ca marche parfaitement.....juste un petit souci, les 2 feuilles envoyées en pièces jointes se nomment normalement Feuille_1 et Feuille_2 mais là le nom des 2 pièces jointes reprend le nom de la feuille active ( Data pour les 2 feuilles du coup) à partir de laquelle le script est exécuté.

dans ce cas, il faut modifier ici

  MailApp.sendEmail(emailAddress,
    subject ,
    body, 
    {attachments:[
      {fileName:"mySheet1.xlsx", content:contents1, mimeType:"application//xlsx"},
      {fileName:"mySheet2.xlsx", content:contents2, mimeType:"application//xlsx"}
    ]}
  );

reprend les noms mySheet1 et mySheet2 que tu as mis plus haut dans le script

Nickel !!!

Ca fonctionne parfaitement.

Merci pour votre aide

Rechercher des sujets similaires à "script envoyer mail feuilles actives classeur sheet"