Aller au contenu

VBscript et WinIBw ?


Desty_Nova

Messages recommandés

Bonjour à tou.te.s,

 

En ce moment je travaille dans une BU et je dois cataloguer des ouvrages dans le Sudoc.

 

Le travail est très répétitif et l'insertion de données au format Unimarc seulement basée sur les "scripts" (de l'ABES) qui ne sont en fait que des manières de copier/coller du texte à l'intérieur de WinIB. J'ai récemment compris que ces scripts faisaient appel à un langage de programmation VBscript (navré si je débite des platitudes mais je suis contractuel et je n'ai pas eu vraiment de formation sur tout ça).

 

Je suis très loin d'être chevronné niveau programmation mais j'aime bien ça du coup je me fais des petits scripts me permettant d'aller plus vite :ph34r:

 

Je voulais savoir s'il existait un endroit où on pouvait échanger autour de ça ? Se filer ses bouts de code et ce genre de choses ?

 

Merci à vous :)

Lien vers le commentaire
Partager sur d’autres sites

  • Réponses 17
  • Created
  • Dernière réponse

Top Posters In This Topic

  • Desty_Nova

    8

  • B. Majour

    7

  • Pigranelle

    2

  • Liemena

    1

Bonjour Desty_Nova

 

Pas vraiment de réponse directe à t'apporter.

 

A part peut-être ce lien

http://documentation.abes.fr/sudoc/manuels/logiciel_winibw/scripts/index.html#annexesListeScripts

 

Je ne sais pas si @Lully pourra mieux te renseigner sur ce sujet.

 

Ou alors pose ta question directement ici, sur le guichet d'Assistance de l'Abes

https://stp.abes.fr/assistance/domaines/27

Tu auras une réponse plus précise. En utilisant l'onglet poster une demande (https://stp.abes.fr/node/add/assistance)

 

Sinon, tu as les différentes FAQ par domaine de l'ABES, en bas de la page à gauche.

Si tu sélectionnes, par Exemple Sudoc Espace Pro dans la liste des icônes en bas de la page.

https://stp.abes.fr/node/3?origine=sudocpro

 

Et si jamais quelqu'un peut m'expliquer l'histoire du "petit Cochon". ;)

utilisation du petit cochon  => Comment faire si le petit cochon ne marche pas en copie de notice ?

En bas de la page https://stp.abes.fr/assistance/domaines/27

Lien vers le commentaire
Partager sur d’autres sites

Salut !

 

Merci en tous cas de ton retour :)

 

Je vais voir pour contacter l'ABES, car je crois que j'ai déjà écumé leur site sans rien trouvé de suffisamment approfondi.

 

Pour le moment, les seules choses que j'ai réussi à dénicher à dénicher sur le Web sont deux documents en Allemand (que je ne lis pas) a-priori édités par des bibliothèques Allemandes :

- Ici

- Là

 

Et un document en Anglais, toujours émanant d'une bibliothèque Allemande mais signé de l'OCLC :

- Ici

 

Disons grosso-modo que je cherche de la doc expliquant comment fonctionnent, d'où sortent et quelles sont les possibilités, par exemple, des instructions des scripts WinIBw du style "Application.ActiveWindow.Title.InsertText", "application.activeWindow.codedData = false", etc.

 

Je fouille aussi les tutos sur VBscript qui me simplifient la vie (genre maintenant je peux cataloguer en 30 secondes une thèse là où avant je prenais 5 minutes à tout vérifier dans la jungle d'Unimarc).

 

[ Pour le cochon, par contre, aucune idée ^^ ]

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

Je suis une habituée de WinIBW (mais pas des scripts) et je ne prêtais plus attention au petit cochon... je suis retournée voir :

- le petit cochon permet de récupérer des notices dans d'autres bases que celles du SUDOC

- et de faire des recherches quand on est en modification de notice... bon là j'ai testé et je ne comprends pas comment ça marche

 

Autrement dit, pour moi, le petit cochon il est mignon mais pas indispensable ! ;-)

Lien vers le commentaire
Partager sur d’autres sites

Le 07/11/2020 à 20:48, Desty_Nova a dit :

Disons grosso-modo que je cherche de la doc expliquant comment fonctionnent, d'où sortent et quelles sont les possibilités, par exemple, des instructions des scripts WinIBw du style "Application.ActiveWindow.Title.InsertText", "application.activeWindow.codedData = false", etc.

 

Bonjour Desty_Nova

 

Tu as trouvé le fichier en anglais, qui recense ce genre d'informations. Sauf que ça ne parlera pas vraiment à un.e néophyte.

OCLCPica WinIBW est développé avec une "bibliothèque" de fonctions spécifiques (que tu ne retrouveras pas en VBscript classique).

 

Je vais te décrypter  ce que je comprends par exemple du script suivant

 

