apple script pour iCal

ambrine

Membre expert
Club iGen
18 Novembre 2000
1 106
46
56
Arles
Bonjour,

je voudrais faire un script pour agréger des données d’événements iCal, mais je n’y connais rien...

Avez-vous l’âme charitable pour m’aider ? :)
 
Bonsoir

Peux-tu être plus précis : que souhaites-tu agréger exactement ? Sur quels événements ?

Plus tu es précis, mieux ce sera

Cordialement
Nicolas
 
Bonsoir Nicolas,

merci pour votre intérêt !

Je crée des événements journaliers pour mes fabrications dans un calendrier. Je voudrais pouvoir connaitre entre 2 dates ce que j’ai fabriqué d’une liste qui se trouvera dans le script ou dans un fichier externe.
Je voudrais que le script signale les erreurs dans l’orthographe de mes fabrications et sinon qu’il compte la production du jour par variété et type.
Je fabrique des glaces et des sorbets et un évènement se compose comme suit:

1 caramel 7+5
1 chocolat 9+0
1 amande 7+4

ou bien

1 caramel 7+5 1 chocolat 9+0 1 amande 7+4

le 1er chiffre concerne les bacs qui vont en vitrine, le second concerne les litres que les gens emmènent à la maison, et le “+” est juste un séparateur visuel.

Dans un fichier texte (ou tableur), qui portera un nom en fonction des dates choisies, on trouvera quelque chose comme :
chocolat 85 bacs 36 litres en 15 journée de fabrication pour 16 tournées
caramel 62 bacs 35 litres en 13 journée de fabrication pour 13 tournées
myrtille 63 bacs 27 litres en 12 journée de fabrication pour 14 tournées etc

et pour le fichier des erreurs :

le 13/08/2024 shocolat n’est pas un parfum valide
le 27/05/2024 vanille n’a pas da quantité initiale etc

Voilà en gros ce que j’aimerais pouvoir faire, est-ce que cela vous semble réalisable ?
 
Bonsoir,

Pour extraire les événements de ical cela me semble réalisable.

Par contre il faudrait savoir:
1 - le nom du calendrier dans lequel sont ces événements ?
2 - Dans quel "champs" sont les infos à récupérer ? : dans le nom de l'événement (le premier champs intitulé "Nouvel événement") , ou dans les notes de l'événement (Champs en bas intitulé "Ajouter des notes") ou les deux ?

On peux alors extraire ces éléments dans un fichier texte sur le bureau.

Le traitement des données récupérées pourra se faire ensuite. le fichier pouvant s'ouvrir dans un tableur comme Numbers ou Excel. A la fin il enregistre un fichier "les evenements.txt" sur le bureau, une ligne par événement.

Je te joins un script pour essai
Au lancement le script te demande le nom du calendrier, puis la date du premier jour à extraire, puis le nombre de jours.

pour utiliser ce script:
Ouvrir l’application “Editeur de script” qui est dans Application—>Utilitaires
Choisir le bouton en bas à gauche “Nouveau document”, dans la fenêtre qui s’ouvre faire un copier-coller du script.

Il suffira de cliquer sur le bouton "triangle play" en haut à droite “Exécuter” pour lancer ce script.

Bloc de code:
set lecal to display dialog "Entrer le nom du calendrier :" default answer "Personnel"
set lecal to text returned of result
set ladate to display dialog "Entrer la date de début :" default answer "JJ/MM/AAAA"
set ladate to text returned of result
set lejour to date ladate
set fin to lejour + (1 * days)
set nbjour to display dialog "Entrer le nombre de jours :" default answer "1"
set nbjour to text returned of result
set lefich to ""
tell application "Calendar"
    tell calendar lecal
      
        repeat with i from 1 to nbjour
          
            set theEventList to (every event whose (start date > lejour and end date < fin))
          
            set nbevent to count of theEventList
            repeat with j from 1 to nbevent
                set a to summary of item j of theEventList
                --set a to a as string
                set b to description of item j of theEventList
                --set b to b as string
              
                if b = missing value then set b to "---"
              
                set c to start date of item j of theEventList
                --set c to c as string
                set lefich to lefich & c & tab & a & tab & b & return
              
            end repeat
            set lejour to lejour + (1 * days)
            set fin to lejour + (1 * days)
        end repeat
        display dialog lefich
    end tell
end tell

tell application "Finder"
    set lelog to open for access ((path to desktop folder as text) & "les evenements.txt") as text with write permission
    write lefich & return to lelog starting at eof
    close access lelog
end tell
 
  • J’aime
