Problème pour partager 1 seul élément d'un fichier sheet

bonjour

j'avoue que je ne comprends pas bien ... désolé

voici ce que j'ai fait :

- j'ai créer un nouveau fichier

- j'ai utilisé la fonction importrange pour avoir les bonnes données

- j'ai intégré le script dans le fichier (la fonction "menu" s'est bien mise )

ça bloque...

j'ai oublié de te mentionner ... ajoute le service Google Sheets API clique à gauche sur le + de Services

image

Ajoute aussi un onglet appelé "liste"

bonjour

j'ai fait ce que vous m'avez demandé de faire mais cela ne fait rien de plus... je dois très certainement pas l'utiliser comme il faut car quand je lance le menu et filtrer, rien ne se passe (exécution du script faite),

toujours dans le fichier partagé transmit : en résumant mon besoin, j'aurais je pense les bonnes explications pour utiliser votre outils

- feuille 1 : fonction importange de mon "vrai fichier". ce fichier "feuille 1" devrait normalement être partagé en lecture seule à une seule personne qui normalement ne devrait pouvoir que consulter uniquement ses réponses formulaire (tri des réponses effectuées par l'adresse mail) -- 1 fichier par personne

(vraiment désolé ), c'est pas facile de tout comprendre ....

j'ai fait ce que vous m'avez demandé de faire mais cela ne fait rien de plus... je dois très certainement pas l'utiliser comme il faut car quand je lance le menu et filtrer, rien ne se passe (exécution du script faite),

  • as-tu créé une feuille "liste" et as-tu lancé le menu "Lister les url des vues filtrées pour chaque item de la colonne B" dans le menu ajouté ?
  • la feuille de réponse est-elle bien la première ?
  • as-tu créé une feuille "liste" et as-tu lancé le menu "Lister les url des vues filtrées pour chaque item de la colonne B" dans le menu ajouté ? oui -- j'ai recommencé et dans le feuille "liste" apparait bien les différentes adresse mail + filtre 2 et filtre 3 ...? a quoi cela correspond t-il ?
  • la feuille de réponse est-elle bien la première ? oui

en revanche, la feuille 1 reste identique --> donc comment faire pour que seule apparaisse 1 adresse mail ? je pourrais ainsi dupliquer à l'infini cette procédure ?

qu'en pensez vous ?

ok, clique aussi sur une url

image

et tu as directement la vue filtrée

image

maintenant, au lieu de donner l'accès au fichier, il faut que tu donnes cet url à chacun ... c'est ce qui permettra à chacun de lire indépendamment des autres, c'est ce que je disais ici :

reste à distribuer les url à chaque lecteur

tu peux même enchaîner avec une distribution par mail des url

effectivement, je n'avais pas compris car c'est tout simplement génial !!!

bravo c'est top !

il faut que je regarde un peu plus en amont, j'ai partagé cet url et je constate que pendant un cours instant on a une vision globale de ceux qui l'utilisent , avez-vous remarqué de votre côté ?

  1. oui, pour cette solution, le temps que le process se mette en place on voit l'ensemble, et du reste, la personne peut cliquer sur la croix en haut à droite et tout voir, c'est une solution qui permet à chacun de travailler sans gêner le voisin ...
  2. mais si tu veux plus d'étanchéité, il faut créer des fichiers séparés avec importrange (je ne suis même pas sûr qu'il ne soit pas facile d'aller chercher le fichier de base complet)
  3. et encore plus étanche, faire une page html qui importera juste la section qui va bien, en exploitant la sortie temps réel de la feuille au format json

conclusion, si besoin d'étanchéité, il faut aller plus loin chercher une autre solution ... donne moi ton retour !

relis du reste ce post https://forum.excel-pratique.com/sheets/probleme-pour-partager-1-seul-element-d-un-fichier-sheet-167... et les liens qui sont cités

Dans tous les cas je ne peux être qu'admiratif du travail effectué , c'est incroyable ce que l'on peut faire (quand on s'y connait "beaucoup" )

j'ai commencé à mettre votre système en place, bien évidement je pense que je vais très vite revenir vers vous car j'aurais quelques petites questions .....

encore un grand bravo pour vos compétences et votre temps

Bien a vous

autre solution

  1. crée un fichier par email, vierge, titre quelconque, note le n° ID du fichier (cela pourra s'automatiser)
  2. crée un onglet liste dans ton fichier maître avec les emails et les n° ID
  3. script
voir ci-dessous

je t'envoie un jeu de fichiers "open" pour tester

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

bonjour

effectivement je n'ai plus de code erreur

ceci étant, j'ai ce message qui apparait quand je lance le script et pour lequel je dois valider avant qu'il ne continue son exécution,

1

peut-on faire en sorte que je ne sois pas obligé de sélectionner ok ? cela me permettrai de mettre un déclencheur

par avance merci !

le fichier de lecture (mise a jour) garde bien en mémoire les lignes précédentes ?

dans le message "pas de données pour .... (nom du fichier) les données ont été effacées !"

que cela veut dire svp

fais un essai en remplaçant

Browser.msgBox('Pas de données pour ' + rng[0] + '. Les données ont été effacées !')

par

SpreadsheetApp.getActive().toast('Pas de données pour ' + rng[0] + '. Les données ont été effacées !')

ou bien supprime complètement la ligne,

attention au risque de transférer un fichier vide s'il y a une erreur de correspondance

ça a l'air de tourner tout ça !

en tous cas, excellent sujet, je n'avais pas pensé tout de suite à cette solution efficace

avant de clôturer ce sujet

je tiens encore a vous remercier pour votre aide oh combien importante pour moi

Rechercher des sujets similaires à "probleme partager seul element fichier sheet"