MSGbox : mot de passe pour acceder à des données

Bonjour à tous,

Si ce qui suit est possible :

  • Que le contenu d'une box puisse être différent par utilisateur, en s'appuyant sur des conditions vérifiables.
  • Que l'on puisse "mettre en forme", le contenu d'une box.
  • Que l'on puisse ajouter un menu déroulant dans une box.

Je cherche à faire ce qui suit.

Au chargement de la page, une msgbox avec un champ à remplir (ça j'ai su faire).

  • L'utilisateur saisi une clé unique

Ici la clé doit correspondre à une liste dans un autre onglet, si la valeur n'est pas trouvée, un message indique que la clé est incorrecte.

Si la clé est correcte :

  • Un entête "bonjour [nom du user]"
  • Un tableau de donnée mise en forme incluant des images
  • Un menu déroulant avec la liste de tous les noms pour en sélectionner un et afficher des infos plus détaillées pour ce nom.

Voilà.

En théorie toutes les données sont présentes, mais même si je commence à me débrouiller quand il s'agit de formule, les scripts me laissent toujours perplexes...

Si jamais une bonne âme pouvait m'aider un peu, cela serait vraiment super.

J'ai une feuille pour les tests ici :

https://docs.google.com/spreadsheets/d/1p5qgOjxB9zOhFKfzrk70mVRhQNiOw1-bvmG9BHhfeLA/edit?usp=sharing

Merci de m'avoir lu

Bonjour,

rigolo !

1-

Bon, ok, mais pour les images il faut l'id de l'image, une image partagée dans ton drive.

2-

Pourquoi tu commences à C3 ?

var nick = sh.getRange(3,3,last,4).getValues()

3-

Je suppose que c'est plutôt x

var last = x.getLastRow();
var nick = x.getRange(3,3,last,4).getValues()

4- où se trouvent les données pour les listes déroulantes ?

Je m'en prendrais un copie pour commencer à y travailler

je corrige le 1), il ne faut pas forcément l'id mais une url vers une image quelconque

Bonjour Steelson, et merci pour ta réponse,

Si l'ID de l'image peut être une valeur de cellule dans un tableau, ça devrait marcher.

Les valeurs du menu déroulant sont les noms, il y aura des pas mal de choses dans les datas, et le tableau ne contiendra pas tout.
Une recherche via le nom dans le menu déroulant permettra d'afficher plus de détails.

Si les noms dans le tableau sont cliquables (et qu'on peut avoir une flèche retour quelque part pour retourner au tableau), ce serait encore mieux qu'un menu déroulant.

Pour ce qui est de C3, c'est par incompréhension, mais en cherchant, ça devrait plutôt être

var nick = x.getRange(2,1,last,2).getValues()

Encore merci pour ton aide

je corrige le 1), il ne faut pas forcément l'id mais une url vers une image quelconque

L'image doit correspondre à la valeur de RANK dans Data, elle n'est pas fixe.

Si j'ai un tableau de correspondance avec les ID (ou lien) et le "rank", cela pourrait il fonctioner ?

une première partie sur l'architecture générale

function onOpen() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  const login = Browser.inputBox('ENTER YOUR SECURE ID', '', Browser.Buttons.OK_CANCEL);
  if (login == 'cancel') {
    Browser.msgBox('Abandon !')
  } else {
    findnick(login)
  }
}

function findnick(login) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var x = ss.getSheetByName('ID');
  var flag = false
  var last = x.getLastRow();
  var nick = x.getRange(2, 1, last, 2).getValues().filter(r => r[0] != '')
  for (nn = 0; nn < nick.length; ++nn) {
    if (nick[nn][0] == login) {
      flag = true
      ok(nick[nn][1])
      break
    };
  }
  if (!flag) { Browser.msgBox('Not found !') }
}

function ok(qui){
  var html = HtmlService.createHtmlOutput(`
<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body><center>
    <img src="https://www.gifgratis.net/gifs_animes/golf/22.gif" />
  </center></body>
</html>
  `);
  SpreadsheetApp.getUi().showModalDialog(html, 'Bonjour ' + qui + ' !');
}

Maintenant, c'est quel tableau et quelle liste déroulante ? et une fois le choix fait dans la liste déroulante que fait-on ?

La liste déroulante est la liste de noms du tableau dans data

Le tableau est celui dans data, à l'exception de la colonne G "other info"

L'idée est qu'en sélectionnant un nom, on accède au détail incluant ce qui est dans "other info"

Je ne suis pas sur de comprendre ce que fait la troisième partie de du code.

Si l'ID n'est pas trouvé, j'ai bien un retour négatif, mais je n'ai rien si elle est trouvée.