Réactions: Powerdom
Bonsoir,
quel rapidité pour un premier jet !! Je le testerais dès que possible, merci beaucoup pour vos efforts :)
 
Bonjour,

un nouveau script pour les tests, il fait la même chose mais a été optimisé et est beaucoup plus rapide.
j'attends ton retour, et surtout, la structure de tes données pour regarder s'il est possible de traiter ces données pour les quantités et l'orthographe.
Bloc de code:
set lecal to display dialog "Entrer le nom du calendrier :" default answer "Personnel"
set lecal to text returned of result
set ladate to display dialog "Entrer la date de début :" default answer "JJ/MM/AAAA"
set ladate to text returned of result
set lejour to date ladate

set nbjour to display dialog "Entrer le nombre de jours :" default answer "1"
set nbjour to text returned of result
set fin to lejour + (nbjour * days)
set lefich to ""
tell application "Calendar"
    tell calendar lecal
        
        set theEventList to (every event whose (start date > lejour and end date < fin))
        
        set nbevent to count of theEventList
        repeat with j from 1 to nbevent
            set a to summary of item j of theEventList
            set b to description of item j of theEventList
            
            if b = missing value then set b to "---"
            set c to start date of item j of theEventList
            
            if c is not "" then
                set lefich to lefich & c & tab & a & tab & b & return
            end if
        end repeat
        
    end tell
end tell

tell application "Finder"
    set lelog to open for access ((path to desktop folder as text) & "les evenements.txt") as text with write permission
    write lefich to lelog starting at eof
    close access lelog
end tell
 
Bonsoir,
je viens de faire le premier essai directement avec votre seconde mouture, je vous joints le fichier obtenu.
C’est pas mal, reste à concaténer les parfums ensembles. Le script prend aussi les évènements qui ne sont pas des journées de fabrication.
Il y a des dates mélangées, je suppose donc que les événements sont triés dans iCal au moment de l’affichage.

