Page 1 of 1

Exemple de script : Mise à jour dans une appli

Posted: 01 Dec 2014, 09:38
by francois
Bonjour,

Début 2015, je vais faire une démo concernant l'automatisation de taches.
(Si c'est concluant, je formerai quelqu'un)

Plus précisément :
Automatiser la mise à jour ou la consultation dans une application en utilisant un fichier de données en entrée.


Pour préparer cette démo, je n'ai pas accès aux applications de l'entreprise.
J'ai donc créé une mini application pour montrer les possibilités d'actiona pour répondre à ce type de besoin.

Je pense que cela pourrait intéresser quelqu'un qui démarre sur Actiona pour faire ce type de chose.

En pièce jointe 4 fiches :
- Courte présentation de la mini application.

Avant de lancer le script :
- Adaptation à faire pour que le script fonctionne.

Comment ça marche :
- Tour d'horizon des ressources utilisées (répertoires, fichiers, ..)
- Le script de démo. Zoom sur quelques actions.

Il ne devrait pas y avoir de bug dans ce script (quoique ..),
S'il y a des lourdeurs ou des solutions plus élégantes pour résoudre tel ou tel pb, je suis preneur.

Testé uniquement sous Firefox.

Francois

Re: Exemple de script : Mise à jour dans une appli

Posted: 01 Dec 2014, 18:32
by Violette
Wooh ça a l'air... Complexe.
Bon j'ai pas test mais j'ai regardé le code.

N'utilise pas eval, en js une chaine de caractère est un tableau tu peux donc accéder a son contenu comme un tableau classique. Puis utiliser parseInt pour changer le type du caractère en int.

J'ai refait vite fait ta fonction de vérification du code siren, j'ai juste réécrit un peu ton code pour obtenir quelque chose de plus propre.

Code: Select all

function verif_siren_K_valide(siren) {
    if ((siren.length) != 9 || isNaN(siren)) {
        return false;
    } else {
        var sum_impairs = 0, sum_pairs = 0, tt, w_sum;

        for (var i = 1; i <= 9; i++) {
            if ((i & 1) == 1)
                sum_impairs += parseInt(siren[i-1]);

            if ((i & 1) != 1) {
                tt = parseInt(siren[i-1]) * 2;

                if (tt > 9)
                    tt -= 9;

                sum_pairs += tt;
            }
        }

        w_sum = sum_pairs + sum_impairs;

        if (w_sum % 10 == 0)
            return true;
        else
            return false;
    } // FIN : ELSE / if
} // fin  : verif_siren_K_valide(siren)fonction
En parcourant ton code j'ai remarqué que pas mal de variables n'étaient pas déclaré, et qu'il manquait beaucoup de ;. Dans ce cas ci, ça n'a pas l'air de te poser préjudice mais fait quand même attention avec ça parce que c'est très vite source de conflit et de bug :p.

Re: Exemple de script : Mise à jour dans une appli

Posted: 21 May 2015, 08:21
by stephane
Francois,

J’ai fait tourné ton script sur mon PC ( en recréant les images comme tu l’indiques pour qu’elles soient adaptées à mon PC).
J’ai même rajouté des données dans le fichier en entrée et cela fonctionne.

Je vais m’inspirer de ce script pour mes besoins dans mon travail :
- Un fichier en entrée
- L’automate lit chaque ligne de ce fichier et utilise les données en naviguant dans une application.

Dans cette application, l’automate :
- Traite des formulaires HTML ( input, select, checkbox, .. )
- Clic sur les boutons de validation.
- Temporise le temps qu’il faut tant que la page n’est pas chargée.
- . . .


Une question :
Dans l’action ‘trouver image’, pour le champ ‘Image à chercher’ il y a > t_fjur[fjur] <
Tu peux expliciter ?


Stéphane

Re: Exemple de script : Mise à jour dans une appli

Posted: 22 May 2015, 08:45
by francois
Bonjour,

t_fjur[fjur]
t_fjur est un tableau de variables.
fjur est la 'forme juridique' contenue dans le fichier en entrée.

J'ai isolé dans ce script les endroits où l'on traite ces 2 notions :

Déclarer et remplir t_fjur :

Code: Select all

var t_fjur = new Array(); // les  images des différentes formes juridiques prévues dans l'application.

