Envoyer par Email une feuille d'un classeur google Sheet
Publié : 03 févr. 2023 15:45
Bonjour,
Malgré mes recherches, j'ai toujours une erreur dans mon code.
J'aimerai envoyer la page active qui est nommée : "Note de frais" à l'adresse de l'Email de l'intéressé qui elle est située sur cette même feuille en cellule "F7".
mon code:
EnvoiMail
@Email.gs:12
Nota: pour l'envoi, je pense insérer un bouton en lieu et place de la valeur de la cellule(7,6)
Cordialement
Piga25
Edit:
avec ce code cela fonctionne :
function envoiPDF() {
DocumentApp.getActiveDocument();
DriveApp.getFiles();
// variables
const doc = SpreadsheetApp.getActive();
const docID = //ici mettre l'ID du fichier ex: '1injaUvfQu1CSvmmfnxxxxxxxxg7IAmvEUhOfQIhdxxx';
const feuilleID = // ici mettre l'ID de la feuille ex: '1108000000';
//const email = 'Parametre!B5';
var email = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Note de frais').getRange('E7').getValue()
//const dossier = DriveApp.getFolderById('Facture18');
const d = Utilities.formatDate(new Date(), "GMT+1", "yyyyMMdd")
const fichier = 'Facture' + "_" + d + ".pdf"
const objet = 'Frais de déplacement ';
const corps = "Bonjour,";
// Création du fichier pdf
const url = 'https://docs.google.com/spreadsheets/d/' + docID + '/export?';
const exportOptions =
'exportFormat=pdf&format=pdf' +
//'&size=A4' +
//'&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;
var params = {method:"GET",headers:{"authorization":"Bearer "+ ScriptApp.getOAuthToken()}};
var reponse = UrlFetchApp.fetch(url + exportOptions, params).getBlob();
// Envoi email avec fichier attaché
GmailApp.sendEmail(email, objet, corps, {
htmlBody: corps,
attachments: [{
fileName: fichier,
content: reponse.getBytes(),
mimeType: "application/pdf"
}]
});
// Sauvegarde du fichier.
//dossier.createFile(reponse.setName(fichier));
}
Malgré mes recherches, j'ai toujours une erreur dans mon code.
J'aimerai envoyer la page active qui est nommée : "Note de frais" à l'adresse de l'Email de l'intéressé qui elle est située sur cette même feuille en cellule "F7".
mon code:
J'ai ceci comme message d'erreur : Exception: The parameters (number,String,String) don't match the method signature for MailApp.sendEmail.function EnvoiMail() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Note de frais');
{
var range = sheet.getRange(7, 5); // adresse Email du destinataire est dans la cellule "E7"
var data = range.getValues();
var toEmail = data
var subject = "Imprimé CERFA";
var message = "Bonjour ";
message += "Voici le PDF du CERFA " ;
if(toEmail!=''){
MailApp.sendEmail(toEmail,subject,message);}
sheet.getRange(7,6).setValue("Oui");
SpreadsheetApp.flush();
}
}
EnvoiMail
@Email.gs:12
Nota: pour l'envoi, je pense insérer un bouton en lieu et place de la valeur de la cellule(7,6)
Cordialement
Piga25
Edit:
avec ce code cela fonctionne :
function envoiPDF() {
DocumentApp.getActiveDocument();
DriveApp.getFiles();
// variables
const doc = SpreadsheetApp.getActive();
const docID = //ici mettre l'ID du fichier ex: '1injaUvfQu1CSvmmfnxxxxxxxxg7IAmvEUhOfQIhdxxx';
const feuilleID = // ici mettre l'ID de la feuille ex: '1108000000';
//const email = 'Parametre!B5';
var email = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Note de frais').getRange('E7').getValue()
//const dossier = DriveApp.getFolderById('Facture18');
const d = Utilities.formatDate(new Date(), "GMT+1", "yyyyMMdd")
const fichier = 'Facture' + "_" + d + ".pdf"
const objet = 'Frais de déplacement ';
const corps = "Bonjour,";
// Création du fichier pdf
const url = 'https://docs.google.com/spreadsheets/d/' + docID + '/export?';
const exportOptions =
'exportFormat=pdf&format=pdf' +
//'&size=A4' +
//'&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;
var params = {method:"GET",headers:{"authorization":"Bearer "+ ScriptApp.getOAuthToken()}};
var reponse = UrlFetchApp.fetch(url + exportOptions, params).getBlob();
// Envoi email avec fichier attaché
GmailApp.sendEmail(email, objet, corps, {
htmlBody: corps,
attachments: [{
fileName: fichier,
content: reponse.getBytes(),
mimeType: "application/pdf"
}]
});
// Sauvegarde du fichier.
//dossier.createFile(reponse.setName(fichier));
}