Skip to content

Automatisation Colodus/Javascript : les fonctions

22/09/2015

Tous les billets de la série « Automatisation Colodus avec JavaScript »

Je vous renvoie tout d’abord au précédent article. Il contient (en bas de page) le code à copier-coller comme favori Firefox. Une fois qu’on est authentifié dans Colodus, on clique sur ce favori, et il cherche le PPN et crée un exemplaire dessous.

Code initial : toutes les consignes pour un seul exemplaire

Je remets quand même le code ici :

javascript:(function(){jQuery(%22input[id*='ppn']%22).val("187862575");document.getElementById('boutonsearch').click();document.getElementById('boutoncrexpl').click();divparent=window.document.getElementById('E9xx');divparent3XX=window.document.getElementById('E3xx');div930=divparent.getElementsByClassName('E930_Div');divid930=div930[0].getAttribute('id');ajLt('record0','E915',null,null,null,null,null,null,null);div915=divparent.getElementsByClassName('E915_Div');divid915=div915[0].getAttribute('id');jQuery(%22input[id*='E915_a']%22).val("2015-DROIT-540");ajt('record0','E915_b',null,divid915,null,null,null,null,null);jQuery(%22input[id*='E915_b']%22).val("0962091024");ajt('record0','E930_c',null,divid930,null,null,null,null,null);jQuery(%22input[id*='E930_c']%22).val("BU DROIT");ajt('record0','E930_d',null,divid930,null,null,null,null,null);jQuery(%22input[id*='E930_d']%22).val("CODES");jQuery(%22input[id*='E930_a']%22).val("346 COD");jQuery(%22select[id*='E930_j']%22).val("g");jQuery('#boutonsave').click();})();

Évidemment, ce n’est pas super intéressant de générer un favori pour un seul PPN et un seul exemplaire. Tout l’intérêt est de produire un favori contenant plusieurs exemplaires (le nombre ne peut pas être infini, il y a une double limite technique, j’en parlerai plus tard — disons que 30-50 est un bon nombre).

Bien sûr, on pourrait reproduire l’intégralité du code ci-dessus, en le déclinant pour chacun des PPN et exemplaires à traiter. Mais il est évident que, pour l’ensemble du code reproduit, seules les parties en rouge changeraient d’un PPN/exemplaire à l’autre.

Il est donc plus simple de mutualiser l’ensemble des commandes en tête du code, puis de faire la liste seulement de ce qui change.

Les fonctions : mettre en commun les consignes qui ne changent pas

Définissons donc 3 fonctions :

  • Celle qui cherche le PPN (et cliquer sur « Rechercher ») :
    fonction searchPPN, avec 1 paramètre : le PPN.
  • Celle qui clique sur « Créer un exemplaire », puis remplit les champs code-barres, n° d’inventaire, BU, localisation, cote et code PEB (et clique sur « créer l’exemplaire ») :
    fonction FormExemplaire, avec 6 paramètres.

Voici pour 3 PPN et exemplaires ce que ça donnerait. Je vous mets des sauts de ligne pour plus de lisibilité (même si je ne suis pas convaincu que vous trouviez ça plus lisible…), mais évidemment dans un favori il n’y a pas de saut de ligne :

javascript:
function searchPPN(ppn){jQuery(%22input[id*='ppn']%22).val(ppn);};

function FormExemplaire(inv,cb,BU,localisation,cote,peb) {document.getElementById('boutonsearch').click();document.getElementById('boutoncrexpl').click();divparent=window.document.getElementById('E9xx');divparent3XX=window.document.getElementById('E3xx');div930=divparent.getElementsByClassName('E930_Div');divid930=div930[0].getAttribute('id');ajLt('record0','E915',null,null,null,null,null,null,null);div915=divparent.getElementsByClassName('E915_Div');divid915=div915[0].getAttribute('id');jQuery(%22input[id*='E915_a']%22).val(inv);ajt('record0','E915_b',null,divid915,null,null,null,null,null);jQuery(%22input[id*='E915_b']%22).val(cb);ajt('record0','E930_c',null,divid930,null,null,null,null,null);jQuery(%22input[id*='E930_c']%22).val(BU);ajt('record0','E930_d',null,divid930,null,null,null,null,null);jQuery(%22input[id*='E930_d']%22).val(localisation);jQuery(%22input[id*='E930_a']%22).val(cote);jQuery(%22select[id*='E930_j']%22).val(peb);jQuery('#boutonsave').click();};
SearchPPN("184389046"); FormExemplaire("2015-DROIT-544","0962091028","DROIT","SA2","342.07 FAB","u");
SearchPPN("186285191"); FormExemplaire("2015-DROIT-512","0962088995","DROIT","SA2","343.04 AID","g");
SearchPPN("184317711"); FormExemplaire("2015-DROIT-582","0962091123","DROIT","SA0","327.7 DAV","u");

Vous pouvez là encore tester ce code :

  1. le sélectionner,
  2. le faire glisser dans sa barre de favoris
  3. s’authentifier dans Colodus
  4. cliquer sur le favori

Attention, il faudra penser à supprimer les 3 exemplaires créés, sous les PPN 184389046, 186285191, 184317711.

Conclusion

Dans le code que nous générons, il y a systématiquement un en-tête qui déclare toutes les fonctions utiles ; puis la liste des notices à traiter.

C’est le sens de cette page de code sur Github, qui fournit un ensemble de fonctions qu’on peut utiliser dans un favori Firefox, sur le même modèle :

  1. commencer par « javascript: »
  2. mettre bout à bout les fonctions utiles
  3. entrer l’intégralité des exemplaires concernés par les traitements

La dernière partie est finalement la seule qu’il faille extraire de son SIGB : obtenir un ensemble de PPN, et pour ces PPN les données d’exemplaires qu’on veut y associer.

Mais au fait, comment savoir de quel PPN il s’agit ?

En effet, quand je veux faire remonter des exemplaires de mon SIGB local vers le Sudoc, il n’y a généralement pas encore de PPN : il faut l’identifier d’abord. Donc générer cette liste de
SearchPPN("XXXXXXXX");CreerEx("inv","cb","BU","localisation","cote","peb")n'est pas possible.

Ce sera donc l’objet de mon prochain billet.

Il y a tout de même certains cas où le PPN est connu du SIGB

Ce sont :

  • les réassorts (la notice Sudoc est déjà dans le SIGB)
    La fonction à utiliser est évidemment CreerEx()
  • les relocalisations-recotations
  • les mises au pilon

Il existe des fonctions pour les 2 derniers items de cette liste. J’en parlerai sans doute ultérieurement aussi.

Les commentaires sont fermés.

%d blogueurs aiment cette page :