[Custom Widget] Copier/coller des colonnes et leurs propriétés

Bonjour,

Régulièrement, je me retrouve à devoir dupliquer des listes de choix d’une colonne à l’autre, et devoir le faire à la main est relativement ennuyeux (surtout s’il y a les couleurs). Et récemment, j’avais toute une table à copier depuis un document de test vers un document de production :open_mouth:

Je me suis donc fait un petit widget pour m’aider à faire cette copie :slight_smile:

Ainsi ExportTable permet de :

  • Copier des colonnes depuis une table et les coller dans une autre
  • Copier les propriétés d’une colonne et les coller dans une autre colonne (pas forcément dans la même table)
  • Les colonnes et les propriétés à copier peuvent être sélectionnées finement
  • Les actions peuvent être opérées dans un même document ou dans des documents différents

Exemples de cas d’utilisation :

  • Copier/coller des colonnes entre un document de test et un document de production une fois la structure validée.
  • Copier/coller les choix d’une colonne de type Choix (textes et couleurs).

Comme d’habitude, le widget est disponible à cette adresse : https://varamil.github.io/grist-widget/exportTable/min/index.html, et la documentation est disponible ici.

À propos des messages d’avertissement, il n’y a pas d’inquiétude particulière à avoir, simplement, durant mes tests avec la fonction grist.docApi.applyUserActions fournie par Grist, j’ai pu constater qu’elle n’était pas suffisamment protégée, et que si on lui fournissait des données mal formatées, cela pouvait corrompre la base. Normalement il n’y a plus de soucis, mais par exemple, une mise à jour future de Grist pourrait poser problème. Je préfère prévenir.

6 « J'aime »

Salut Varamil,

Génial comme contribution ! En revanche je viens de l’essayer mais je n’ai pas réussi : j’ai testé sur plusieurs type de colonne (une colonne texte puis une colonne formule), j’ai bien sélectionné la colonne dans les paramètres du widget, j’ai cliqué sur copier, j’ai bien eu le message m’indiquant que c’était copié dans le clipbaord, puis j’ai défini une colonne cible « $Colonne_cible » dans le widget et j’ai cliqué sur coller, mais la $Colonne_cible est restée vide…J’ai sans doute raté une étape, preneur de ton aide :slight_smile:

Bonjour @Raywan

Il y avait peut-être un problème d’export de fonctions, mais ça ne colle pas complètement avec la description du problème.

Toujours est-il, réessaye maintenant, et si ça ne marche toujours pas, voici plusieurs questions pour essayer de comprendre ce qui se passe :

  • Est-ce qu’il y a eu un message de confirmation après la copie ?
  • En faisant F12 dans le navigateur, et en regardant l’onglet console dans le panneau qui est apparu, est-ce qu’il y a des messages en rouges après avoir cliqué sur « Coller » ?
  • Quel navigateur utilises-tu ?

Hello @Varamil, je me rends compte que je ne t’avais pas répondu, désolé !

J’ai réessayé mais je rencontre le même problème, le comportement est normal jusqu’au moment où je clique sur « Coller » et là il ne se passe…Rien.

  • J’ai bien eu un message de confirmation après la copie
  • En ouvrant la console, j’ai ce message d’erreur là
  • je suis sur Chrome

Bonjour @Raywan

C’est un peu ce que je craignais, un problème de restriction sur le presse-papier.

C’est vrai que j’ai principalement utilisé Firefox pour le debug, et ils proposent une solution un peu plus intelligente, à savoir demander à l’utilisateur s’il valide la lecture du presse-papier, plutôt que refuser l’accès purement et simplement.

Bref, j’ai ajouté une ligne où on peut coller manuellement ce qui a été copié pour qu’ensuite quand on clique sur « Coller », le widget vienne lire le contenu de ce champ plutôt que le presse-papier.

C’est un peu moins user-friendly, mais je n’ai pas trop d’autre solution si on veut pouvoir copier entre document. Il faudrait peut-être que j’explore une solution basée sur les cookies.

Hello @Varamil, j’ai l’impression que ça fonctionne mieux avec ta modification, merci !

J’ai en revanche eu l’impression que le copier coller fonctionnait bien pour le bloc du haut (au niveau de la structure de la table), mais ne fonctionnait pas sur le bloc du bas (propriété de la colonne), j’ai le message d’erreur suivant :

Bonjour @Raywan

J’ai l’impression que vous avez collé des données de « structure de table » (commençant par [[) dans une « propriété de colonne » (qui doit normalement commencer par {).

Bonjour Varamil !
Ah effectivement, c’est peut-être une erreur de ma part.
Si je comprends bien, la table du haut est pour les structures de table tandis que celle du bas est pour les propriétés de colonne, c’est bien ça ?
Dans mon cas, j’aimerais simplement copier-coller le style et la forme d’une colonne (ex : j’ai une colonne de type numérique qui s’affiche en rouge si le chiffre est inférieur à 10) → dans ce cas, je dois C/C le format propriété de colonne (tableau du bas) plutôt que structure de table ?

Hello !
Merci beaucoup pour le widget, j’en avais besoin et ça marche c’est génial :pray:

J’ai une suggestion pour l’UX car j’ai aussi galéré à comprendre comment l’utiliser :

Au début j’ai fait comme Raywan, j’avais naturellement choisi en haut la source et dans « target column » la colonne de destination, et j’ai eu l’erreur : « les données dans le presse-papier ne sont pas au format attendu ».

Après avoir lu la doc je ne comprenais toujours pas, je ne trouvais pas de section Target Table dans le bloc Column properties.

Puis j’ai compris qu’en fait, une fois qu’on fait le « copier », il faut retourner dans la première section Target Table pour changer la table, et cette fois-ci cliquer sur le bouton coller.

Je me permets de suggérer une possibilité d’amélioration, qui permettrait de choisir source et destination dans la même page :

Merci encore !

Bonjour,

Merci pour les retours.
J’avoue à la base c’était pour tester des choses et au final ça paraissait assez utile pour être partagé, mais c’est sûr que l’UI n’est peut être pas au top.
Quand j’ai un moment je verrais pour améliorer ça.

1 « J'aime »