Gestion multi-utilisateurs

Bonjour,

Est-il possible par script d'interdire plusieurs sessions sur un même sheet ?

J'ai plusieurs utilisateurs ayant des droits sur un sheet, mais je souhaite interdire la modification simultanée.

Est il possible par script, de savoir combien de sessions sont ouvertes sur ce Sheet ? Si >1 je pourrais avertir l'utilisateur qu'un autre utilisateur est en train de modifier.

Bonjour, j'ai trouvé ça, à tester.

"Oui, il est possible de créer un script Google Apps Script pour empêcher plusieurs sessions simultanées sur une feuille de calcul Google Sheets. Voici un exemple de script qui peut être utilisé à cette fin :"

function onOpen() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var lock = LockService.getScriptLock();

  if (!lock.tryLock(5000)) {
    // Si un verrouillage est déjà en cours, affiche un message d'avertissement et ferme la feuille de calcul
    ss.toast("Cette feuille de calcul est déjà ouverte dans une autre session. Veuillez fermer toutes les autres sessions avant de continuer.", "Session Dupliquée", -1);
    SpreadsheetApp.getActiveSpreadsheet().toast('This sheet is already open in another session. Please close all other sessions before continuing.', 'Duplicate Session', -1);
    SpreadsheetApp.getActiveSpreadsheet().toast('Esta hoja ya está abierta en otra sesión. Por favor, cierre todas las otras sesiones antes de continuar.', 'Sesión Duplicada', -1);
    ss.close();
  }
}

function onEdit() {
  // Fonction onEdit, vous pouvez ajouter des actions à exécuter lors de la modification de la feuille de calcul
}

Ce script comprend deux fonctions principales :

  1. onOpen(): Cette fonction est exécutée chaque fois que la feuille de calcul est ouverte. Elle essaie d'acquérir un verrou de script pendant 5 secondes. Si elle ne parvient pas à obtenir le verrou (ce qui signifie qu'une autre session est déjà en cours), elle affiche un message d'avertissement et ferme la feuille de calcul.
  2. onEdit(): Cette fonction peut être utilisée pour exécuter des actions lors de la modification de la feuille de calcul. Vous pouvez ajouter des actions supplémentaires en fonction de vos besoins.

Pour utiliser ce script, procédez comme suit :

  1. Dans Google Sheets, ouvrez la feuille de calcul sur laquelle vous souhaitez empêcher les sessions multiples.
  2. Allez dans le menu "Extensions" -> "Apps Script".
  3. Supprimez le code existant dans l'éditeur de script et remplacez-le par le code ci-dessus.
  4. Enregistrez le script en cliquant sur le bouton "Enregistrer" (icône de disquette) ou en utilisant le raccourci clavier "Ctrl + S".
  5. Fermez l'éditeur de script et revenez à votre feuille de calcul.

Maintenant, chaque fois que quelqu'un essaiera d'ouvrir la feuille de calcul alors qu'une autre session est déjà active, un message d'avertissement s'affichera, et la feuille de calcul se fermera automatiquement.

Cdlt

Alex

Bonjour,

Alexander tu es sur une bonne piste, utiliser LockService permet de gérer la simultanéité, toutefois, afin de bloquer l'édition, il faut retirer les droits, de mes connaissances, il nécessite d'utiliser quelque chose du genre :

  var user = Session.getActiveUser();
   var userEmail = user.getEmail();

// ajouter droits : 
   ss.addEditor(userEmail);

// ou pour retirer les droits : 
   ss.removeEditor(userEmail);

Sauf que Session.getActiveUser ne fonctionne qu'en webApp, bref mettre le doigt dans du script GS + HTML...

@Foxindy, il vaudrait mieux architecturer différemment ton fichier, quel est ton but ?

Rechercher des sujets similaires à "gestion multi utilisateurs"