Archivage d'une feuille et remplacement avec un template

Bonjour !

Voilà, j'ai créé une feuille de calcul pour récapituler les dépenses mensuelles au sein du foyer. On se base sur un template (qui est une autre feuille de calcul, qu'on nommera "template") que l'on copie et remplie tous les mois avec les montants des dépenses.

J'aimerais que tous les mois, à X date et Y heure, la feuille du mois actuel dûment remplie s'archive (soit en s'enregistrant dans le google drive lié en tant que pdf (mais je ne sais pas si cela est possible), soit simplement en se dupliquant (et que je pourrais enregistrer à la main par la suite). Suite à cela, j'aimerais que la feuille d'origine soit "écrasée" pour la remettre à son état d'origine (vide, à base du template).

Voilà, j'espère avoir été assez claire dans mes explications ^^
Dans l'attente de vos retours et au plaisir de vous lire !
Xeci

Bonjour,

J'ai adapté un Script trouvé sous Numeriblog by Thierry Vanoffe:

function onOpen() {

var ui = SpreadsheetApp.getUi();

var menu = ui.createMenu("Mes comptes");

menu.addItem("Sauvegarder le PDF","SavePDF");

menu.addToUi();

}

function SavePDF(){

// SÉLECTIONNER LA FEUILLE A SAUVEGARDER

var ss = SpreadsheetApp.getActiveSpreadsheet();

var sheet = ss.getActiveSheet();

//URL de SS ?

var ssUrl = ss.getUrl();

var sheetId= sheet.getSheetId();

var url = ssUrl.replace(/\/edit.*$/,'')

+ '/export?exportformat=pdf&format=pdf'

+ '&size=LETTER'

+ '&portrait=true'

+ '&fitw=true'

+ '&top_margin=0.50'

+ '&bottom_margin=0.50'

+ '&left_margin=0.50'

+ '&right_margin=0.50'

+ '&sheetnames=false'

+ '&printtitle=false'

+ '&pagenum=false'

+ '&gridlines=false'

+ '&fzr=FALSE'

+ '&gid='+sheetId;

// RÉCOLTER LES INFORMATIONS DANS LE SHEET POUR COMPOSER LE NOM DU DOCUMENT

var docId = sheet.getRange('B2').getValue();

//mise en forme de la date : mois-annee

// Concaténons le tout

var docName = "Comptes "+ docId;

// CRÉER LE PDF A PARTIR DE L'URL var token = ScriptApp.getOAuthToken();

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

var pdf = docurl.getAs('application/pdf').setName(docName);

var file = DriveApp.createFile(pdf);

var folder = DriveApp.getFolderById("XXXXXXXXXXXXXXXXXXXXXX");

var finalFile = file.moveTo(folder);

//RÉCUPÉRER LE LIEN

var docUrl = finalFile.getUrl();

//ajouter l'urL dans la GED.

var sheetGed = ss.getSheetByName('Feuille 1');

sheetGed.appendRow([new Date(),docId,docUrl,docName]);

// ANNONCER LA RÉUSSITE DE CRÉATION DU DOCUMENT

var ui = SpreadsheetApp.getUi();

ui.alert('La feuille a bien été sauvegardée dans le Drive sous le nom:\n\n'+ docName);

}

Il permet de copier ta feuille et de l'enregistrer en PDF dans ton Drive.

Il crée un menu nommé "Mes comptes", qui contient un sous-menu nommé "Sauvegarder le PDF".

Il suffit d'aller dans "Sauvegarder le PDF" pour que ta feuille soit sauvegardée dans ton Drive...

Mettre dans ta feuille le nom de la sauvegarde en B2 ou remplacer dans le script (var docId = sheet.getRange('B2').getValue(); mettre la cellule de ton choix à la place de B2).

Remplacer dans le script var sheetGed = ss.getSheetByName('Feuille 1'); "Feuille 1" par le nom de ta feuille.

Remplacer les XXXXX par l'ID du folder de ton drive: var folder = DriveApp.getFolderById("XXXXXXXXXXXXXXXXXXXXXX");

Tu peux ajouter un déclencheur pour que le script se lance tous les premiers du mois ou autre avec une plage horaire de ton choix...

Il est également possible de supprimer la feuille automatiquement, mais dans ton cas tu en as besoin pour faire les reports du mois précédent.

Pour faire les reports via un script, il faut un modèle de ta feuille, sinon on ne sait pas quoi reporter ni où...

Cordialement,

Fil.

Rechercher des sujets similaires à "archivage feuille remplacement template"