Sauvegarde Lien Drive

Bonjour j'ai

image

créé une application par Appsheet et les personnes rentrent leur heures de présence

Cela me crée un "contrat" sur Sheet et sur appscript j'envoie automatiquement par un script leur contrat

Voici le Script

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

  // variables
  const doc = SpreadsheetApp.getActive();
  const docID = '1Xwhn7zQWKev5IzX2R5FgFcMdoJzAWCNZYMri3rGfQzc';
  const feuilleID = '663218714';
  var email = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Contrat').getRange('A58').getValue()
  const dossier = DriveApp.getFolderById('1Xwhn7zQWKev5IzX2R5FgFcMdoJzAWCNZYMri3rGfQzc');
  const d = Utilities.formatDate(new Date(), "GMT+1", "yyyyMMdd")
  const fichier = 'Contrat' + "_" + d + ".pdf"
  const objet = 'Votre Contrat';
  const corps = "Veuillez trouver ci joint Votre Contrat";

  // 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=true' +                        // 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,
name : "Votre Contrat",
      cc : 'je cache les contacts lol',
      attachments: [{
            fileName: fichier,
            content: reponse.getBytes(),
            mimeType: "application/pdf"
                    }]
    });
}

Maintenant je souhaiterai aller plus loin... mais surtout ajouter un lien de téléchargement de leur contrat dans sheet

Je me doute qu'il faut créer une sauvegarde et faire un renvoie de cette sauvegarde du drive sur le sheet

Je souhaiterais que comme sur cette capture de video ca me permette de télécharger leur contrat

image

Merci de votre Aide

Bonjour,

Il vous faut trouver l'ID du dossier Google Drive où vous souhaitez les stocker

Puis vous pouvez ajouter le code suivant :

   var token = ScriptApp.getOAuthToken();
  var docurl = UrlFetchApp.fetch(url, { headers: { 'Authorization': 'Bearer ' +  token } });
 var pdf = docurl.getAs('application/pdf').setName(fichier);
  var file = DriveApp.createFile(pdf);
  var folder = DriveApp.getFolderById("17LmzDRdzPpH3zt_4rufGLnGXbBWbQNo5");/* Important ! > Ici on doit mettre l'adresse du dossier drive où on veut sauvegarder le PDF, allez dans votre dossier et dans la barre d'URL en haut copier le code qui ressemble à ça : 0AGuVhN09TP00Uk9PVA */
  var finalFile = file.moveTo(folder);
  var docUrl = finalFile.getUrl();

La variable docURL contient la nouvelle URL de votre fichier, vous pouvez ensuite l'inserer dans votre fichier.

Merci pour votre réponse

J'ai insérer le code mais j'ai une erreur

ReferenceError: Cannot access 'url' before initialization

Pourriez vous me guider?

Merci milles fois

Bonjour,

Pouvez-vous noter votre code complet ?

Bien Sur

Merci a vous

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

  // variables
  const doc = SpreadsheetApp.getActive();
  const docID = '1Xwhn7zQWKev5IzX2R5FgFcMdoJzAWCNZYMri3rGfQzc';
  const feuilleID = '663218714';
  var email = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Contrat').getRange('A58').getValue()
  const dossier = DriveApp.getFolderById('1Xwhn7zQWKev5IzX2R5FgFcMdoJzAWCNZYMri3rGfQzc');
  const d = Utilities.formatDate(new Date(), "GMT+1", "yyyyMMdd")
  const fichier = 'Contrat' + "_" + d + ".pdf"
  const objet = 'Votre Contrat';
  const corps = "Veuillez trouver ci joint Votre Contrat";

  // 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=true' +                        // 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,
name : "Votre Contrat",
      cc : 'academie.ic.lyon@gmail.com',
      attachments: [{
            fileName: fichier,
            content: reponse.getBytes(),
            mimeType: "application/pdf"
                    }]
    });
}

Bonjour,

J'ai fais le test de mon côté, j'ai mis dans la variable docID l'iD du fichier sheet.

J'ai changé la ligne : const feuilleID = '663218714'; par const feuilleID = doc.getSheetId();

J'ai bien mis un ID de dossier dans la variable dossier

J'ai retiré le mail en cc

Tout semble fonctionner, le mail est bien envoyé avec la PJ.

Merci Mais pour cette fonction oui cela fonctionne

Ce que je souhaiterai c'est que mette un lien pour que je n'ai qu'a le télécharger depuis une deuxième page

image

Comme cet exemple

Merci

En Complement de la fonction déjà en place

Bonjour,

Vous pouvez faire une nouvelle variable qui correspond au lien :

 const lienUrl = 'https://docs.google.com/spreadsheets/d/' + docID

Par contre, comment savoir quel url correspond à qui dans votre tableau ?

Merci

Effectivement

Mais chaque contrats est sauvegarder dans mon drive par un numéro

image

Donc comment mettre en Colonne Q

image

Ce lien sans etre obligé de le faire a chaque fois manuellement mais plutot de facon automatique

MerCI Milles fois

Rechercher des sujets similaires à "sauvegarde lien drive"