MacGé ne veut pas de fichier .txt :(

Bloc de code:
jeudi 21 mars 2024 à 00:00:00    1 pêche 7+2 1 fraise 7+3 1 myrtille 9+0    ---
vendredi 22 mars 2024 à 00:00:00    1 caramel 8+4 1 chocolat 7+4    ---
mardi 26 mars 2024 à 00:00:00    1 gingembre 8+5 1 praline 6+4    ---
vendredi 29 mars 2024 à 00:00:00    1 malaga 8+5 1 chocolat 7+5    ---
jeudi 28 mars 2024 à 00:00:00    1 vanille 7+5 1 fadoli 9+0    ---
lundi 1 avril 2024 à 00:00:00    1 citron 8+5    ---
vendredi 5 avril 2024 à 13:30:00    Livraison 3 bouteilles de gaz Midi Gaz (Peut-être entre 12 et 14h, mais probablement avant)    ---
vendredi 5 avril 2024 à 00:00:00    1 cerise 5+3 1 abricot 8+0 1 poire 4+3    ---
jeudi 4 avril 2024 à 00:00:00    1 réglisse 7+5 1 amande 7+5    ---
lundi 8 avril 2024 à 00:00:00    2 cacao 13+6    ---
mardi 9 avril 2024 à 00:00:00    1 café 7+5 1 chocolat 7+5    ---
jeudi 11 avril 2024 à 00:00:00    1 vanille 8+3 1 praline 8+0    ---
vendredi 12 avril 2024 à 00:00:00    1 pêche 8+0 1 prune 11+2 1 figue 7+0    ---
lundi 15 avril 2024 à 00:00:00    1 orange 8+2    ---
mardi 16 avril 2024 à 00:00:00    1 zeste de lune 8+3 1 fadoli 9+1    ---
jeudi 18 avril 2024 à 00:00:00    1 gingembre 8+3 1 cannelle 9+1    ---
vendredi 19 avril 2024 à 00:00:00    1 poire 6+3 1 fraise 6+3 1 cerise 4+4    ---
lundi 22 avril 2024 à 00:00:00    1 thym 7+5 1 amande 8+4    ---
mardi 23 avril 2024 à 00:00:00    1 caramel 10+0 1 chocolat 9+0    ---
jeudi 25 avril 2024 à 00:00:00    1 vanille 7+5 1 thym 9+1    ---
vendredi 26 avril 2024 à 00:00:00    1 citron    ---
lundi 29 avril 2024 à 00:00:00    1 pêche 8+0 1 figue 6+3 1 myrtille 7+3    ---
mercredi 1 mai 2024 à 00:00:00    1 café 9+0
1 praline 8+0    ---
jeudi 2 mai 2024 à 00:00:00    1 malaga 7+6 1 chocolat 8+    ---
vendredi 3 mai 2024 à 00:00:00    1 vanille xxx 1 fadoli yyyy    ---
lundi 6 mai 2024 à 00:00:00    1 poire 6+3 1 cerise 6+0 1 prune 8+0    ---
mercredi 8 mai 2024 à 00:00:00    1 réglisse 9+0 1 fadoli 8+3    ---
jeudi 9 mai 2024 à 00:00:00    1 vanille 7+5 1 gingembre 8+3 1 chocolat 8+3    ---
vendredi 10 mai 2024 à 00:00:00    1 vanille 7+5
1 café 8+3
1 amande 10+0    ---
mardi 14 mai 2024 à 00:00:00    1 pêche 8+0 1 Cerise 5+3 1 figue 6+2    ---
lundi 13 mai 2024 à 00:00:00    1 abricot 7+4 1 fraise 6+4 1 myrtille 7+3    ---
vendredi 17 mai 2024 à 00:00:00    1 réglisse 9+0 1 praline 7+2    ---
jeudi 16 mai 2024 à 00:00:00    1 gingembre 9+0 1 chocolat 9+0    ---
lundi 20 mai 2024 à 00:00:00    1 vanille 7+5
1 fadoli 8+3    ---
mardi 21 mai 2024 à 00:00:00    1 fraise 6+3
1 poire 6+2
1 citron 7+2    ---
jeudi 23 mai 2024 à 00:00:00    1 vanille 7+5 1 cannelle 7+4 1 amande 8+3    ---
lundi 27 mai 2024 à 00:00:00    1 caramel 8+3 2 praline 13+6    ---
mercredi 29 mai 2024 à 00:00:00    1 vanille 8+3 1 caramel 8+3 1 amande 8+3    ---
vendredi 24 mai 2024 à 00:00:00    1 cardamome 7+5 1 café 9+1 1 chocolat 8+3    ---
vendredi 31 mai 2024 à 00:00:00    Pulpe de cerise 6*4,25 + 1,6    ---
jeudi 30 mai 2024 à 00:00:00    1 pêche 7+1 1 abricot 8+1 1 orange 5+5 1 myrtille 9+0    ---
mardi 4 juin 2024 à 00:00:00    1 vanille 7+5 1 amande 10+0 1 chocolat 8+3    ---
lundi 3 juin 2024 à 00:00:00    2 cacao 13+6    ---
jeudi 6 juin 2024 à 00:00:00    1 gingembre 8+3 1 malaga 10+0 1 fadoli 8+3    ---
vendredi 7 juin 2024 à 00:00:00    1 poire 6+2 1 cerise 6+0 1 prune 8+2 1 figue 8+5    ---
lundi 10 juin 2024 à 00:00:00    1 fraise 8+1 1 pêche 7+1 1 poire 6+2 1 citron 7+4    ---
mardi 11 juin 2024 à 00:00:00    1 vanille 7+5
1 gingembre 8+3
1 fadoli 8+3    ---
mercredi 26 juin 2024 à 08:15:00    Contrôle balance - Sud Pesage    ---
jeudi 13 juin 2024 à 00:00:00    1 café 8+3 1 caramel 8+3 1 chocolat 8+3    ---
vendredi 14 juin 2024 à 00:00:00    1 myrtille 7+3
1 cerise 6+0
1 OCB 10+5    ---
lundi 17 juin 2024 à 00:00:00    2 praline 14+4 1 fadoli 8+3    ---
mardi 18 juin 2024 à 00:00:00    1 vanille 7+5 1 gingembre 8+3  fadoli 8+3    ---
 
Bonsoir,
Le script prend aussi les évènements qui ne sont pas des journées de fabrication
Le script prend tous les jours ou il y a un événements de renseigné !

Pour certaine date qui ne sont pas dans l'ordre, je ne comprend pas pourquoi ! Le script ne tri absolument pas, il se contente d'ajouter les événements comme il se présente dans ical !
Pour vérifier tu pourrais essayé avec le script précédant qui lui liste les jours, jour par jour, pour voir si cela se produit également.

Pour concaténer les parfums ensemble,
soit tu le fais dans excel ou numbers
Soit on essai avec le script mais là il y a du boulot, et il faudrait avoir la liste de tous les parfums possibles.

ensuite je n'ai pas compris comment tu retrouves les quantités
exemple: le 30/05/2024 tu as : jeudi 30 mai 2024 à 00:00:00 1 pêche 7+1 1 abricot 8+1 1 orange 5+5 1 myrtille 9+0
Tu traduits çà comment ? cela donnerai ? peut être:

Pêche 7 bacs xx litres (ou est renseigné les litres ?)
abricot 8 bacs xx litres
orange 5 bacs xx litres ( que veut dire le 5+5)
myrtille 9 bacs xx litres ( que veut dire 9+0 alors que les autre parfums c'est X+1 ou X+5 ?)

bref, désolé je ne comprend pas !
 
Bonjour,
je te joins un nouveau script qui:
Comme le précédent il te crée le fichiers texte "Les evenements.txt" sur le bureau puis il crée un fichier "quantite.txt" sur le bureau.
Ce fichier "quantite.txt" contient la liste de tous les parfums contenus dans ma liste et qui sont dans les évènements, avec les différentes valeurs qui suivent (que je ne sais pas interpréter !)

Ma liste est :
"caramel", "fraise", "myrtille", "chocolat", "pêche", "gingembre", "praline", "malaga", "fadoli", "citron", "cerise", "abricot", "poire", "réglisse", "amande", "cacao", "café", "prune", "figue", "orange", "zeste de lune", "cannelle", "thym", "cardamone", "pulpe de cerise"
Il faudra certainement la compléter

Dis moi si cela te convient et quelles modifications il faudrait envisager.

Bloc de code:
set lecal to display dialog "Entrer le nom du calendrier :" default answer "Personnel"
set lecal to text returned of result
set ladate to display dialog "Entrer la date de début :" default answer "JJ/MM/AAAA"
set ladate to text returned of result
set lejour to date ladate

set nbjour to display dialog "Entrer le nombre de jours :" default answer "1"
set nbjour to text returned of result
set fin to lejour + (nbjour * days)
set lefich to ""
tell application "Calendar"
    tell calendar lecal
     
        set theEventList to (every event whose (start date > lejour and end date < fin))
     
        set nbevent to count of theEventList
        repeat with j from 1 to nbevent
            set a to summary of item j of theEventList
            set c to start date of item j of theEventList
         
            if c is not "" then
                set lefich to lefich & c & tab & a & " " & return
            end if
        end repeat
    end tell
end tell

tell application "Finder"
    set lelog to open for access ((path to desktop folder as text) & "les evenements.txt") as text with write permission
    write lefich to lelog starting at eof
    close access lelog
end tell

set vartoto to lefich

set lesparfums to {"caramel", "fraise", "myrtille", "chocolat", "pêche", "gingembre", "praline", "malaga", "fadoli", "citron", "cerise", "abricot", "poire", "réglisse", "amande", "cacao", "café", "prune", "figue", "orange", "zeste de lune", "cannelle", "thym", "cardamone", "pulpe de cerise"}

set nbparfums to count of lesparfums

set quantite to ""
repeat with nb from 1 to nbparfums
    set cherche to item nb of lesparfums
    set resultat to cherche & " = "
    set AppleScript's text item delimiters to cherche
 
    set nb to count text item of vartoto
 
    if nb > 1 then
        repeat with i from 2 to nb
            set trouve to text item i of vartoto
            set AppleScript's text item delimiters to " "
            set ajout to text item 2 of trouve
            set resultat to resultat & ajout
            if i is not nb then set resultat to resultat & " et "
            set AppleScript's text item delimiters to cherche
        end repeat
     
        set quantite to quantite & resultat & return
    end if
end repeat

tell application "Finder"
    set lelog to open for access ((path to desktop folder as text) & "Quantites.txt") as text with write permission
    write quantite to lelog starting at eof
    close access lelog
end tell
 
Dernière édition:
Bonsoir zeltron,

tu es un besogneux !! Merci !

Alors voilà quelques explications:
Le nombre devant le parfum indique combien de dose j’ai fabriqué ce jour là, il est rarement supérieur à 1.
Les 2 nombres après le parfum indiquent, pour le premier, combien de bacs (destiné à la vente en cornet) j’ai fait, et pour le second, combien de litres (destiné à la vente à emporter). Il arrive régulièrement que ce second nombre soit à zéro (car j’ai suffisamment de stock).
Le but est d’additionner les bacs entre eux et les litres entre eux pour chaque parfum.

Je fabrique aussi mes pulpes de fruits servant à faire les sorbets, donc c’est un produit intermédiaire. La présentation de cet événement est un peu différente de celle des glaces:
pulpe de cerise 6*4,25 + 1,6
je décode, 6 bacs de cerise de 4,25kg plus un bac de seulement 1,6kg; les premiers sont des bacs complets qui me permettront de faire une dose de sorbet cerise, le bac “incomplet” est généralement associé à un autre bac incomplet (ou complet).

dans la deuxième mouture du fichier “les événements” il y a des jours en doubles, le 30 mai 2024 et d’autres.

ci-dessous le résultat du fichier Quantités
caramel = 8+4 et 10+0 et 8+3 et 8+3 et 8+3 et 8+3 fraise = 7+3 et 6+3 et 6+4 et 6+3 1 et 8+1 myrtille = 9+0 et 7+3 et 7+3 et 9+0 et 7+3 1 chocolat = 7+4 et 7+5 et 7+5 et 9+0 et 8+ et 8+3 et 9+0 et 8+3 et 8+3 et 8+3 et 8+3 pêche = 7+2 et 8+0 et 8+0 et 8+0 et 7+1 et 7+1 gingembre = 8+5 et 8+3 et 8+3 et 9+0 et 8+3 et 8+3 1 et 8+3 praline = 6+4 et 8+0 et 8+0 et 7+2 et 13+6 et 14+4 malaga = 8+5 et 7+6 et 10+0 fadoli = 9+0 et 9+1 et yyyy et 8+3 et 8+3 et 8+3 et 8+3 et 8+3 et 8+3 citron = 8+5 et lundi et 7+2 et 7+4 cerise = 5+3 et 4+4 et 6+0 et 5+3 et 6*4,25 et 6+0 et 6+0 1 abricot = 8+0 et 7+4 et 8+1 poire = 4+3 et 6+3 et 6+3 et 6+2 1 et 6+2 et 6+2 réglisse = 7+5 et 9+0 et 9+0 amande = 7+5 et 8+4 et 10+0 et 8+3 et 8+3 et 10+0 cacao = 13+6 et 13+6 café = 7+5 et 9+0 1 et 8+3 1 et 9+1 et 8+3 et 8+3 prune = 11+2 et 8+0 et 8+2 figue = 7+0 et 6+3 et 6+2 et 8+5 orange = 8+2 et 5+5 zeste de lune = 8+3 cannelle = 9+1 et 7+4 thym = 7+5 et 9+1 pulpe de cerise = 6*4,25

fichier “les événements"
jeudi 21 mars 2024 à 00:00:00 1 pêche 7+2 1 fraise 7+3 1 myrtille 9+0 --- vendredi 22 mars 2024 à 00:00:00 1 caramel 8+4 1 chocolat 7+4 --- mardi 26 mars 2024 à 00:00:00 1 gingembre 8+5 1 praline 6+4 --- vendredi 29 mars 2024 à 00:00:00 1 malaga 8+5 1 chocolat 7+5 --- jeudi 28 mars 2024 à 00:00:00 1 vanille 7+5 1 fadoli 9+0 --- lundi 1 avril 2024 à 00:00:00 1 citron 8+5 --- vendredi 5 avril 2024 à 13:30:00 Livraison 3 bouteilles de gaz Midi Gaz (Peut-être entre 12 et 14h, mais probablement avant) --- vendredi 5 avril 2024 à 00:00:00 1 cerise 5+3 1 abricot 8+0 1 poire 4+3 --- jeudi 4 avril 2024 à 00:00:00 1 réglisse 7+5 1 amande 7+5 --- lundi 8 avril 2024 à 00:00:00 2 cacao 13+6 --- mardi 9 avril 2024 à 00:00:00 1 café 7+5 1 chocolat 7+5 --- jeudi 11 avril 2024 à 00:00:00 1 vanille 8+3 1 praline 8+0 --- vendredi 12 avril 2024 à 00:00:00 1 pêche 8+0 1 prune 11+2 1 figue 7+0 --- lundi 15 avril 2024 à 00:00:00 1 orange 8+2 --- mardi 16 avril 2024 à 00:00:00 1 zeste de lune 8+3 1 fadoli 9+1 --- jeudi 18 avril 2024 à 00:00:00 1 gingembre 8+3 1 cannelle 9+1 --- vendredi 19 avril 2024 à 00:00:00 1 poire 6+3 1 fraise 6+3 1 cerise 4+4 --- lundi 22 avril 2024 à 00:00:00 1 thym 7+5 1 amande 8+4 --- mardi 23 avril 2024 à 00:00:00 1 caramel 10+0 1 chocolat 9+0 --- jeudi 25 avril 2024 à 00:00:00 1 vanille 7+5 1 thym 9+1 --- vendredi 26 avril 2024 à 00:00:00 1 citron --- lundi 29 avril 2024 à 00:00:00 1 pêche 8+0 1 figue 6+3 1 myrtille 7+3 --- mercredi 1 mai 2024 à 00:00:00 1 café 9+0 1 praline 8+0 --- jeudi 2 mai 2024 à 00:00:00 1 malaga 7+6 1 chocolat 8+ --- vendredi 3 mai 2024 à 00:00:00 1 vanille xxx 1 fadoli yyyy --- lundi 6 mai 2024 à 00:00:00 1 poire 6+3 1 cerise 6+0 1 prune 8+0 --- mercredi 8 mai 2024 à 00:00:00 1 réglisse 9+0 1 fadoli 8+3 --- jeudi 9 mai 2024 à 00:00:00 1 vanille 7+5 1 gingembre 8+3 1 chocolat 8+3 --- vendredi 10 mai 2024 à 00:00:00 1 vanille 7+5 1 café 8+3 1 amande 10+0 --- mardi 14 mai 2024 à 00:00:00 1 pêche 8+0 1 Cerise 5+3 1 figue 6+2 --- lundi 13 mai 2024 à 00:00:00 1 abricot 7+4 1 fraise 6+4 1 myrtille 7+3 --- vendredi 17 mai 2024 à 00:00:00 1 réglisse 9+0 1 praline 7+2 --- jeudi 16 mai 2024 à 00:00:00 1 gingembre 9+0 1 chocolat 9+0 --- lundi 20 mai 2024 à 00:00:00 1 vanille 7+5 1 fadoli 8+3 --- mardi 21 mai 2024 à 00:00:00 1 fraise 6+3 1 poire 6+2 1 citron 7+2 --- jeudi 23 mai 2024 à 00:00:00 1 vanille 7+5 1 cannelle 7+4 1 amande 8+3 --- lundi 27 mai 2024 à 00:00:00 1 caramel 8+3 2 praline 13+6 --- mercredi 29 mai 2024 à 00:00:00 1 vanille 8+3 1 caramel 8+3 1 amande 8+3 --- vendredi 24 mai 2024 à 00:00:00 1 cardamome 7+5 1 café 9+1 1 chocolat 8+3 --- vendredi 31 mai 2024 à 00:00:00 Pulpe de cerise 6*4,25 + 1,6 --- jeudi 30 mai 2024 à 00:00:00 1 pêche 7+1 1 abricot 8+1 1 orange 5+5 1 myrtille 9+0 --- mardi 4 juin 2024 à 00:00:00 1 vanille 7+5 1 amande 10+0 1 chocolat 8+3 --- lundi 3 juin 2024 à 00:00:00 2 cacao 13+6 --- jeudi 6 juin 2024 à 00:00:00 1 gingembre 8+3 1 malaga 10+0 1 fadoli 8+3 --- vendredi 7 juin 2024 à 00:00:00 1 poire 6+2 1 cerise 6+0 1 prune 8+2 1 figue 8+5 --- lundi 10 juin 2024 à 00:00:00 1 fraise 8+1 1 pêche 7+1 1 poire 6+2 1 citron 7+4 --- mardi 11 juin 2024 à 00:00:00 1 vanille 7+5 1 gingembre 8+3 1 fadoli 8+3 --- mercredi 26 juin 2024 à 08:15:00 Contrôle balance - Sud Pesage --- jeudi 13 juin 2024 à 00:00:00 1 café 8+3 1 caramel 8+3 1 chocolat 8+3 --- vendredi 14 juin 2024 à 00:00:00 1 myrtille 7+3 1 cerise 6+0 1 OCB 10+5 --- lundi 17 juin 2024 à 00:00:00 2 praline 14+4 1 fadoli 8+3 --- mardi 18 juin 2024 à 00:00:00 1 vanille 7+5 1 gingembre 8+3 fadoli 8+3 --- jeudi 21 mars 2024 à 00:00:00 1 pêche 7+2 1 fraise 7+3 1 myrtille 9+0 vendredi 22 mars 2024 à 00:00:00 1 caramel 8+4 1 chocolat 7+4 mardi 26 mars 2024 à 00:00:00 1 gingembre 8+5 1 praline 6+4 vendredi 29 mars 2024 à 00:00:00 1 malaga 8+5 1 chocolat 7+5 jeudi 28 mars 2024 à 00:00:00 1 vanille 7+5 1 fadoli 9+0 lundi 1 avril 2024 à 00:00:00 1 citron 8+5 vendredi 5 avril 2024 à 13:30:00 Livraison 3 bouteilles de gaz Midi Gaz (Peut-être entre 12 et 14h, mais probablement avant) vendredi 5 avril 2024 à 00:00:00 1 cerise 5+3 1 abricot 8+0 1 poire 4+3 jeudi 4 avril 2024 à 00:00:00 1 réglisse 7+5 1 amande 7+5 lundi 8 avril 2024 à 00:00:00 2 cacao 13+6 mardi 9 avril 2024 à 00:00:00 1 café 7+5 1 chocolat 7+5 jeudi 11 avril 2024 à 00:00:00 1 vanille 8+3 1 praline 8+0 vendredi 12 avril 2024 à 00:00:00 1 pêche 8+0 1 prune 11+2 1 figue 7+0 lundi 15 avril 2024 à 00:00:00 1 orange 8+2 mardi 16 avril 2024 à 00:00:00 1 zeste de lune 8+3 1 fadoli 9+1 jeudi 18 avril 2024 à 00:00:00 1 gingembre 8+3 1 cannelle 9+1 vendredi 19 avril 2024 à 00:00:00 1 poire 6+3 1 fraise 6+3 1 cerise 4+4 lundi 22 avril 2024 à 00:00:00 1 thym 7+5 1 amande 8+4 mardi 23 avril 2024 à 00:00:00 1 caramel 10+0 1 chocolat 9+0 jeudi 25 avril 2024 à 00:00:00 1 vanille 7+5 1 thym 9+1 vendredi 26 avril 2024 à 00:00:00 1 citron lundi 29 avril 2024 à 00:00:00 1 pêche 8+0 1 figue 6+3 1 myrtille 7+3 mercredi 1 mai 2024 à 00:00:00 1 café 9+0 1 praline 8+0 jeudi 2 mai 2024 à 00:00:00 1 malaga 7+6 1 chocolat 8+ vendredi 3 mai 2024 à 00:00:00 1 vanille xxx 1 fadoli yyyy lundi 6 mai 2024 à 00:00:00 1 poire 6+3 1 cerise 6+0 1 prune 8+0 mercredi 8 mai 2024 à 00:00:00 1 réglisse 9+0 1 fadoli 8+3 jeudi 9 mai 2024 à 00:00:00 1 vanille 7+5 1 gingembre 8+3 1 chocolat 8+3 vendredi 10 mai 2024 à 00:00:00 1 vanille 7+5 1 café 8+3 1 amande 10+0 mardi 14 mai 2024 à 00:00:00 1 pêche 8+0 1 Cerise 5+3 1 figue 6+2 lundi 13 mai 2024 à 00:00:00 1 abricot 7+4 1 fraise 6+4 1 myrtille 7+3 vendredi 17 mai 2024 à 00:00:00 1 réglisse 9+0 1 praline 7+2 jeudi 16 mai 2024 à 00:00:00 1 gingembre 9+0 1 chocolat 9+0 lundi 20 mai 2024 à 00:00:00 1 vanille 7+5 1 fadoli 8+3 mardi 21 mai 2024 à 00:00:00 1 fraise 6+3 1 poire 6+2 1 citron 7+2 jeudi 23 mai 2024 à 00:00:00 1 vanille 7+5 1 cannelle 7+4 1 amande 8+3 lundi 27 mai 2024 à 00:00:00 1 caramel 8+3 2 praline 13+6 mercredi 29 mai 2024 à 00:00:00 1 vanille 8+3 1 caramel 8+3 1 amande 8+3 vendredi 24 mai 2024 à 00:00:00 1 cardamome 7+5 1 café 9+1 1 chocolat 8+3 vendredi 31 mai 2024 à 00:00:00 Pulpe de cerise 6*4,25 + 1,6 jeudi 30 mai 2024 à 00:00:00 1 pêche 7+1 1 abricot 8+1 1 orange 5+5 1 myrtille 9+0 mardi 4 juin 2024 à 00:00:00 1 vanille 7+5 1 amande 10+0 1 chocolat 8+3 lundi 3 juin 2024 à 00:00:00 2 cacao 13+6 jeudi 6 juin 2024 à 00:00:00 1 gingembre 8+3 1 malaga 10+0 1 fadoli 8+3 vendredi 7 juin 2024 à 00:00:00 1 poire 6+2 1 cerise 6+0 1 prune 8+2 1 figue 8+5 lundi 10 juin 2024 à 00:00:00 1 fraise 8+1 1 pêche 7+1 1 poire 6+2 1 citron 7+4 mardi 11 juin 2024 à 00:00:00 1 vanille 7+5 1 gingembre 8+3 1 fadoli 8+3 mercredi 26 juin 2024 à 08:15:00 Contrôle balance - Sud Pesage jeudi 13 juin 2024 à 00:00:00 1 café 8+3 1 caramel 8+3 1 chocolat 8+3 vendredi 14 juin 2024 à 00:00:00 1 myrtille 7+3 1 cerise 6+0 1 OCB 10+5 lundi 17 juin 2024 à 00:00:00 2 praline 14+4 1 fadoli 8+3 mardi 18 juin 2024 à 00:00:00 1 vanille 7+5 1 gingembre 8+3 fadoli 8+3 jeudi 20 juin 2024 à 00:00:00 1 café 8+3 1 caramel 8+3 1 chocolat 8+3


Le résultat a obtenir serait:
caramel 6 tournées 50 bacs 16 litres
fraise 5 tournées 33 bacs 14 litres
etc
 
Dernière édition:
Bonjour,

Suite à tes explications je te mets une nouvelle version du script.

Elle te crée un fichier « événements.txt » et un fichier « quantités.txt » donnant les infos que tu demandes.
Attention si des fichiers avec ce même nom existent sur le bureau leur contenu est effacé et remplacé . Donc si tu veux garder une ancienne version il faut les renommer ou les déplacer.

A la fin du traitement il mets un message comme quoi il a terminé.

Dis moi si cela te va ou si des modifications sont à faire.

Bloc de code:
set lecal to display dialog "Entrer le nom du calendrier :" default answer "Personnel"
set lecal to text returned of result
set ladate to display dialog "Entrer la date de début :" default answer "JJ/MM/AAAA"
set ladate to text returned of result
set lejour to date ladate

set nbjour to display dialog "Entrer le nombre de jours :" default answer "1"
set nbjour to text returned of result
set fin to lejour + (nbjour * days)
set lefich to ""
tell application "Calendar"
    tell calendar lecal
        
        set theEventList to (every event whose (start date > lejour and end date < fin))
        
        set nbevent to count of theEventList
        repeat with j from 1 to nbevent
            set a to summary of item j of theEventList
            set c to start date of item j of theEventList
            
            if c is not "" then
                set lefich to lefich & c & tab & a & " " & return
            end if
        end repeat
    end tell
end tell

tell application "Finder"
    set lelog to open for access ((path to desktop folder as text) & "les evenements.txt") as text with write permission
    set eof lelog to 0
    write lefich to lelog starting at eof
    close access lelog
end tell

set vartoto to lefich

set lesparfums to {"caramel", "fraise", "myrtille", "chocolat", "pêche", "gingembre", "praline", "malaga", "fadoli", "citron", "cerise", "abricot", "poire", "réglisse", "amande", "cacao", "café", "prune", "figue", "orange", "zeste de lune", "cannelle", "thym", "cardamome", "pulpe de cerise"}

set nbparfums to count of lesparfums

set quantite to ""
repeat with nb from 1 to nbparfums
    set cherche to item nb of lesparfums
    set resultat to cherche & " = "
    set tourne to 0
    set bac to 0
    set litre to 0
    set AppleScript's text item delimiters to cherche
    
    set nb to count text item of vartoto
    
    if nb > 1 then
        repeat with i from 2 to nb
            set trouve to text item i of vartoto
            set devant to text item (i - 1) of vartoto
            
            set nbdose to text -3 thru -1 of devant
            set AppleScript's text item delimiters to " "
            
            set ajout to text item 2 of trouve
            
            
            if "*" is in ajout then
                if nbdose is not number then
                    set avant to text -8 thru -1 of devant
                    if ":" is in avant then
                        set lafin to first paragraph of trouve
                        set AppleScript's text item delimiters to "*"
                        set nbbac to text item 1 of lafin
                        set lepoid to text item 2 of lafin
                        set quantite to quantite & cherche & " " & nbbac & " bacs de " & lepoid & " kg" & return
                        
                    end if
                end if
            else
                
                set tourne to tourne + 1
                set AppleScript's text item delimiters to "+"
                set bac to bac + (nbdose * (text item 1 of ajout))
                set litre to litre + (nbdose * (text item 2 of ajout))
            end if
            
            set AppleScript's text item delimiters to cherche
        end repeat
        if bac is not 0 then
            set quantite to quantite & cherche & "  " & tourne & " tournées " & bac & " bacs " & litre & " litres" & return
        end if
    end if
    
end repeat

tell application "Finder"
    set lelog to open for access ((path to desktop folder as text) & "Quantites.txt") as text with write permission
    set eof lelog to 0
    write quantite to lelog starting at eof
    close access lelog
end tell

tell application "Finder"
    activate
    (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell