Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#26 Le 24/01/2022, à 13: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 big_smile

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, à 22:17)

Hors ligne

#27 Le 24/01/2022, à 14:13

lool_lauris

Re : [Résolu] calc, faire une feuille d'anniversaires

smile


Soutenez le Libre => http://www.april.org/

Hors ligne

#28 Le 25/01/2022, à 04: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, à 12:36)

Hors ligne