t_fjur["SA"] =rep_actiona + "\\" + appli + "\\" + "img" + "\\" + "p24_fjur_SA.jpg";
t_fjur['EURL'] =rep_actiona + "\\" + appli + "\\" + "img" + "\\" + "p24_fjur_EURL.jpg";
t_fjur['SCI'] =rep_actiona + "\\" + appli + "\\" + "img" + "\\" + "p24_fjur_SCI.jpg";
t_fjur['SARL'] =rep_actiona + "\\" + appli + "\\" + "img" + "\\" + "p24_fjur_SARL.jpg";
t_fjur['GFA'] =rep_actiona + "\\" + appli + "\\" + "img" + "\\" + "p24_fjur_GFA.jpg";
récupérer le nombre d'occurences de t_fjur
la propriété 'length' ne fonctionne pas avec les tableaux associatifs d'où ce qui suit

Code: Select all

var nb_fjurs = 0;
for (var key in t_fjur){if (t_fjur.hasOwnProperty(key)) nb_fjurs++;};
Le fichier en entrée : siren /forme juridique / nombre d'employés
Exemple de contenu

272100017;SA;53
272200015;SARL;467
272500018;EURL;382
273000018;SA;50
273400010;SA;40
274000017;GFA;4

Code: Select all

var fich_in = new File();
fich_in_chemin_complet= rep_fichier_IN + "\\" + nom_fichier_in
fich_in.open(fich_in_chemin_complet,File.ReadOnly| File.Text);
au_km = fich_in.readText();
fin_ligne =String.fromCharCode(10);
t_ligne =au_km.split(fin_ligne);
nb_arts_in= t_ligne.length;

On va maintenant traiter en boucle toutes les occurences du tableau t_ligne :

Code: Select all

pos_1=t_ligne[ctr_fichier_in].indexOf(";",0)
pos_2=t_ligne[ctr_fichier_in].indexOf(";",pos_1+1)

siren= t_ligne[ctr_fichier_in].substr(0,pos_1)
    fjur= t_ligne[ctr_fichier_in].substr(pos_1+1,pos_2-pos_1-1)
nb_employes= t_ligne[ctr_fichier_in].substr(pos_2+1)


Prévoir le cas où la forme juridique figurant dans le fichier n'est pas prévue dans l'application.
Voir dans le script de démo l'action 'Verification de la validité formelle des données'

Instruction essentielle : case t_fjur[fjur] === undefined :



On va donc chercher la forme juridique dans le menu avec option (contenant toutes les formes juridiques prévues dans l'application).
D'où l'action 'Trouver image'
et la valeur t_fjur[fjur] pour la zone 'image à chercher'

2 cas possibles :
Il trouve ==> L'automate va CLIQUER sur la zone trouvée
Il trouve pas : message + Execution.stop()



En cas d'évolution des 'formes juridiques' figurant dans l'appli ( en plus ou en moins)
Pas grand chose à faire,
Il suffit d'enlever ou d'ajouter une occurence dans la table t_fjur.




Actiona est vraiment épatant.
J'ai écrit une dizaine de scripts qui tous tournent plusieurs heures chacun.
Depuis la version 3.7, pas un seul plantage.


Bon, c'est vrai,
je mets pas toujours les ";" en fin de ligne (un coup de google et on voit que c'est pas obligatoire)
Je ne déclare pas toujours mes variables ( et même jamais dans un script comportant moins d'une dizaine de variables)

En réalité je ne connais pas vraiment le javascript (ou plus exactement L'ECMA (cf doc. Actiona))
Par contre, j'ai lu avec attention la doc. concernant actiona : "wiki.actiona.tools/doku.php?id=en:start".
Cela convient pour écrire du code ... qui fonctionne.


Francois

Re: Exemple de script : Mise à jour dans une appli

Posted: 29 Apr 2016, 10:32
by Didier
Bonjour à tous
Pardonnez mon intrusion dans ce post très bien fait et clair sur le traitement des fichiers
c'est pourquoi j'interviens ici. Je débute sur Actiona et j'ai un souci simple mais que je n'arrive pas à résoudre en ECMA
Comment récupérer dans un répertoire donné et connu le nom du fichier le plus récent de ce répertoire.
Ce nom de fichier le plus récent servira de variable pour l'uploader dans une application via script Actionaz
j'ai le code en JS mais il ne fonctionne pas avec actionaz, problème de syntaxe surement mais je tourne en rond depuis quelques semaines

Merci de votre aide, vous qui semblez très aux faits des maniplulations de fichiers
Merci pour votre exemple qui me sera très utile dans un proche avenir

Cordialement

Re: Exemple de script : Mise à jour dans une appli

Posted: 02 May 2016, 10:21
by francois
Bonjour,

Je ne pense pas qu'on puisse faire ce que tu veux directement avec Actiona.

Solution sous Windows (Y a l’équivalent sous UNIX )
Comme Actiona est un logiciel ouvert, il permet d'appeler -notamment - une commande DOS qui répond à ton besoin
puis d'exploiter le résultat sous Actiona

1)
La commande bat ( appelée dans la 1ere ligne du script):

Code: Select all

dir D:\envirs\musique  /a-d /b /o-d > c:\temp\dernier_fichier.txt
Les paramètres de dir :
Le répertoire où on recherche le fichier le + récent.
/a-d : exclusion des répertoires dans la recherche.
/b : en sortie, uniquement le nom du fichier.
/o-d : trié du plus récent au plus ancien.
> c:\temp\dernier_fichier.txt : le fichier où on récupère le résultat.


2) puis dans actiona, on récupère la 1ere ligne de ce fichier.
En final, variable >dernier_fichier<


A adapter pour une 1ere utilisation :
1) Dans la 1ere ligne du script actiona : où est le fichier .bat :

Code: Select all

c://temp//zzz//recherche_dernier_fichier_cree.bat 
2) Dans le fichier . bat : dans quel répertoire on cherche :