Sub CreerCollection () 
'Ce script permet de créer une notice de collection imprimée Ad

application.activeWindow.codedData = false  => page 20 du fichier anglais. Semble être une bascule (vrai/faux) pour indiquer que les données ne sont pas encore validées.

Cette bascule sera mise à vrai lorsque tout sera saisie. Voir à la fin.

application.activeWindow veut dire application dans la fenêtre active.


application.activeWindow.command "cre", false   => envoie une commande cre au logiciel  (pour création ?, avec un deuxième argument à faux. Spécifique à WinIBW)
Application.ActiveWindow.Title.InsertText"008 $aAdx3"&vblf&_  => insérer à la position du curseur tout le texte entre double guillemet (p32 en bas)

"104 ##$a$b$c$d$e$ffre"&vblf&_   => vblf Vbscript Line Field  soit un retour chariot.  (tu as les constantes VBscript ici : https://www.commentcamarche.net/contents/1165-vbscript-les-constantes

 

Le & sert à rattacher les chaînes entre elles. C'est aussi valable avec les formules Excel.

 

Comme la chaîne de caractères est très longue, on lui rajoute un _  (underscore, sous le 8) pour dire au logiciel que la chaîne se poursuit à la ligne suivante.

Ce qui permet de bien aérer son texte.

 

[...]

"711 02$a@Nom Collectivité Co-Auteur$bPrénom$4CODE FONCTION"&vblf&_  => là, on remarque qu'il y a une erreur sur la fin de cette ligne le &_ final ne devrait pas être présent.

Il est d'ailleurs absent sur d'autres script.

 

application.activeWindow.codedData = true    => on bascule le codage à vrai. Sans doute pour valider la saisie sur l'éditeur.
End Sub

 

Ce script tape donc le texte entre les guillemets.

 

Tu as d'autres lignes qui pourraient t'intéresser (dans les autres scripts)

application.activeWindow.commandLine "che ppn"  => Lance une instruction sur la ligne de commande Che ppn (cherche ppn ?)

 

application.activeWindow.simulateIBWKey "F7"  => simule la tape de la touche F7

application.activeWindow.simulateIBWKey "FR" => étrange ce FR, mais dans la doc, on lit ceci. Donc FR = Enter. (touche Entrée)

 

Function SimulateIBWKey

Simulates pressing a WinIBW key, where strKey is the internal presentation of the key.

Commonly used keys are:

   “FE”    Escape

  “FR”    Enter

  “F1” to “F12” Usually related to the buttons on the Pica button bar.

These keys are actually defined in the screen definition and are the same as used by DosIBW.

 

Voilà pour ce que j'en ai lu et réussi à décrypter.

 

Bonne semaine à toi.

 

Modifié par B. Majour
Lien vers le commentaire
Partager sur d’autres sites

Il y a 10 heures, Liemena a dit :

- le petit cochon permet de récupérer des notices dans d'autres bases que celles du SUDOC

- et de faire des recherches quand on est en modification de notice... bon là j'ai testé et je ne comprends pas comment ça marche

 

Merci Liemena. :thumbsup:

Lien vers le commentaire
Partager sur d’autres sites

Il y a 17 heures, B. Majour a dit :

OCLCPica WinIBW est développé avec une "bibliothèque" de fonctions spécifiques (que tu ne retrouveras pas en VBscript classique).

 

Est-ce qu'on peut trouver quelque part la description en Français de cette bibliothèque ?

 

Merci de tes explications sur ces lignes de code en tous les cas :thumbsup:

Modifié par Desty_Nova
Lien vers le commentaire
Partager sur d’autres sites

Bonjour

 

A part ce fichier de 53 pages

https://docplayer.fr/5559240-Les-scripts-version-08-01-2015.html

que tu peux imprimer en PDF.

 

Il n'y a pas trop d'explications en français.

 

Tu noteras en page 36, qu'il y a un menu contextuel qui permet d'afficher (en théorie) (menu contextuel = Bouton droit. Mais sur quel élément, je ne sais pas)

List Objects

List Properties/Methods

List Functions

 

qui peuvent te donner ce que tu cherches, mais l'explication sera certainement en anglais.

 

Tu as aussi le menu Aide? qui peut - éventuellement - t'amener réponse à tes questions sur ce sujet.

C'est souvent là que l'aide en ligne est cachée dans Excel ou Word. Avec des exemples. (Mais est-ce la même chose dans WinIBW ?)

 

Sinon, tu n'auras pas trop le choix, tu devras utiliser ceci

http://documentation.abes.fr/sudoc/indexautoformation.htm

 

Cliquer sur Assistance pour télécharger le mémo d'assistance.

Et trouver la bonne liste de diffusion, blog, ou Twitter. Voire leur guichet pro.

 

Tu ne dois pas être toute seule à travailler avec les scripts.

 

Il y a aussi l'autoformation

http://documentation.abes.fr/sudoc/indexmanuels.htm

Avec les astuces de Grand-mère

http://documentation.abes.fr/sudoc/manuels/logiciel_winibw/astuces_saisie/index.html

 

Toujours en faisant attention, hein.

Les scripts sont à manipuler avec précaution, surtout quand on peut toucher/modifier des dizaines d'enregistrement d'un coup.

Lien vers le commentaire
Partager sur d’autres sites

Il y a 3 heures, B. Majour a dit :

Tu noteras en page 36, qu'il y a un menu contextuel qui permet d'afficher (en théorie) (menu contextuel = Bouton droit. Mais sur quel élément, je ne sais pas)

List Objects

List Properties/Methods

List Functions

Ahhh oui, c'est pas mal ça en effet, il faudra que je teste :)

 

D'accord, je commence à comprendre un peu mieux les choses : VBScript ne s'exécute qu'au sein d'une autre application (en l'occurrence WinIBw) qui, elle, lui définit un certain nombre d'objets - avec des attributs et des fonctions - qu'il peut manipuler (ceux qui sont définis dans le document anglais de l'OCLC) et qui ne sont pas les mêmes d'une application à l'autre (entre Excel et WInIBw, on ne pourra pas manipuler les mêmes objets).

On a donc la syntaxe de VBScript, les objets manipulables et les commandes spécifiques de WinIBw pour écrire les scripts.

 

 

Il y a 3 heures, B. Majour a dit :

Toujours en faisant attention, hein.

Les scripts sont à manipuler avec précaution, surtout quand on peut toucher/modifier des dizaines d'enregistrement d'un coup.

Ça me rappelle quand je crashais l'ordi de mon papa :frantics:

 

Merci de ces retours en tous cas, je vais pouvoir m'auto-former ! :geek:

Modifié par Desty_Nova
Lien vers le commentaire
Partager sur d’autres sites

Du coup je pars un peu sur autre chose, je ne sais pas si c'est très utile d'ouvrir un nouveau sujet (?) pour ça.

 

Je dois mettre des NNT à certaines des thèses que je catalogue. Pour ça, je dois vérifier la liste des NNT sous une forme standardisée, genre : 1999ABCXXXX.

 

Dans mon script, je voudrais écrire une boucle qui teste si un NNT est déjà attribué ou non (par exemple en automatisant la commande de WinIBw : CHE NUM 1999ABC0001). Mais pour que ça fonctionne j'aurais besoin de récupérer le code de retour de la commande WinIBw CHE lorsque le NNT est, ou n'est pas attribué - comment faire ?

 

Dans ma tête, ça ferait une structure comme ça :

CHE NUM 1999ABC0001

Si le NUM est trouvé alors on fait

CHE NUM 1999ABC0002

etc.

Jusqu'à ce qu'un CHE NUM 1999ABC000a renvoie "Aucune réponse trouvée" dans WinIB (dans ce cas je sais que c'est celui-ci que je pourrai attribuer à ma thèse puisqu'il n'existe pas encore).

 

Je suis en train de chercher mais si quelqu'un.e a déjà la solution :wub:

Modifié par Desty_Nova
Lien vers le commentaire
Partager sur d’autres sites

Bonjour

 

D'après

documentation.abes.fr/sudoc/autres/Procedure_attribution_NNT_Univ_Paris_theses_XIXe_XXe.pdf

 

Tu peux utiliser directement l'expression suivante :

 

Exemple :
J’attribue des NNT pour les thèses soutenues en 1925 au sein de la Faculté des Lettres de Paris, je tape dans WinIBW :
che num 1925PA00L*
OU
bal num 1925PA00L*
* = troncature
J’obtiens la liste des NNT déjà attribués (classés par ordre alphabétique si j’ai utilisé la fonction bal). Pour constituer mes NNT, j’utilise les numéros d’inventaire qui suivent le dernier numéro d’inventaire utilisé dans WinIBW.

 

C'est beaucoup moins risqué que de faire une boucle et d'attendre un éventuel retour du serveur en face. Un serveur qui peut être occupé à un moment ou à un autre.

Donc, ta boucle pourra t'indiquer qu'il n'y a pas de réponse avec ce numéro, alors qu'il en existe déjà un. Il faudra aussi une temporisation pour attendre que le serveur réponde à ta requête.

 

Ensuite, dans ta boucle, tout dépend s'il est possible de récupérer un code erreur qui indique ou non la présence de ce numéro de thèse (qui doit être unique).

Plus simple d'utiliser l'exemple précédent avec la troncature + *.

 

Avec ça, tu seras certaine de ne pas faire d'erreur.

 

Normalement, si WinIBW respecte les codes classiques, tu dois aussi pouvoir utiliser le ?

 

Exemple (à tester) :

CHE NUM 1999ABC0???

 

Ce qui permet par exemple de tester un NNT comme ceci  CHE NUM 1999?BC00*

 

Mais il est possible que le ? soit utilisé pour autre chose dans WinIBW.

 

A toi de tester.

 

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Pour les échanges sur WiniBW il y a la liste de diffusion SUCAT à laquelle tu peux t'abonner et poser tes questions, c'est essentiellement via cet outil que nous communiquons: http://documentation.abes.fr/sudoc/Abonnements_Listes.htm

Mais je suis d'accord qu'il nous manque un vrai moyen d'échange et de partage type forum ou autre truc plus adapté qu'une liste de diff...

Sur les questions de programmation je ne peux pas te répondre, je bidouille un peu les scripts c'est tout, et encore pas assez souvent pour que j'aie pas besoin de me prendre la tête à chaque fois.

Attention au petit cochon!!!

1) le petit cochon est une icône qui peut avoir différentes attributions suivant comment a été configuré ton profil

2) chez moi le petit cochon renvoie à des bases d'appui et non à des bases dont les données peuvent être utilisées pour un catalogage propre dans le Sudoc, pour moi il faut donc vraiment éviter de l'utiliser.