Encore merci pour ton aide

S'il est trouvé, on doit voir ceci

image

si ce n'est pas la cas, essaie en lançant onOpen depuis l'éditeur de script et donne les autorisations

Il faut ajouter un déclencheur sur onOpen comme suit

image

L'idée est qu'en sélectionnant un nom, on accède au détail incluant ce qui est dans "other info"

on "accède", c'est-à-dire, on sélectionne la ligne ?

Une fois l'ID trouvé, j'aimerais afficher les 6 premières colonnes du tableau.

Idéalement, les noms lignes dans le tableau seraient "cliquables".
En cliquant sur un nom, l'affichage changerait pour un contenu 'mise en page" de la totalité de la ligne pour le nom cliqué.

J'ai créé un onglet pour "illustrer" la mise en page.

La manip à faire pour ajouter le déclencheur sur "onopen" est-elle à faire pour tous les utilisateurs ?

Je viens d'ajouter un tableau de correspondance pour les images et les rangs.

La manip à faire pour ajouter le déclencheur sur "onopen" est-elle à faire pour tous les utilisateurs ?

Non, tu l'as fait et cela fonctionne pour moi sans que j'aie à le faire.

Maintenant que je vois un peu plus la globalité du projet, j'ai quelques remarques :

  • Il n'y a pas a priori de lien entre le login et le fonctionnement ultérieur
  • par ailleurs, ce n'est pas vraiment un mot de passe, chacun peut aller sélectionner rapidement l'onglet ID pour y récupérer les IDs (ce que je fais), il faut en être conscient, donc cette phase est juste pour un accueil sympa
  • avec GSheets le contrôle d'accès est réalisé par la fonction partage du document
  • GSheets est un outil partagé, collaboratif, et dans ce cas, quand un utilisateur manipule de l'information sur une feuille, les autres le verront aussi, donc quand on sélectionnera un nom dans le tableau et on affichera les informations du tableau de l'onglet "mise en page" ce sera vrai un nom à la fois et tout le monde le même
  • la seule solution serait de continuer en html et javascript (en webapp ou en application html dédié qui puiserait les informations dans la page en temps réel), mais c'est une autre histoire ...

je vais donc poursuivre, mais tu verras très vite si l'outil GSheets est vraiment adapté ou pas.

J'ai fait une solution 1 encore partielle, mais je n'arrive pas à afficher les images avec ces url !

J'ai introduit des formules dans mis en page selon le nom

Bonjour Steelson et merci pour ton retour.

Le tableau de correspondance des ID pourrait être sur un onglet masqué, ou sur un autre classeur ?
Si c'est faisable, alors seul un utilisateur possédant un ID valide pourrait utiliser cet outil.

GSheets est un outil partagé, collaboratif, et dans ce cas, quand un utilisateur manipule de l'information sur une feuille, les autres le verront aussi, donc quand on sélectionnera un nom dans le tableau et on affichera les informations du tableau de l'onglet "mise en page" ce sera vrai un nom à la fois et tout le monde le même

Ça, c'est beaucoup plus ennuyeux, car l'idée est justement que chaque utilisateur ait sa vision perso, et non partagé.

la seule solution serait de continuer en html et javascript (en webapp ou en application html dédié qui puiserait les informations dans la page en temps réel), mais c'est une autre histoire ...

Est-ce possible d'insérer une page dans la box, comme tu l'as fait pour la sphère ?

la seule solution serait de continuer en html et javascript (en webapp ou en application html dédié qui puiserait les informations dans la page en temps réel), mais c'est une autre histoire ...

Est-ce possible d'insérer une page dans la box, comme tu l'as fait pour la sphère ?

Du coup LA solution c'est bien une page html qui puisera les infos dans le fichier GSheets qui agira comme BdD. Mais là c'est un tout autre sujet et faudrait voir sur un forum html/javascript.

Si c'est dans un msgbox on aura toujours la possibilité d'aller voir dans les feuilles les données.

J'essaie en parallèle une solution 2 hybride, juste pour montrer l'effet du lien cliquable, mais cela restera visible par tous car on est dans un système partagé collaboratif.

J'ai activé une solution V2 pour que tu vois comment en cliquant sur un bouton radio en face d'un nom on peut afficher dans la feuille les informations. Il faudrait pouvoir faire la même chose en html/javascript ... voir sur forum dédié.

Je te remercie, tu as déjà débloqué la partie de l'identification, et de plus, maintenant j'ai une piste pour finaliser l'outil.

Rechercher des sujets similaires à "msgbox mot passe acceder donnees"