Rien de plus facile ! Pour informations les emails sont stockés sous : ./Library/Mail/ et les factures d’Apple ( iTunes, et non pas Apple Store ) ne sont pas des PDF. Pour rappel, si vous voulez voir la source d’un email il suffit de faire Cmd+Alt+U, ou bien aller dans le menu Présentation > Message > Contenu orginal.
Donc c’est facile l’étape n°1, vous prenez le script suivant que vous copiez à la racine de votre utilisateur c.a.d. /Users/MonLogin/ . Dans un fichier cherche_facture_Apple.bash par exemple …
Voici donc le script :
#!/bin/bash # ARIAS Frederic # Version V1 compteur=1 erreur=0 Somme=0 NbLu=0 chercheFichier() { Rep="$1" for item in $Rep/* do [ -f "$item" ] ext="${item##*.}" if [ "$ext" = "emlx" ] ; then De=`head -50 $item | grep "^X-Envelope-From:" | awk '{print $2 }' | head -1` Sujet=`head -50 $item | grep "^Subject: " | awk '{print $2 }' | head -1` NbLu=`expr $NbLu + 1` #if [ "$De" == "do_not_reply@itunes.com" ] #then #echo "Sujet : '$Sujet'" #echo "Fichier : $item" #fi if [ "$Sujet" == "Votre" ] || [[ "$Sujet" =~ =\?ISO\-8859\-1\?Q\?Votre_re* ]] || [[ "$Sujet" =~ =\?ISO\-8859\-1\?Q\?Votre_facture* ]] || [[ "$Sujet" =~ =\?UTF\-8\?Q\?Votre_re* ]] then #echo "Une nouvelle facture Apple ? " if [ ! -n "$De" ] ; then De=`head -50 $item | grep "^From: " | awk -v FS="(<|>)" '{print $2}' | head -1` fi if [ ! -n "$De" ] ; then De=`head -50 $item | grep "^From: " | awk -v FS='("|")' '{print $2}' | head -1` fi Business=`head -50 $item | grep "^X-Business-Group:" | awk '{print $2}' | head -1` if [ ! -n "$Business" ] ; then Business=`head -50 $item | grep "^X_BUSINESS_GROUP:" | awk '{print $2}' | head -1` fi Date=`head -50 $item | grep "^Date:" | awk '{print $2 " " $3 " " $4 " " $5 " " $6}' | head -1` Visa=`head -100 $item | grep "^Visa ...." | awk '{print $3}' | head -1` if [ ! -n "$Visa" ] ; then Visa=`head -100 $item | grep "Factur=C3=A9 =C3=A0 :" | awk '{print $6}' | head -1` fi Commande=`head -100 $item | grep "^N=C2=B0 DE COMMANDE:" | awk '{print $4}' | head -1` if [ ! -n "$Commande" ] ; then Commande=`head -100 $item | grep "N=C2=B0 de commande :" | awk '{print $5}' | head -1` fi if [ ! -n "$Commande" ] ; then Commande=`head -100 $item | grep "Num=C3=A9ro de la commande :" | awk '{print $6}' | head -1` fi Document=`head -100 $item | grep "N=C2=B0 DE DOCUMENT:" | awk '{print $4}' | head -1` if [ ! -n "$Document" ] ; then Document=`head -100 $item | grep "N=C2=B0 DU DOCUMENT:" | awk '{print $4}' | head -1` fi Sequence=`head -100 $item | grep "^N=C2=B0 DE S=C3=89QUENCE:" | awk '{print $4}' | head -1` if [ ! -n "$Sequence" ] ; then Sequence=`head -100 $item | grep "^S=C3=89QUENCE N=C2=B0:" | awk '{print $3}' | head -1` fi if [ ! -n "$Sequence" ] ; then Sequence=`head -100 $item | grep "Num=C3=A9ro de s=C3=A9quence=C2=A0:" | awk '{print $4}' | head -1` fi DateDeLaFacture=`head -100 $item | grep "^DATE DE LA FACTURE:" | awk '{print $5 " " $6 " " $7}' | head -1` if [ ! -n "$DateDeLaFacture" ] ; then DateDeLaFacture=`head -100 $item | grep "Date de la facture:" | awk '{print $5 }' | head -1` fi if [ ! -n "$DateDeLaFacture" ] ; then DateDeLaFacture=`head -100 $item | grep "Date du re=C3=A7u :" | awk '{print $5 }' | head -1` fi Total=`head -100 $item | grep "^TOTAL:" | awk '{print $2}' | sed 's/=/ /g' | awk '{print $1}' | sed 's/,/\./g' | head -1` if [ ! -n "$Total" ] ; then Total=`head -100 $item | grep "Total de la commande :" | awk '{print $6}' | sed 's/=/ /g' | awk '{print $1}' | sed 's/,/\./g' | head -1` fi if [ -n "$Commande" ] ; then Somme=`echo "scale=3; $Somme + $Total " | bc` echo "$compteur | $De | $Date | $Business | $Commande | $Document | $Sequence | $Visa | $DateDeLaFacture | $Total | $Somme " echo "$compteur ; $De ; $Date ; $Business ; $Commande ; $Document ; $Sequence ; $Visa ; $DateDeLaFacture ; $Total ; $Somme " >> facture_apple.csv compteur=`expr $compteur + 1` fi if [ ! -n "$Commande" ] ; then #echo "Source : $item " erreur=`expr $erreur + 1` fi fi fi [ -d "$item" ] && chercheFichier "$item" done } echo "compteur ; De ; Date ; Business ; Commande ; Document ; Sequence ; Carte Visa ; DateDeLaFacture ; Prix ; Cumul " > facture_apple.csv START=$(date +%s); [ -d "./Library/Mail/" ] && chercheFichier "./Library/Mail/" END=$(date +%s); DIFF=`echo $((END-START)) | awk '{print int($1/60)":"int($1%60)}'` echo "Fin du script : Lu : $NbLu / Bon : $compteur / Mauvais : $erreur / Temps : $DIFF ."
Désolé mais l’indexation du code a sauté … l’autre point c’est qu’il n’est pas très propre car je l’ai fait très rapidement. Désolé pour les puristes …
Ensuite vous ouvrez un terminal, et vous lancer le bash : ./cherche_facture_Apple.bash. Le résultat est dans la racine : facture_apple.csv. C’est un fichier CSV, le séparateur est un point virgule.
J’ai fait un test et le programme découpe bien les emails de 2012, 2013, 2014, 2015, 2016, 2017, 2018.
Ensuite il faut penser à prendre des kleneex quand on regarde la somme totale … au passable vous avez la possibilité de voir les performances du disque dur avec le nombre d’email lu et le temps total du script.
Frédéric.
P.S.: Si vous utilisez ce programme, j’accepte d’avoir une bière en retour 😉 .