---
title: "iTunes : Comment avoir un fichier Excel/Numbers des factures iTunes à partir des emails ? ( sous Mac )"
url: https://www.cyber-neurones.org/2018/03/itunes-comment-avoir-un-fichier-excel-numbers-des-factures-itunes-a-partir-des-emails/
date: 2018-03-14
modified: 2018-03-19
author: "Frederic"
description: "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..."
categories:
  - "Apple"
tags:
  - "bash"
  - "itunes"
word_count: 1151
---

# iTunes : Comment avoir un fichier Excel/Numbers des factures iTunes à partir des emails ? ( sous Mac )

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 ;) .**