Code: Select all

dir D:\envirs\musique  /a-d /b /o-d > c:\temp\dernier_fichier.txt

Cordialement

Re: Exemple de script : Mise à jour dans une appli

Posted: 03 May 2016, 14:20
by Didier
Bonjour

J'avais pensé à un contournement comme celui ci, mais vous avez devancé ma pensée et de fort belle manière, simple et efficace.
Après adaptation à mon environnement, ça marche finement et ouvre de grandes perspectives sur des traitements de fichiers.
Merci d'avoir consacré de votre temps et de vos neurones à ce problème qui me prenait la tête depuis trop longtemps.
Bien cordialement.

Re: Exemple de script :

Posted: 24 Mar 2017, 13:06
by jul34
Bonjour,
Je suis très intéressé par vos exemples ACTIONA
Je suis pret à payer par paypal ou autre 20€ de l'heure pour apprendre a faire un script actiona
pouvez vous me contacter?
cj340@free.fr
Merci
Claude

Re: Exemple de script : Mise à jour dans une appli

Posted: 18 Sep 2017, 08:58
by francois
Bonjour,

Je suis toujours autant épaté par le logiciel qu'a conçu et réalisé JMGR.

Comme j'ai également eu des demandes via la messagerie privée, je donne quelques précisions ( qui reprennent un message que j'avais mis sur ce forum).

J 'ai utilisé Actiona dans mon boulot pendant 3 ans ( utilisation de fichiers de données en entrée ET Consultation/Mise à jour d'applications d'internet )
Certains scripts tournaient quotidiennement plusieurs heures et traitaient des milliers de données.
Depuis la version 3.7.2, pas un seul plantage du à Actiona.

J'habite depuis peu à Clermont-Ferrand ( plus exactement à Chamalières), j'ai du temps libre ( à la retraite) et je propose d'apprendre à utiliser Actiona. D'un point de vue pratique, je peux recevoir ou me déplacer ( Clermont et communes alentour)


Quelques remarques :
- Ce logiciel est conçu pour des utilisateurs de niveaux différents (notamment sachant coder ou non)
- Pour qui ne saurait pas coder et voudrait apprendre, l'automatisation d'action permet de visualiser ce que l'on fait et rend l'apprentissage du codage plus concret voire même plus ludique.
- Dans le cadre professionnel, ce logiciel peut être un bel outil de rationalisation.


En dehors d'actiona, je peux enseigner les langages suivants : VBA, Javascript, PHP, SQL.
(J'ai utilisé ces langages dans le cadre de mon boulot de développeur)

Cordialement

Francois