Partage de tableau et masquer APPSCRIPT
Bonjour,
Je souhaite partage un tableau à un collaborateur mais je ne souhaite pas lui partager le codage que j'ai fait sur APPSCRIPT.
Mon idée première était de créer un second tableau qui reprend les informations du premier que je garde en privée, c'est fait mais il me manque une seule option que je ne sais pas déporter.
Mon tableau transforme les données que l'on renseigne en un fichier JSON bien structuré, et pour lancer la création du JSON je dois cliquer sur un bouton qui lance un script. Comment puis-je lancer un script sur mon tableau privé, depuis le tableau partagé?
J'espère avoir été clair et merci par avance pour toute l'aide que vous m'apporterez! :)
J'ai fait une première avancé mais ça ne marche toujours pas par contre je suis prêt du but!
function onEdit(e) {
var sheet = e.source.getActiveSheet();
var range = e.range;
if (sheet.getName() === "Feuille a surveiller") {
if (range.getA1Notation() === "F2") {
convertirFeuilleEnJSON();
}
}
}
Ca fonctionne si je modifie la cellule F2 depuis mon document mais si je le fais depuis la feuille déportée alors le déclencheur ne fonctionne pas :(
Bonjour,
Je pense que passer par la création d'une bibliothèque serait plus simple pour utiliser du script sans le laisser lisible par vos utilisateurs.
Si toutefois vous souhaitez continuer sur le chemin du JSON, voici un script que j'ai de coté pour exporter/importer du JSON :
function exportToJson() {
var sheet = SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/1tAZdLixNPSh_OesX2yAEi8jTYpa-ikFZJxEzszR8/').getSheetByName('RECEPTION'); // fichier & feuille origine
var range = sheet.getDataRange();
var values = range.getValues();
var jsonData = [];
for (i=0;i<values.length;i++) {
var row = values[i];
var rowData = {};
for (j=0;j<row.length;j++) {
var header = values[1][j]; // entête de la feuille
rowData[header] = row[j];}
jsonData.push(rowData);}
var jsonString = JSON.stringify(jsonData, null, 2); // édition du JSON
var folder = DriveApp.getFolderById('129U1z8WatRTTDDi2OLBRXPssdEEPb8mTNv'); // dossier cible
folder.createFile('BDD_RECEP_EXPE_2023.json', jsonString, MimeType.PLAIN_TEXT); // SAUVEGARDE
}
function importFromJson() {
var fileId = '1WYCnkwCYA-YnsdsfXwer-33dffdsdiNkf_k4Z'; // ID du fichier (clic droit > partager puis copier l'ID dans l'URL)
var file = DriveApp.getFileById(fileId);
var jsonString = file.getBlob().getDataAsString();
var jsonData = JSON.parse(jsonString); // conversion JSON > STRING
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // dans ce cas active sheet mais sheet peut être définie
var dataRows = [];
sheet.clear(); // au cas où
var headers = Object.keys(jsonData[0]); // en-tête du fichier JSON
sheet.appendRow(headers); // on ajoutes les en-têtes à la feuille
for (var i = 0; i < jsonData.length; i++) { // stockage des data dans une variable
var row = [];
for (var j = 0; j < headers.length; j++) {
row.push(jsonData[i][headers[j]]);}
dataRows.push(row);
}
sheet.getRange(2, 1, dataRows.length, dataRows[0].length).setValues(dataRows); // insertion de la variable data dans la feuille
}