Lien vers le commentaire
Partager sur d’autres sites

Pour le NNT, comment était-il attribué avant ton arrivée?

Chez nous nous avons un fichier partagé dédié que nous suivons.

Le NNT normalement se suit par ordre d'attribution, donc si tu ne fais que des thèses et que tu es le seul à en faire dans ton SCD, les numéros se suivront d'une thèse à l'autre, pas besoin de chercher. Si tu n'es pas le seul à faire des thèses il me semble important de te rapprocher des autres personnes qui en font dans ton SCD ou de ton correspondant catalogage pour vous entendre, car si tu attribue un NNT au moment du catalogage (qui peut prendre un certain temps) et qu'un de tes collègues attribue le même NNT au même moment je ne sais pas comment cela se passe.

Lien vers le commentaire
Partager sur d’autres sites

  • 2 weeks later...

Salut !

 

Merci de tes informations Pigranelle, je vais voir pour m'inscrire sur cette liste de diffusion :)

 

Ma question sur le NNT était plutôt théorique, vu que le cadre dans lequel je cataloguais les thèses était bien encadré, sans risque de chevauchement des NNT.

 

Ceci dit, à force de fouiller, j'ai fini par trouver l'accès à l'information que je voulais connaître via le script, c'est-à-dire le retour d'erreur de WinIBW si le NNT n'existe pas (dans ce cas, WinIBW va donc afficher dans la barre de message : "Aucune réponse trouvée").

 

