Evolution du script pour tenir compte des cas où il n'y aurait pas de données
function onOpen() {
SpreadsheetApp.getUi().createMenu('⇩ M E N U ⇩')
.addItem('👉 Générer/Mettre à jour les fichiers de lecture', 'maj')
.addToUi();
}
function maj(){
var ids = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('liste') // critere en A et id en B
var sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('mySheet') // critere en B
var headers = sh.getRange(1, 1, 1, sh.getLastColumn()).getValues()
ids.getDataRange().getValues().forEach((rng,row) => {
if (row>0){
var data = sh.getRange(2, 1, sh.getLastRow()-1, sh.getLastColumn()).getDisplayValues().filter(e => e[1] == rng[0]);
var dest = SpreadsheetApp.openById(rng[1]).getSheets()[0]
dest.getDataRange().clear()
dest.getRange(1,1,1,headers[0].length).setValues(headers)
if (data.length>0){
dest.getRange(2,1,data.length,data[0].length).setValues(data)
}
else {
Browser.msgBox('Pas de données pour ' + rng[0] + '. Les données ont été effacées !')
}
}
});
Browser.msgBox('Fichiers mis à jour !')
}
Rappel :
- mySheet : feuille recevant les données à dupliquer selon la valeur (critère) en colonne B
- liste : feuille avec
- critère en colonne A
- id du fichier recevant les seules données relatives à A en colonne B
le nom des fichiers est quelconque et n'est pas pris en charge ici ... il est juste nécessaire d'avoir créé au préalable un fichier partage avec la seule personne à qui il est destiné (en lecture seule et sans copie possible) et d'avoir indique l'id du fichier en regarde du critère dans l'onglet liste