Après avoir demandé au support d’Amazon (très réactif sur Twitter) qui m’a envoyé vers ce lien : https://www.amazon.fr/gp/help/customer/display.html/ref=help_search_1-1?ie=UTF8&nodeId=202119330&qid=1521482623&sr=1-1 . Mais en fait ce lien n’est valable uniquement pour Amazon Business . Je me suis lancé dans la création d’un script …
Cette première version du script permet d’avoir (à 100%) :
- La date.
- La référence.
- Le prix.
En fait dans mon fichier CSV j’ai mis :
- compteur :compteur d’email : fiable à 100%
- Fichier : lien vers l’email : fiable à 100%
- De : envoyé par : fiable à 100% (c’est toujours confirmation-commande@amazon.fr )
- Date : date : fiable à 100%
- Amazon RTE : le but était la recherche de la balise « X-AMAZON-RTE-VERSION:«
- Commande : Référence de la commande : fiable à 100%
- Document : le but était la recherche de la balise « X-SES-Outgoing: » . Pour plus d’information voir ici : https://docs.aws.amazon.com/fr_fr/ses/latest/DeveloperGuide/receiving-email-notifications-examples.html
- Sequence : le but était la recherche de la balise « Feedback-ID:« .
- Amazon Client Host : le but était la recherche de la balise « X-AMAZON-CLIENT-HOST:« .
- Message ID : le but était la recherche de la balise « Message-ID:« .
- Prix : prix total de la commande : fiable à 100%
- Cumul : non fiable
- Version Total : version pour la découpage du total ( pour le debug )
- Version Commande : version pour la découpage du total ( pour le debug )
Il ne faut pas tenir compte de la colonne cumul, car dans le fichier on trouve plusieurs fois une même commande (répétition des emails).
Comment utiliser le script ? Il suffit de faire un répertoire à la racine et de copier le script à l’intérieur. Ensuite le script recherche tous les emails dans Mail (sou Mac) qui sont relatifs à une commande. J’aurais pu faire le script en Perl ou Python, mais je préfère ne pas imposer d’installation de ses deux langages.
Voici le script (sans indentation … à cause du copier/coller sous WordPress):
#!/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` if [ ! -n "$De" ] ; then De=`head -60 $item | grep "^From: " | awk -v FS="(<|>)" '{print $2}' | head -1` fi if [ ! -n "$De" ] ; then De=`head -60 $item | grep "^From: " | awk -v FS='("|")' '{print $2}' | head -1` fi NbLu=`expr $NbLu + 1` if [ "$De" == "confirmation-commande@amazon.fr" ] || [ "$De" == "confirmation-envoi@amazon.fr" ] then echo "Une nouvelle facture Amazon ? " Business=`head -200 $item | grep "^X-AMAZON-RTE-VERSION:" | awk '{print $2}' | head -1` if [ ! -n "$Business" ] ; then Business='?' fi ClientHost=`head -200 $item | grep "^X-AMAZON-CLIENT-HOST:" | awk '{print $2}' | head -1` if [ ! -n "$ClientHost" ] ; then ClientHost='?' fi MessageID=`head -100 $item | grep "Message-ID: " | awk '{print $2}' | head -1` Date=`head -150 $item | grep "^Date:" | awk '{print $2 " " $3 " " $4 " " $5 " " $6}' | head -1` Document=`head -50 $item | grep "X-SES-Outgoing:" | awk '{print $2}' | head -1` Sequence=`head -50 $item | grep "Feedback-ID:" | awk '{print $2}' | head -1` Commande=`head -100 $item | grep "^Commande" | awk '{print $2}' | head -1` CommandeVersion=1 if [ "$Commande" == "n=C2=B0" ] ; then Commande=`head -100 $item | grep "^Commande" | awk '{print "#" $3}' | head -1` CommandeVersion=2 fi if [ ! -n "$Commande" ] ; then Commande=`head -100 $item | grep "D=C3=A9tails de votre commande n=C2=B0" | awk '{print "#" $6}' | head -1` CommandeVersion=3 fi if [ ! -n "$Commande" ] ; then Commande=`head -100 $item | grep "tail de votre commande n" | awk '{print "#" $6}' | head -1` CommandeVersion=4 fi if [ ! -n "$Commande" ] ; then Commande=`head -100 $item | grep "Commande Num=C3=A9ro de commande :=09=09=09" | awk '{print $5}' | sed 's/=09/ /g' | awk '{print "#" $2}' | head -1` CommandeVersion=5 fi if [ ! -n "$Commande" ] ; then Commande=`head -100 $item | grep "N=C2=B0 de commande Amazon :" | awk '{print "#" $6}' | head -1` CommandeVersion=9 fi if [ ! -n "$Commande" ] ; then Commande=`head -100 $item | grep "Num=C3=A9ro de commande :=09=09=09" | awk '{print $4}' | sed 's/=09/ /g' | awk '{print "#" $2}' | head -1` CommandeVersion=6 fi if [ ! -n "$Commande" ] ; then Commande=`head -400 $item | grep "display-order-status" | sed 's/</ /g' | sed 's/>/ /g' | awk '{print "#" $3}' | head -1` CommandeVersion=7 fi if [ ! -n "$Commande" ] ; then Commande=`head -300 $item | grep "history/view.html" | sed 's/</ /g' | sed 's/>/ /g' | awk '{print "#" $3}' | head -1 ` CommandeVersion=8 fi Total=`head -200 $item | grep "Montant total pour cet envoi :" | awk '{print $7}' | sed 's/=/ /g' | awk '{print $1}' | sed 's/,/\./g' | head -1` TotalVersion=1 if [ ! -n "$Total" ] ; then Total=`head -200 $item | grep "Montant total de la commande :" | awk '{print $8}' | sed 's/=/ /g' | awk '{print $1}' | sed 's/,/\./g' | head -1` TotalVersion=2 fi if [ "$Total" == "EUR" ] ; then Total=`head -200 $item | grep "Montant total de la commande :" | awk '{print $7}' | sed 's/=/ /g' | awk '{print $1}' | sed 's/,/\./g' | head -1` TotalVersion=3 fi if [ ! -n "$Total" ] ; then Total=`head -200 $item | grep "Montant total pour cet envoi :" | awk '{print $8}' | sed 's/=/ /g' | awk '{print $1}' | sed 's/,/\./g' | head -1` TotalVersion=4 fi if [ ! -n "$Total" ] ; then Total=`head -200 $item | grep "Total TTC :" | awk '{print $8}' | sed 's/=/ /g' | awk '{print $1}' | sed 's/,/\./g' | head -1` TotalVersion=5 fi if [ ! -n "$Total" ] ; then Total=`head -200 $item | grep "Total TTC :" | awk '{print $5}' | sed 's/=/ /g' | awk '{print $1}' | sed 's/,/\./g' | head -1` TotalVersion=6 fi if [ ! -n "$Total" ] ; then Total=`head -200 $item | grep "^Total :" | awk '{print $4}' | sed 's/=/ /g' | awk '{print $1}' | sed 's/,/\./g' | head -1` TotalVersion=7 fi if [ ! -n "$Total" ] ; then Total=`head -200 $item | grep "Total TTC:" | awk '{print $4}' | sed 's/=/ /g' | awk '{print $1}' | sed 's/,/\./g' | head -1` TotalVersion=8 fi if [ ! -n "$Total" ] ; then Total=`head -200 $item | grep "Montant total pour cette commande :EUR" | awk '{print $6}' | sed 's/=/ /g' | awk '{print $1}' | sed 's/,/\./g' | head -1` TotalVersion=9 fi if [ ! -n "$Total" ] ; then Total=`head -200 $item | grep '<td width="98%"><span class="small">' | awk '{print $4}' | sed 's/</ /g' | awk '{print $1}' | sed 's/,/\./g' | head -1` TotalVersion=10 fi if [ ! -n "$Total" ] ; then Total=`head -200 $item | grep '<b>Montant total de la commande:' | awk '{print $7}' | sed 's/</ /g' | awk '{print $1}' | sed 's/,/\./g' | head -1` TotalVersion=11 fi if [ ! -n "$Total" ] ; then Total=`head -200 $item | grep "Total :" | awk '{print $4}' | sed 's/=/ /g' | awk '{print $1}' | sed 's/,/\./g' | head -1` TotalVersion=12 fi if [ -n "$Commande" ] ; then if [ -n "$Total" ] ; then Somme=`echo "scale=3; $Somme + $Total " | bc` fi if [ ! -n "$Total" ] ; then echo "Source (Total err) : $item " fi echo "$compteur | $De | $Date | $Business | $Commande | $Document | $Sequence | $ClientHost | $MessageID | $Total | $Somme " echo "$compteur ; $item ; $De ; $Date ; $Business ; $Commande ; $Document ; $Sequence ; $ClientHost ; $MessageID ; $Total ; $Somme ; $TotalVersion ; $CommandeVersion " >> facture_amazon.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 ; Fichier ; De ; Date ; Amazon RTE Version ; Commande ; Document ; Sequence ; Amazon Client Host ; Message ID ; Prix ; Cumul ; Version Total ; Version Commande " > facture_amazon.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 ."
J’ai testé ce script sur mes emails et cela a bien fonctionné. Le nom du fichier CSV est facture_amazon.csv et il doit être dans le répertoire crée. J’ai compté 12 syntaxes différentes sur les emails de 2006 à 2018.
Pour connaitre le nombre de commande il faut faire (les commandes sont en double, ou en triple … car il y a répétition des emails) :
cat facture_amazon.csv | awk '{print $15}' | grep -v "Document" | sort -n | uniq -c | wc -l
Sinon avec Number/Excel vous pouvez le faire aussi.
A suivre.
P.S.: Si vous utilisez ce script, j’accepte d’avoir une bière en retour ? .