Je la mets ici, au cas où ça intéresserait des gens. Pour avoir accès à la barre de messages via un script, il faut utiliser les objets suivants :

 

application.activeWindow.messages.item(0).text

 

Cette ligne retournera le message d'erreur en format String : "Aucune réponse trouvée" (on peut avoir son type aussi : 2). En l'affectant à une variable, on pourra maintenant construire une boucle conditionnelle qui proposera le NNT manquant. Après effectivement, comme le soulignait B. Majour, ça ne règle pas le problème potentiel de surcharge du serveur si la boucle doit passer en revue des millions de NNT avant de trouver celui manquant, mais c'est quand même un embryon de réponse :D

Modifié par Desty_Nova
Lien vers le commentaire
Partager sur d’autres sites

@Desty_Nova

 

Super !

 

Partager l'information et le savoir, c'est un vrai travail de bibliothécaire.

Ton blog sera bien utile si tu mets tes scripts et tes explications, plus tous les trucs et astuces qui sont répartis dans différents fichiers de l'ABES.

 

Exemple

https://fr.slideshare.net/ABESformation/comment-travailler-partir-de-scripts-dans-winibw

 

Là, tu as un script haut niveau, par quelqu'un qui sait programmer. (à voir si tu peux le contacter)

http:\\bibliotheque.ciup.fr\files\CairnWinIbw.pdf

 

Avec un blog, tu peux fédérer une petite communauté de gens intéressés par le sujet.

Alors, ne sois pas discret. ;)

 

Et je te note : devoir expliquer aux autres, c'est apprendre deux fois.

Deux fois plus d'intérêt.

 

 

Lien vers le commentaire
Partager sur d’autres sites

Merci beaucoup de tes encouragements, ça me fait plaisir ! :D

 

Ouille, le script que tu as mis en lien a l'air bien complexe ! Je vais le regarder en détail (je ne sais pas si ce que je fais pourrais intéresser la personne vu son niveau ^^).

Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Restaurer la mise en forme

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.


×
×
  • Créer...