- Modifié
Bonjour à tous.
À beaucoup d'occasions on nous demande un fichier Vcard pour transférer nos contacts. Ce format de fichier n'est pas trivial. voir https://fr.wikipedia.org/wiki/VCard.
J'ai cherché pour trouver sur internet quelque chose. Mais ne trouvant rien de satisfaisant j'ai créer moi-même un script qui fait le
job à partir d'un fichier CSV (voir les commentaires dans le script pour voir le format).
Je vous donne le code que vous pouvez coller dans votre éditeur préféré et le sauvegarder sous le nom Convertir_CSV_VCARD.
Il faut ensuite donner les droits d’exécution pour que ce script puisse fonctionner. Il faut utiliser la commande chmod :
moi@mamachine$ chmod 750 Convertir_CSV_VCARD
Le code
À beaucoup d'occasions on nous demande un fichier Vcard pour transférer nos contacts. Ce format de fichier n'est pas trivial. voir https://fr.wikipedia.org/wiki/VCard.
J'ai cherché pour trouver sur internet quelque chose. Mais ne trouvant rien de satisfaisant j'ai créer moi-même un script qui fait le
job à partir d'un fichier CSV (voir les commentaires dans le script pour voir le format).
Je vous donne le code que vous pouvez coller dans votre éditeur préféré et le sauvegarder sous le nom Convertir_CSV_VCARD.
Il faut ensuite donner les droits d’exécution pour que ce script puisse fonctionner. Il faut utiliser la commande chmod :
moi@mamachine$ chmod 750 Convertir_CSV_VCARD
Le code
#!/bin/bash
#==============================================================================
# Ce script a été développé par Jean-Louis NOGUEIRA (jl.nogueira@gmx.fr)
# Le 2 septembre 2020
# Si vous souhaitez le modifier, l'améliorer, le diffuser vous pouvez
# le faire sans aucune limite.
# Il n'est peut-être pas parfait.
# Je vous demanderais juste de préciser mon nom comme étant celui qui
# a produit ce script initial.
#==============================================================================
#------------------------------------------------------------------------------
# Entête du fichier cvs :
# firstname;name;NOTE;TELhome;TELcell;TELwork;road;code;town;TITLE;BDAY;MAIL
#
# firstname = Prénom
# name = Nom
# NOTE = Information quelconque
# TELhome = Téléphone domicile
# TELcell = Téléphone portable
# TELwork = Téléphone travail
# road = Rue
# code = Code postal
# town = Ville
# TITLE = Profession
# BDAY = Jour de naissance au format AAAAMMJJ
# MAIL = Adresse eMail
#
# Pour Créer automatiquement cette entête utiliser l'option -c MonFichier.csv
#
# moi@monOrdi$ Convertir_CSV_VCARD -c Monfichier.csv
#------------------------------------------------------------------------------
#------------------------------------------------------------------------------
# Structure du fichier vCard :
# C'est une suite de carte de visite de chaque personne dont le format de
# sortie sera le suivant :
#
# BEGIN:VCARD
# VERSION:4.0
# FN:Jean DUPONT
# TEL;TYPE=home,voice;VALUE=uri:tel:0123456789
# TEL;TYPE=cell,voice;VALUE=uri:tel:0612645678
# TEL;TYPE=work,voice;VALUE=uri:tel:0123456789
# ADR;TYPE=HOME;LABEL="1 rue Machin\n75000 PARIS"
# TITLE:Informaticien
# BDAY:19902501
# MAIL:jean.dupont@gmx.com
# NOTE:Informations divers
# END:VCARD
#
# Pour davantage de détais consulter le site :https://fr.wikipedia.org/wiki/VCard
#------------------------------------------------------------------------------
#------------------------------------
# Définition des CONSTANTES
#------------------------------------
# Les champs
SEPARATEUR=";"
CHAMP01=firstname
CHAMP02=name
CHAMP03=NOTE
CHAMP04=TELhome
CHAMP05=TELcell
CHAMP06=TELwork
CHAMP07=road
CHAMP08=code
CHAMP09=town
CHAMP10=TITLE
CHAMP11=BDAY
CHAMP12=MAIL
# Les noms des fichiers
CVS_FILE=$2
VCARD_FILE=$3
#----------------
# Afficher l'aide
#----------------
AfficherAide(){
echo -e "\
Ce script de conversion de fichier *.csv en vcard permet :
1) De créer l'entête du fichier CSV quivous permettra de réaliser (sous
libreoffice ou tout autre logiciel permettant de créer des fichiers excel)
facilement un fichier CSV en utilisant 'Sauvegarder sous' et choisir
format 'csv' avec comme séparateur le caractère ';'.
Dans ce cas il faut indiquer l'option -c suivi du nom du fichier que
vous voulez créer.
exemple : Convertir_CSV_VCARD -c monfichier.csv
2) Lorsque vous avez un fichier CSV conforme au format nécessaire défini
dans ce script, vous pouvez produire un fichier VCARD qui contient tous
les contacts issus de votre fichier CSV.
Pour cela il faut passer l'option -v suivi du nom du fichier CSV et de
votre fichier VCARD que vous voulez créer.
exemple : Convertir_CSV_VCARD -v monfichier.csv mon_fichier_vcard
3) L'option -h passé à ce script affiche l'aide.
Vous pouvez modifier ce programme à votre guise. Pour l'améliorer, l'adapter
ou pour tout autre raison.
"
}
#------------------------------------
# Création de l'entête du fichier CSV
#------------------------------------
function CreerEnteteCSV(){
echo "\
${CHAMP01}${SEPARATEUR}\
${CHAMP02}${SEPARATEUR}\
${CHAMP03}${SEPARATEUR}\
${CHAMP04}${SEPARATEUR}\
${CHAMP05}${SEPARATEUR}\
${CHAMP06}${SEPARATEUR}\
${CHAMP07}${SEPARATEUR}\
${CHAMP08}${SEPARATEUR}\
${CHAMP09}${SEPARATEUR}\
${CHAMP10}${SEPARATEUR}\
${CHAMP11}${SEPARATEUR}\
${CHAMP12}" > ${CVS_FILE}
}
#--------------------------
# Création du fichier VCARD
#--------------------------
function CreerVcard(){
n==1
while read line; do
if [ n == 1 ]
then
# pour sauter la ligne d'entête
n+=n+1
else
awk -F\; '{print \
"BEGIN:VCARD\n" \
"VERSION:4.0\n" \
"FN:"$1" "$2"\n" \
"TEL;TYPE=home,voice;VALUE=uri:tel:" $4 "\n" \
"TEL;TYPE=cell,voice;VALUE=uri:tel:" $5 "\n" \
"TEL;TYPE=work,voice;VALUE=uri:tel:" $6 "\n" \
"ADR;TYPE=HOME;LABEL="$7 " " $8 " " $9 "\n" \
"TITLE:"$10"\n" \
"BDAY:"$11"\n" \
"MAIL:"$12"\n" \
"NOTE:"$3"\n" \
"END:VCARD"}'
fi
done < ${CVS_FILE} > ${VCARD_FILE}
}
#--------------------
# Programme principal
#--------------------
case "$1" in
-c)
if [ $2 != "" ]; then
AfficherAide
else
CreerEnteteCSV
fi
;;
-v)
if [ $2 != "" ]; then
if [ $3 != "" ]; then
CreerVcard
else
AfficherAide
fi
else
AfficherAide
fi
;;
-h)
AfficherAide
;;
*)
AfficherAide
;;
esac