iCal vers Excel

  • Créateur du sujet Créateur du sujet iNico88
  • Date de début Date de début
A

Anonyme

Invité
Bonjour à tous,

J'aimerais savoir s'il est possible de récupérer des données d'ical pour les mettres dans excel.
J'aimerais faire un tableau excel pour calculer mes fiches de payes en fonction de mes horaires de travail (matin, am, nuit...dimanche...etc)

ça fait plusieurs jour que bataille avec automator mais je n'arrive à aucun résultat...


Merci beaucoup
 
Essaye avec un AppleScript, comme par exemple iCal2csv, qui te permettra de disposer d'un fichier texte qu'Excel pourra importer...
 
J'ai essayé hier mais il ne m'a mis que des messages d'erreurs...
Comme le laisse penser le message d'erreur classique, si on n'a pas personnalisé un minimum et qu'on n'a pas dans iCal un calendrier nommé "Macel BL", c'est normal...

Il faut ouvrir Éditeur de scripts (dans /Applications/Utilitaires) puis ouvrir le script et le modifier. Personnellement, après avoir modifié le début comme suit, ça fonctionne sans souci particulier (et in French) :

--USER SETTINGS
--La date de fin par défaut. "current date" est recommendé!

set today to (current date) - 1

--Le nom du calendrier iCal concerné
set theCalendar to "Entourage"

--MODIFY BELOW AT YOUR OWN RISK :)

set theDate to short date string of (today)
set res to display dialog "Date de début :" default answer (theDate as text) with title "Extraction à partir de quelle date ?"
set startDate to date (text returned of the result)
set res to display dialog "Date de fin :" default answer (theDate as text) with title "Extraction jusqu'à quelle date ?"
set endDate to date (text returned of the result)

Alez ! Tous à vos crayons !!! ;)
 
Ouah désolé ! Comment j'y ai pas pens, je devais pas être réveiller...
Bon là j'ai pas le temps mais je me pencherai desuus un peu plus tard

Merci
 
Bon OK ça marche... seulement, il ne me sélectionne qu'une semaine et là j'ai un peu de mal à comprendre.
C'est le premier apple script que je vois merci de votre patience
 
il ne me sélectionne qu'une semaine et là j'ai un peu de mal à comprendre.
Qu'est ce que tu saisis comme date de début ? Et comme date de fin ? Dans les essais que j'ai faits, je n'avais pas de souci pour remonter jusqu'au 10/10/2010 (je ne suis pas vraiment sûr d'avoir essayé autre chose).

Bon, je viens de refaire un essai en mettant le 01/01/2010 comme date de début et ça roule aussi.
 
Qu'est ce que tu saisis comme date de début ? Et comme date de fin ? Dans les essais que j'ai faits, je n'avais pas de souci pour remonter jusqu'au 10/10/2010 (je ne suis pas vraiment sûr d'avoir essayé autre chose).

Bon, je viens de refaire un essai en mettant le 01/01/2010 comme date de début et ça roule aussi.
je met comme date du 1/10/2010 au 1/11/2010

et j'obtiens:

3-10-2010; Nuit; 8,0
1-10-2010; Après midi; 8,0
2-10-2010; Nuit; 8,0

Et Voici le code, peut être n'avons nous pas le même...
Bloc de code:
-- iCal2csv
-- by Marcel van Pinxteren
-- v1.0 3-11-2009
-- based on "iCalculate" by Emlyn Addison
--v1.1 03/12/2008
--Based on some fine code by Kim Hunter of bbs.applescript.net
--Neither of us is responsible for lost income and/or data using this script!

--USER SETTINGS

--The default end date for all calculations. "current date" is recommended!
set today to (current date) - 1

--The name of the iCal calendar to be used
set theCalendar to "Travail Nico"

--MODIFY BELOW AT YOUR OWN RISK :)

set theDate to short date string of (today)
set res to display dialog "Start date:" default answer (theDate) with title "Calculate from what start date?"
set startDate to date (text returned of the result)
set res to display dialog "End date:" default answer (theDate as text) with title "Calculate to what end date?"
set endDate to date (text returned of the result)

--Select events between start and end date
on selectEvents(theCalendar, startDate, endDate)
	tell application "iCal"
		tell calendar theCalendar
			set weekHours to every event whose (start date > startDate) and (start date < endDate)
		end tell
	end tell
	return weekHours
end selectEvents

set selectedEvents to selectEvents(theCalendar, startDate, endDate)

--Write event details to string
tell application "iCal"
	
	set secInHour to 3600
	set outputStr to ""
	set totalHours to 0
	
	repeat with evt in selectedEvents
		set duration to (end date of evt) - (start date of evt)
		set sDate to start date of evt as date
		set eDate to end date of evt as date
		set totalHours to totalHours + duration / secInHour
		set timeStr to (day of sDate & "-" & (month of sDate as integer) & "-" & year of sDate) as string
		set outputStr to outputStr & timeStr & "; " & summary of evt & "; " & duration / secInHour & "
"
	end repeat
end tell

--Display it in TextEdit
tell application "TextEdit" to activate
tell application "TextEdit"
	make new paragraph at end of text of document 1 with data outputStr
end tell


---------- Nouveau message ajouté à 16h03 ---------- Le message précédent a été envoyé à 15h57 ----------

Je crois avoir vu ce qu'il cloche... tous mes événements périodiques n'apparaissent pas c'est bizarre
 
Je crois avoir vu ce qu'il cloche... tous mes événements périodiques n'apparaissent pas c'est bizarre
C'est curieux, en effet. Chez moi ils sont bien présents avec une durée en heures supérieure à 24.

Ex : 12-7-2010; Vacances; 457,0

Pour le code, vu que tu n'as apparemment modifié que le nom du calendrier à traiter, il n'y a pas de différences fonctionnelles (je n'ai modifié que les textes des messages en plus du nom de calendrier). Tes événements sont bien dans ce calendrier là ?
 
Bonjour,
Juste mais sans savoir car je ne pratique pas Apple Script (à mon grand regret&#8230;) tu dis : "je met comme date du 1/10/2010 au 1/11/2010" peut-être faut-il indiquer 01/10/2010 au 01/11/2011.
Je sais c'est peut-être débile comme remarque et je m'en excuse par avance, toutefois, des fois tout cela ne tient qu'à un fil&#8230;
 
Bonjour,
Juste mais sans savoir car je ne pratique pas Apple Script (à mon grand regret&#8230;) tu dis : "je met comme date du 1/10/2010 au 1/11/2010" peut-être faut-il indiquer 01/10/2010 au 01/11/2011.
Je sais c'est peut-être débile comme remarque et je m'en excuse par avance, toutefois, des fois tout cela ne tient qu'à un fil&#8230;
Merci pour ta remarque mais j'ai essayé c'est pareil
Ce qui est étrange c'est que le script fonctionne bien pour les événements qui ne sont pas périodique