[Python 2 &3] Initiation aux macros : envoi de courriel

Vos meilleures macros et portions de code sont publiées dans cette section.
Aucun support sur une question de programmation ici !

Modérateur : Vilains modOOs

Règles du forum
Aucune question dans cette section !
Celle-ci rassemble les meilleures macros et portions de code. Vous pouvez en revanche commenter ou argumenter le code exposé. Vous pouvez même remercier l'auteur (cela fait toujours plaisir) en indiquant par exemple dans quel cadre ou contexte vous en avez eu l'utilité.
Si vous avez à poster quelque chose, faites-le depuis la section Macros et API et demandez à un modérateur de l'y déplacer.
orveo
Membre OOrganisé
Membre OOrganisé
Messages : 86
Inscription : 25 août 2007 18:45
Localisation : paris est (disney)

[Python 2 &3] Initiation aux macros : envoi de courriel

Message par orveo »

Bonsoir à tous,
Suite à ce fil http://user.services.openoffice.org/fr/ ... =8&t=23309 où je trouvais qu'OpenOffice avait des lacunes pour envoyer un courriel, je me suis donc plongé dans Python.

Plutôt que de vous faire une traduction des différents "how to" en Anglais, je préférè composer le mien. Comme ça il n'y aura pas de fautes de traduction.
Je vais faire 3 fils différents afin de faire court et pas trop ennuyeux.
Je terminerai par une petite application qui envoie des mails en fonction de plusieurs critères.

Le but de ce fil n'est pas de vous apprendre à programmer en Python, mais de vous servir de l'immense bibliothèque que possède Python.
Nota : les infos qui suivent ont été vérifiées sous linux ubuntu version 10.4. Pour Microsoft Windows, les infos sont données sans aucune vérification.
Commençons donc.
Depuis la version 3, OpenOffice ne crée plus de répertoire pour mettre les fichiers Python. Il faut donc commencer par créer un répertoire dans le dossier script.
Il faut donc suivre ce chemin :/home/user/.openoffice.org/3/user/Scripts/python
.openoffice étant un dossier caché, il faut faire CTRL+H pour afficher les répertoires cachés et continuer de remonter l'arborescence.
Une fois dans le dossier script faites Menu : Fichier > Créer un dossier ou Maj+CTRL+N que vous appellerez "python" en minuscule.
Pour les windowsiens suivre cette arborescence pour créer le repertoire:
C:\Documents and Settings\<username>\Application Data\OpenOffice.org\3\user\Scripts\python
une fois ce répertoire créé, mettez dedans les 2 fichiers fournis en pièce jointe : HelloWorld.py et TableSample.py

Ensuite ouvrez un document Traitement de texte Writer et faites :
Menu : Outils > Macros > Gérer les macros > Python... > apparait ensuite une fenêtre Macros Python.
Cliquer sur le plus (+) de "Mes macros", vous devez voir apparaitre les 2 fichiers que vous avez copiés dans le répertoire python.
Cliquez sur le plus (+) du fichier "HelloWorld" : apparait dans la fenêtre de droite la fonction "HelloWorldPython".
Vous devriez être dans la même situation que la pièce jointe "python2.png"
Selectionnez la fonction "HelloWorldPython" et cliquer sur le bouton "Exécuter".
Hello World (in Python) s’écrit dans le document Writer.
BRAVO vous venez d’exécuter votre premier macro en python.

Faites de même avec le 2e fichier "TableSample.py"
Cliquer sur la fonction "createTable" et cliquez sur Exécuter normalement un nouveau fichier Writer s'ouvre
et apparait un tableau dans ce fichier

Voila vous avez réussi à lancer une 2e macro.
Voici la fin de ce premier tutoriel sur les macros python
Dans le prochain fil on fait la même chose mais avec Calc.


Voici les 3 fichiers dans un fichier zip afin que les fichiers est la même durée de vie que ce fil
macro_python.zip
(106.05 Kio) Téléchargé 1869 fois
Cordialement
orveo
Dernière modification par orveo le 27 août 2014 13:51, modifié 3 fois.
libreoffice 4.2.4.2 sous linux ubuntu 14.04
Pierre-Yves Samyn
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 11276
Inscription : 02 mai 2006 10:42

Re: [Python] iniation aux macros python 1ere partie

Message par Pierre-Yves Samyn »

Bonjour
orveo a écrit :plutot que de vous faire une traduction des differents how to en anglais je prefère composer le mien
Merci pour cette initiative :super:

Sur la forme : je me demande si ce fil ne serait pas mieux placé dans la rubrique Tutoriels (ou Suprême de code) ?
Je pense que les modérateurs auront leur avis sur la question et indiqueront la marche à suivre...

