Adaptation script

Bonjour,

J'aurais besoin de votre aide ( je suis débutant) sur un script qui fonctionne mais que j'ai besoin d adapter

function envoiCopieFeuillePDF() {
  DocumentApp.getActiveDocument();
  DriveApp.getFiles();

  // variables
  const doc = SpreadsheetApp.getActive();
  const docID = '________mettre_ici_l_ID___du___fichier_____________';
  const feuilleID = '__ID_feuille__';
  const email = '___email_destinataire____;
  const dossier = DriveApp.getFolderById('__________ID_du_dossier______________');
  const d = Utilities.formatDate(new Date(), "GMT+1", "yyyyMMdd")
  const fichier = '____nom___du___fichier____suivi_ici_de_sa_date____________' + "_" + d + ".pdf"
  const objet = 'Test pdf';
  const corps = "Veuillez trouver ci-joint ...";

  // 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));
}  

question 1 :

sur cette ligne

const fichier = '____nom___du___fichier____suivi_ici_de_sa_date____________' + "_" + d + ".pdf"

comment faire pour que le nom du fichier soit

"nom de la cellule Q6" _demande de reservation_nom de la cellule K7 + date

question 2 :

lors de la generation du document je ne voudrais pas que l integralité de ma feuille s' imprimer ( elle comporte 12 pages ) mais que seule les pages 1, 2 et 3 s imprime dans le PDF

Merci infiniment de votre aide

une petite aide svp ?

Merci

Bonjour,

Pour ta première question, remplace dans ton code :

  // variables
  const doc = SpreadsheetApp.getActive();
  const docID = '________mettre_ici_l_ID___du___fichier_____________';
  const feuilleID = '__ID_feuille__';
  const email = '___email_destinataire____';
  const dossier = DriveApp.getFolderById('__________ID_du_dossier______________');
  const d = Utilities.formatDate(new Date(), "GMT+1", "yyyyMMdd")
  const fichier = '____nom___du___fichier____suivi_ici_de_sa_date____________' + "_" + d + ".pdf"
  const objet = 'Test pdf';
  const corps = "Veuillez trouver ci-joint ...";

Par :

  // variables
  const docID = '________mettre_ici_l_ID___du___fichier_____________';
  const doc = SpreadsheetApp.openById(docID);
  const feuilleID = 'ID_feuille_AU_FORMAT_NUMERIQUE'; // => donc par exemple 123456 et non '123456'
  const feuille = doc.getSheets().reduce((a, v) => v.getSheetId() === feuilleID ? v : a);
  const email = '___email_destinataire____';
  const dossier = DriveApp.getFolderById('__________ID_du_dossier______________');
  const d = Utilities.formatDate(new Date(), "GMT+1", "yyyyMMdd")
  const fichier = feuille.getRange('Q6').getValue() + '_' + feuille.getRange('K7').getValue() + "_" + d + ".pdf"
  const objet = 'Test pdf';
  const corps = "Veuillez trouver ci-joint ...";

Pour ta seconde question, une solution serait peut-être de dédier une feuille aux exports PDF (une feuille qui afficherait seulement les 3 pages de données utiles).

Cordialement,

Bonjour Sebastien

Merci beaucoup d avoir répondu

toutefois j'ai cette erreur

" 18:27:18ErreurReferenceError: feuille is not definedenvoiCopieFeuillePDF@ macros.gs:11"

il est indiqué ceci

const feuilleID = 'ID_feuille_AU_FORMAT_NUMERIQUE'; // => donc par exemple 123456 et non '123456'

ma feuilleID est 1969076758

que je note

const feuilleID = '1969076758';

ou

const feuilleID = 1969076758;

l erreur se produit ?

je comprend pas désolé je suis novice complet et je découvre

et y a t il une fonction comme celle ci

'&fitw=false' +                        // pas d'ajustement en largeur

mais pour faire un ajustement en hauteur de la page ?

Merci beaucoup

Comme ça :

ou

const feuilleID = 1969076758;

Pour ton bug, vérifie si tu n'as aucune erreur dans le code (notamment l'ID du document et celui de la feuille).

De mon côté j'avais testé le bout de code fourni et j'avais bien obtenu le nom de fichier correct

alors ca fonctionne si je mets

const fichier = 'demande de reservation'+ ".pdf"

par contre si je mets

const fichier = feuille.getRange('Q6').getValue() + 'demande reservation test2' + feuille.getRange('K7').getValue() + "_" + d + ".pdf"

ca fait ca

image

voici ma page avec les cases K7 et Q6

image

Cette erreur signifie que la feuille n'a pas été récupérée et donc tu ne peux pas accéder aux cellules Q6 et K7.
Et puisque feuille n'est pas définie, ça va déclencher l'erreur à la ligne const fichier puisque tu vas tenter d'obtenir des données de cette feuille, mais l'erreur n'est pas sur cette ligne, elle est avant cette ligne (d'où ma remarque par rapport aux IDs à vérifier).

Bonsoir Sebastien,

désolé de répondre que maintenant, mais des imprévus m ont éloigné de l ordi

j'ai beau regarder

ma feuille a le bon numero

les cellules ont bien les éléments

Je comprends pas le bug

Essaie avec ces IDs pour tester avec un autre document :

1RwHe88l22jD1fzn1DQLfeyYCgofBWV9MBGSSjvPaFyY
1695694195

voilà ce que j'ai

function envoiCopieFeuillePDF() {
  DocumentApp.getActiveDocument();
  DriveApp.getFiles();

  // variables
  const doc = SpreadsheetApp.getActive();
  const docID = '1RwHe88l22jD1fzn1DQLfeyYCgofBWV9MBGSSjvPaFyY';
  const feuilleID = '1695694195';
  const email = 'dupont@duont.fr';
  const dossier = DriveApp.getFolderById('1hVoMG6CWeHIknhj0h5pHD9-n_HFFwP_5');
  const d = Utilities.formatDate(new Date(), "GMT+1", "yyyyMMdd")
  const fichier = feuille.getRange('Q6').getValue() + 'demande reservation test2' + feuille.getRange('K7').getValue() + "_" + d + ".pdf"
  const objet = 'Test pdf';
  const corps = "Veuillez trouver ci-joint ...";

  // 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));
}  

ca bug

20:12:28AvisExécution démarrée

20:12:29ErreurReferenceError: feuille is not definedenvoiCopieFeuillePDF@ Code.gs:12

C'est normal que tu aies une erreur à propos de feuille puisque tu n'as pas mis la ligne const feuille = ... , et ce n'est pas le seul problème ...

Commence par remplacer ENTIEREMENT le bloc de code (comme indiqué) par celui que j'avais mis du temps à écrire pour toi sinon effectivement ça ne fonctionnera pas.

excuse moi infiniment avec tout ca je me suis emmele les pinceaux

ca fonctionne

UN GRAND MERCI et toutes mes excuses encore pour mes merdouilles

Rechercher des sujets similaires à "adaptation script"