#26 Le 24/01/2022, à 12:00
- MicP
Re : [Résolu] calc, faire une feuille d'anniversaires
Justement, j'en reviens à l'instant.
Pour pouvoir faire fonctionner les macros LibreOffice Basic, il faut installer le paquetage libreoffice-java-common et JRE (Java Runtime Environment)
et j'avais pas prévu ça. Je trouve que ça fait vraiment trop lourd pour juste faire afficher une notification,
sans compter que je ne suis pas du tout habitué aux fonctionnalités du langage assez particulier de LibreOffice Macros Basic.
Je me rappelle avoir bien pendant un bon moment avant d'être arrivé à trouver les fonctions qui m'avaient permis de m'en sortir,
mais à l'époque le travail que j'avais à faire était sur quelques les feuilles d'un classeur, et là, c'était rentable de se casser la tête.
Mais je comprends maintenant pourquoi je n'y ai plus touché depuis le temps
Bien sûr, tout est faisable, mais je pense finalement que ça n'en vaut vraiment pas la peine juste pour faire ça,
d'autant que je ne sais même pas si le message lancé par le script pourra s'afficher si LibreOfficeCalc est lancé sans fenêtre (en fait je ne l'ai pas testé)
Le plus simple serait de faire un enregistrement de la feuille calc au format CSV
et de faire traiter le fichier CSV par un simple script bash (comme j'avais commencé de le faire)
depuis bash, le programme notify-send n'aura aucun problème pour faire afficher le message par l'interface graphique de l'environnement de bureau.
Bien sûr, s'il y a une application déjà installée gérant un carnet d'adresse,
autant se passer de la feuille calc et du script bash.
Dernière modification par MicP (Le 24/01/2022, à 21:17)
Hors ligne
#27 Le 24/01/2022, à 13:13
- lool_lauris
Hors ligne
#28 Le 25/01/2022, à 03:23
- MicP
Re : [Résolu] calc, faire une feuille d'anniversaires
Bonjour
Le contenu du script bash qui va lire le fichier CSV
et lancer la notification s'il y a des anniversaires à souhaiter :
#!/bin/bash
##########################################
# Utilise les commandes : date notify-send
##########################################
fichAnnivCSV="anniversaires.csv"
datePlusUnJour="$(date -d'today +1day' +'%d/%m/%Y')"
maReg='(.*)/(.*)/(.*)'
[[ $datePlusUnJour =~ $maReg ]]
jourPlusUn=${BASH_REMATCH[1]}
moisActu=${BASH_REMATCH[2]}
anneeActu=${BASH_REMATCH[3]}
maReg='(.*)/(.*)/(.*);(.*);(.*)'
extraitChamps() {
[[ $1 =~ $maReg ]]
jour=${BASH_REMATCH[1]}
mois=${BASH_REMATCH[2]}
annee=${BASH_REMATCH[3]}
prenom="${BASH_REMATCH[4]}"
nom="${BASH_REMATCH[5]}"
}
while read -r; do
extraitChamps "$REPLY"
if [[ $jourPlusUn$moisActu -eq $jour$mois ]]; then
age="$(printf '%3d\n' $((anneeActu-annee)))"
message="$message\n$age ans pour $prenom $nom"
fi
done < "$fichAnnivCSV"
[ "$message" != "" ] && notify-send "Anniversaires à souhaiter demain :" "$message"
EDIT :
Version 2 du script :
#!/bin/bash
##########################################
# Utilise les commandes : date notify-send
##########################################
#
# Premier paramètre donné : chemin absolu du fichier CSV
#
# Format des enregistrements contenus dans le fichier CSV :
# jj/mm/aaaa;Prénom(s);Nom
oldIFS=$IFS; IFS=";"
read -r jPlusUn moisActu anActu <<< $(date -d'today +1day' +'%d;%m;%Y')
while read maDate prenom nom; do
read -r jour mois annee <<< ${maDate//\//;}
if [[ $jPlusUn$moisActu -eq $jour$mois ]]; then
msg="$msg\n$((anActu-annee)) ans pour $prenom $nom"
fi
done < "$1"
IFS=oldIFS
if [ "$msg" != "" ]; then
notify-send "Anniversaires à souhaiter demain :" "$msg"
fi
Pour l'instant, j'ai laissé les paramètres de la notification par défaut,
mais on pourra y ajouter une icône, changer la couleur de fond,
changer la police de caractères et régler les temporisations, etc.
=======
Contenu du fichier de test "anniversaires.csv" :
il faudra adapter les dates si vous ne testez pas le script un 25 janvier
les dates sont enregistrées au format jj/mm/aaaa
26/01/2019;Marina;Foïs
29/11/2000;Pascal;Vincent
26/01/1990;Jean-Paul;Rouve
06/07/1999;Elise;Larnicol
26/01/2005;Pierre François;Martin-Laval
Dernière modification par MicP (Le 26/01/2022, à 11:36)
Hors ligne