Sur le fond :
orveo a écrit :Depuis la version 3 ,openoffice ne crée plus de repertoire pour mettre les fichiers python
Si mais pour windows XP par exemple cela se trouve dans :

Code : Tout sélectionner

C:\Program Files\OpenOffice.org 3\Basis\share\Scripts\python
pour HelloWorld.py et Capitalise.py et, pour TableSample.py dans :

Code : Tout sélectionner

C:\Program Files\OpenOffice.org 3\Basis\share\Scripts\python\pythonSamples
orveo a écrit :finalement j'ai mis les 3 fichiers dans un fichier zip afin que les fichiers est la meme durée de vie que ce fil
Oui, c'est le mode de fonctionnement demandé :)

Merci
orveo
Membre OOrganisé
Membre OOrganisé
Messages : 86
Inscription : 25 août 2007 18:45
Localisation : paris est (disney)

Re: [Python] iniation aux macros python 1ere partie

Message par orveo »

bonjour
merci d'apporter vos precisions pour les utilisateurs de windows car pour moi c'est un lointain souvenir.4 ans deja .

concernant les fichiers exemples ,ils sont aussi installés avec openoffice 3 sous linux mais dans un coin bien caché.ensuite quand on les trouve il ya des problemes de permission pour les ouvrir .
voila pourquoi je prefère les fournir plutot que d'expliquer leur deplacement.

pour ceux qui veulent continuer à suivre cette initiation ,les windowsiens devront installé python et un editeur de code style notepad++ que vous trouverez sur n'importe quel site de telechargement de shareware et freeware
pour les utilisateurs de linux ,ubuntu notament tout est deja inclu dans la distributuion avec GEDIT sous gnome qui suffira largement.
orveo
libreoffice 4.2.4.2 sous linux ubuntu 14.04
orveo
Membre OOrganisé
Membre OOrganisé
Messages : 86
Inscription : 25 août 2007 18:45
Localisation : paris est (disney)

2e partie : Calc

Message par orveo »

Bonjour,
Comme vous avez pu le constater, les seuls exemples fournis ne concernent que Writer et comme mon intérêt se concentre sur Calc, je suis resté frustré.
Il a donc fallu chercher plus loin pour s'apercevoir que les exemples sont rares et qu'il n'existait pas de "helloworld" pour Calc.
j'ai quand même trouvé un exemple qui m'a aidé à modifier le helloword pour writer qui est devenu "bonjour le monde"

donc comme dans le premier message prendre le fichier fourni en pièce jointe le mettre dans le dossier python (voir 1ere partie )
ouvrir ensuite un nouveau fichier Calc
faire ensuite Menu : Outils > Macros > Gérer les macros > Python...
la fenêtre apparait. Développer "Mes macros", apparait le fichier "bonjourLeMonde"
cliquer sur le plus(+) pour voir la fonction bonjour calc. Faire Executer et ainsi s’écrit dans la celulle F5 "bonjourLeMonde".

Voila pour la manipulation de calc par python. Avouez que c'est très facile.
Afin d'aller plus loin je vous joins le seul fichier en Français que j'ai trouvé et nous le devons à Mr Jean Trantecisse que je voudrais remercier .
Il s'agit d'un tirage de tombola pour une école. Il est composé d'un fichier Calc et de sa macro en python.
Commencez par placer le fichier tombola.py dans le répertoire python d'OpenOffice .
Ouvrez ensuite le fichier Calc "tombola.ods". Exécuter la macro tombola ( menu : Outils > Macros > Gérer les macros > Python...)
Vous n’avez rien vu, alors allez sur la page tirage effacer la zone A1:C227 et recommencer.
Je vois que cela commence à vous intéresser, alors ouvrez le fichier tombola.py et vous trouverez tout ce qu'il vous faut pour manipuler un fichier Calc. c'est très très très bien commenté.

Voici la fin de cette deuxième partie.
Dans la troisième partie, nous verrons les solutions pour ouvrir un fichier python que vous trouverez sur internet et qui ne s'ouvrent pas dans OpenOffice
cordialement
orveo
Pièces jointes
init_python_part2.zip
(30.2 Kio) Téléchargé 1365 fois
libreoffice 4.2.4.2 sous linux ubuntu 14.04
orveo
Membre OOrganisé
Membre OOrganisé
Messages : 86
Inscription : 25 août 2007 18:45
Localisation : paris est (disney)

3 eme partie : envoi de courriel

Message par orveo »

Je vais changer l'ordre des explications par manque de temps

donc aujourd'hui j'offre une petite application qui permet d'envoyer des mels , email ou courriel.
Elle combine un dialog en Oobasic qui appelle un module python.
On part du principe que vous avez des adhérents et que vous voulez envoyer des mels soit à un seul adhérent ou bien après un filtre à tout une série d’adhérent.
Dans le zip, je fournis le classeur, le module python que vous devrez ranger au bon endroit et des fichiers servant de pièces jointes

