UTILISER ET PERSONNALISER UN MODÈLE SOUS GOOGLE SHEETS
Le but est de créer un modèle (de lettre, facture, devis, etc.) et ensuite de le personnaliser avant de le mettre à disposition (pdf, email).
Vous créez un onglet MODELE dont voici un exemple
Vous créez ensuite un onglet DICTIONNAIRE reprenant les [TERMES] employés (encadrés de [])
Les valeurs peuvent être issues d'une recherche dans une base de données selon un menu déroulant par exemple.
Le script suivant effectuera une copie du modèle en remplaçant les termes employés par les données du dictionnaire.
function onOpen() {
SpreadsheetApp.getUi().createMenu('⇩ M E N U ⇩')
.addItem('👉 Copier le modèle et mettre à jour', 'editer')
.addToUi();
}
function editer() {
var ss = SpreadsheetApp.getActiveSpreadsheet()
var mot = {}
var dico = ss.getSheetByName('DICTIONNAIRE').getDataRange()
dico.getDisplayValues().slice(1).forEach(x => mot[x[0]] = x[1])
var f = ss.getSheetByName('COPIE')
if (f != null) { ss.deleteSheet(f) }
var f = ss.insertSheet('COPIE')
var rng = ss.getSheetByName('MODELE').getDataRange()
rng.copyTo(f.getRange("A1"), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false)
rng.copyTo(f.getRange("A1"), SpreadsheetApp.CopyPasteType.PASTE_COLUMN_WIDTHS, false)
SpreadsheetApp.flush()
const requests = Object.entries(mot).map(([k, v]) => ({
findReplace: {
find: k.toString(), replacement: v.toString(), matchEntireCell: false, sheetId: f.getSheetId(),
},
}));
Sheets.Spreadsheets.batchUpdate({ requests: requests }, ss.getId());
}
Il est nécessaire d'activer le service Google Sheets API dans l'éditeur de script.
Résultat dans l'onglet COPIE
Commentaires
Enregistrer un commentaire