Copier un onglet protégé dans Google Sheets sans autoriser les utilisateurs à le modifier

Avatar de l’utilisateur
Nes81

Membre tout neuf
Messages : 1
Inscription : 30 oct. 2024 08:09

Copier un onglet protégé dans Google Sheets sans autoriser les utilisateurs à le modifier

Message par Nes81 »

Bonjour à tous,

Je travaille sur un projet Google Sheets composé d’un fichier principal appelé "Trame" et de plusieurs fichiers utilisateur. Chaque utilisateur peut, via un menu personnalisé (UI) dans son propre classeur, déclencher un script pour dupliquer l’onglet "Trame" dans son fichier afin de le remplir. 

L’onglet "Trame" contient des protections pour éviter que les utilisateurs ne modifient les formules ou la mise en forme. Mon script actuel permet de dupliquer l'onglet et de copier les protections, mais il donne également des droits de modification aux utilisateurs, ce qui annule l'effet des protections.

J’ai tenté de déployer le script en tant qu’application web, avec exécution en tant que propriétaire et accès à "toute personne ayant le lien". Malheureusement, je ne maitrise pas suffisamment cet outil pour arriver à mes fins.

Avez une suggestion pour que les utilisateurs puissent déclencher la copie de l’onglet "Trame" dans leur propre fichier tout en conservant les protections initiales, sans qu’ils aient les droits de modification.

Merci d'avance pour votre aide.
 
Avatar de l’utilisateur
NC_Quentin

Coach Numericoach
Invétéré
Messages : 36
Inscription : 10 oct. 2022 09:06
A remercié : 1 fois
Remercié : 12 fois

Re: Copier un onglet protégé dans Google Sheets sans autoriser les utilisateurs à le modifier

Message par NC_Quentin »

Bonjour !

C’est effectivement un peu compliqué : il faut appeler le script déployé via UrlFetchApp, et le point d’entrée sera alors doGet() ou doPost(), en utilisant l’objet passé automatiquement par un tel appel pour faire le traitement sur la feuille voulue. Le mieux est de séparer les deux choses, et d’avoir la partie webapp dans un script standalone.

En un peu plus clair :
- On crée un script standalone
- Dedans, on crée une fonction doGet() ou doPost() qui prend un objet de requête, comme expliqué sur cette page.
- On utilise les paramètres de notre objet de requête pour appeler correctement notre fonction de copie de trame
- On déploie le tout en tant que webapp, avec "en tant que moi" pour toute personne du domaine / ayant le lien (en fonction de la sécurité de la chose)
- Dans le script lié à notre Sheet, on change la fonction de copie pour qu’elle appelle via UrlFetchApp() la webapp

C’est loin d’être trivial, vu que cela met en jeu les requêtes, mais avec la documentation Apps Script et un peu d’essais ça se fait bien !
Répondre

Rejoignez la discussion 💬

Vous devez être enregistré pour participer à la discussion et échanger avec les différents membres

Inscrivez-vous dès aujourd'hui

Vous n'êtes pas encore membre ? Rejoignez-nous gratuitement dès aujourd'hui et contribuer en postant votre réponse ou question sur tous les forums disponibles

Inscription

Connectez-vous