N'oubliez pas de changer les paramètres :
-adresse mel des adhérents dans la feuille adhérents
-adresse expéditeur, serveur smtp et adresse de copie dans les modules basic "adherent" et "groupe"
-chemin des pièces jointes dans la feuille "message"

NOTA: python évolue nous en somme à python 2.6.5 et arrive bientôt python 3 qui ne garantira plus la compatibilité avec les anciens programmes donc si vous lisez ceci dans quelque mois il faudra surement adapter le module python.

faites en bon usage
cordialement
orveo
Pièces jointes
envoirMel.zip
(23.77 Kio) Téléchargé 1335 fois
libreoffice 4.2.4.2 sous linux ubuntu 14.04
orveo
Membre OOrganisé
Membre OOrganisé
Messages : 86
Inscription : 25 août 2007 18:45
Localisation : paris est (disney)

[Python3] Initiation aux macros : envoi de courriel MAJ

Message par orveo »

Bonjour le forum,

Je vais faire une mise à jour de mon précédent post sur l'envoie d'un courriel avec python 3.
Il sera donc necessaire pour certain de le lire ou relire :
https://forum.openoffice.org/fr/forum/v ... 15&t=24391
Comme je travaille avec LibreOffice 4+ les nouvelles fonctionnalités courriel d'apache OpenOffice ne sont pas utilisables.
Les informations qui suivent sont valables sous Ubuntu 14.04 et LibreOffice 4.2.4.2.
Les fichiers fournis en P.J.(sauf le fichier Calc) doivent être déposés dans le répertoire suivant :
/home/MyRep/.config/libreoffice/4/user/Scripts/python
Remplacez « MyRep » par le nom de votre répertoire personnel
Si le répertoire .config ne s'affiche , faire Ctrl+H
Si le répertoire python n'existe pas il faut le créer et l’écrire tout en minuscule.
Si lorsque vous faites Outils+Macros+Gerer les macros, vous ne voyez que LibreOffice basic il faut installer « libreoffice-script-provider-python » voir ce post ou un équivalent plus récent :
h**p://tmtlakmal.wordpress.com/2013/08/11/a-simple-python-macro-in-libreoffice-4-0/

Dans le fichier calc il faut adapter vos paramètres de connexions(dans la subroutine basic « messageGrouppe »).
Si vous êtes derrières une « box » de type free comme moi cela sera facile.
Pour un envoie via web-mail il faudra sûrement adapter et rajouter une commande login.(voir avec google)

Pour information je ne maîtrise pas du tout python j'ai seulement adapté un module que j'ai trouvé sur internet et ensuite modifié pour le faire tourner dans LO4. Le module original se trouve ici :
h**p://code.activestate.com/recipes/578150-sending-non-ascii-emails-from-python-3/

Si vous voulez adapter un module python voici une procedure que j'ai utilisé :
Télécharger un éditeur python tout simple comme idle sous ubuntu.
Eviter d'utiliser gedit car vous aurez des problèmes d'indentations (le décalage depuis le début de ligne )
adapter le module original à vos besoins et vérifier qu'il fonctionne avec IDLE.
Une fois qu'il fonctionne il faut adapter pour qu'il soit utilisable dans LO4.
Pour cela il faut que le programme principale du module python soit aussi dans une subroutine .
le programme principale commence à la ligne « if __name__ == '__main__': » et sera appelé dans le module basic par la commande :
oScript = oProvider.getScript("vnd.sun.star.script:EnvoieMelForum.py$parametre?language=Python&location=user")
EnvoieMelForum.py est le nom du programme python
parametre est le nom de la subroutine principale que vous appelez
« user » indique que vous utilisez votre répertoire personnel il existe aussi l'option « share » (voir avec google pour plus de detail).
Remplacer dans notre cas  "if __name__ == '__main__"': par « def parametre (): »

Dans le fichier fourni j'ai simplifié la fonction envoie de pièces jointes et d'image
Python3_Courriel_Forum.zip
module python + fichier calc +PJ
(163.58 Kio) Téléchargé 705 fois
ce sont des paramètres dans le fichier python.
Il suffit de reprendre le principe de la récupération des adresses adhérents pour ajouter un nombre de pièces jointes variables.
Voilà j’espère que ce tutoriel sera aussi utile que le précédent.
normalement il n'y a pas besoin de modifier le fichier python sauf si le port est different de 587.
Cordialement
Orveo

La modération vous a écrit: :alerte: Rappel : pas de question dans ce fil !

libreoffice 4.2.4.2 sous linux ubuntu 14.04
Répondre