[Issue] [Base] Créer un fichier ics (format iCal)

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
ThierryM
Membre enthOOusiaste
Membre enthOOusiaste
Messages : 437
Inscription : 26 nov. 2006 11:29
Localisation : Les Corbières

[Issue] [Base] Créer un fichier ics (format iCal)

Message par ThierryM »

Bonjour à tous,
À partir d'une base de données, j'ai une table contenant des dates. J'aurais voulu intégrer ces dates dans mon calendrier Lightning dans Thunderbird. Or à ma connaissance (et après recherches), il n'existe pas (encore...) d'extension permettant de faire ce lien. Donc, il faut s'y coller.
Voici mon raisonnement : Lightning est capable d'importer des fichiers au format iCal (extension .ics) donc il "suffit" d'en fabriquer un...
Par contre, je ne maîtrise pas du tout. Je suis allé voir ici, pour le format de ce fichier ici : http://fr.wikipedia.org/wiki/ICalendar. Voici un bout d'explication extrait de Wikipédia.
Voilà un exemple simple (depuis la RFC 2445) d'un objet iCalendar qui définit un événement "Bastille Day Party" qui se déroule entre le 14 juillet 1997 à 17h00 (UTC) jusqu'au 15 juillet 1997 à 03h59m59s (UTC) :

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//hacksw/handcal//NONSGML v1.0//EN
BEGIN:VEVENT
DTSTART:19970714T170000Z
DTEND:19970715T035959Z
SUMMARY:Bastille Day Party
END:VEVENT
END:VCALENDAR
Récupérer les infos nécessaires peut se faire par le biais d'une requête (a priori pas trop de problèmes) mais comment écrire ces données pour constituer le fichier .ics ?
Merci pour vos éclairages,

Thierry

Edit du 24/08/2009 :
Je viens de faire une demande pour avoir la possibilité d'exporter en format ics ici : http://www.openoffice.org/issues/show_bug.cgi?id=104443 . Ceux qui sont intéressés peuvent aller voter...
Dernière modification par Bidouille le 24 août 2009 08:29, modifié 1 fois.
Raison : Balise et titre modifié en conséquence
LibreOffice Version: 7.6.2 / Linux Mint Mate Edition 21.2 / Pourquoi privilégier les formats de fichiers ouverts ?
ThierryM
Membre enthOOusiaste
Membre enthOOusiaste
Messages : 437
Inscription : 26 nov. 2006 11:29
Localisation : Les Corbières

Re: [Résolu] [Base] Créer un fichier ics (format iCal)

Message par ThierryM »

Je poste les différents résultats de mes recherches :
- Pour écrire un fichier ics, il faut lire la documentation sur ce format (qui est très pointu, avec une gestion fine du type de dates : événement, tâches à faire, privé, public, alarmes, gestion des fuseaux horaires ...) . J'ai trouvé une traduction française de Jean-Jacques Solari ici : http://abcdrfc.free.fr/rfc-vf/rfc2445.html
- Je me suis basé sur le livre "Programmation OpenOffice.org 3" de Laurent Godard et Bernard Marcelly p794, pour le code ci-dessous :
- Je donne un exemple pour 1 évènement simple (une date-heure de début et de fin et un titre,une description, une catégorie et un lieu). En rajoutant une boucle qui traite différentes lignes ou enregistrements d'une table (chacun correspondant à un "VEVENT", et avec des champs DTSTART,DTEND,SUMMARY au minimum) on pourrait exporter plusieurs évènements.
- Il peut être utile d'ouvrir un fichier .ics obtenu après avoir exporté un agenda à partir de Lightning et d'ouvrir ce fichier au format .ics avec un éditeur de texte pour analyser sa structure (c'est très instructif).

Code : Tout sélectionner

Sub CreerFichierICS(oEvent)
'Macro qui permet d'exporter des données sous forme de fichier au format .ics
' pour alimenter des calendriers gérant le format ics comme Lightning (format iCal)
'Pour les sprécifications ical allez voir ici la traduction française : http://abcdrfc.free.fr/rfc-vf/rfc2445.html
 'Récupération du chemin où sera enregistré le nouveau fichier "AgendaExportOOo" (au même endroit que le fichier contenant la macro)
 Dim URLfichierOuvert As String, nomFichierOuvert as String, URLfichier as String
 URLfichierOuvert=convertToURL(ThisComponent.URL)
 nomFichierOuvert=converttoURL(ThisComponent.Title)
 URLfichier=Left(URLfichierOuvert,len(URLfichierOuvert)+8-len(nomFichierOuvert))&"AgendaExportOOo.ics"

 'Création du fichier .ics
 ' D'après le code du livre "Programmation OpenOffice.org 3" de Laurent Godard et Bernard Marcelly p794
 Dim texteAgenda as Object, fichier as Object, flux as Object
 fichier= createUnoService("com.sun.star.ucb.SimpleFileAccess")
 texteAgenda = createUnoService("com.sun.star.io.TextOutputStream")
 On Error Goto fichierKO1
 If fichier.exists(URLfichier) then fichier.kill(URLfichier) 'supprime l'ancien fichier existant
 flux = fichier.openFileWrite(URLfichier)
 texteAgenda.OutputStream=flux
 texteAgenda.Encoding="utf-8" 'Info: le codage par défaut est tout de même utf-8 si cette ligne est absente
 texteAgenda.writeString("BEGIN:VCALENDAR" & chr(10)) 'Première ligne obligatoire
 texteAgenda.writeString("VERSION:1.0" & chr(10)) 'cette ligne est obligatoire d'après le standard
 texteAgenda.writeString("PRODID:-//Thierry//Export_OOo/FR" & chr(10)) 'même remarque que ci-dessus (en respectant des normes... que je n'ai pas suivies)
 '1 évènenement
 texteAgenda.writeString("BEGIN:VEVENT" & chr(10))
 texteAgenda.writeString("DTSTART:20090824T170000" & chr(10))
 texteAgenda.writeString("DTEND:20090824T180000" & chr(10))
 texteAgenda.writeString("SUMMARY:Test OOo" & chr(10))
 texteAgenda.writeString("CATEGORIES:École" & chr(10))
 texteAgenda.writeString("LOCATION:Lézignan Corbières" & chr(10))
 texteAgenda.writeString("DESCRIPTION:Ceci est un test.\nThierry" & chr(10)) 
 texteAgenda.writeString("END:VEVENT" & chr(10))
 texteAgenda.writeString("END:VCALENDAR")'Dernière ligne obigatoire
 flux.closeOutput
 texteAgenda.closeOutput
 On Error Goto 0
Exit Sub

 FichierKO1:
	Resume FichierKO3
 FichierKO3:
	On Error Resume Next
	flux.closeOutput
	texteAgenda.closeOutput
	on Error Goto 0
	Msgbox("Erreur d'écriture !",16)
End Sub
Cordialement,
Thierry

Edit à 19h15 :
Modification du code avec rajout des infos LOCATION, DESCRIPTION et CATEGORIES.
Dernière modification par ThierryM le 25 août 2009 16:04, modifié 1 fois.
LibreOffice Version: 7.6.2 / Linux Mint Mate Edition 21.2 / Pourquoi privilégier les formats de fichiers ouverts ?
ThierryM
Membre enthOOusiaste
Membre enthOOusiaste
Messages : 437
Inscription : 26 nov. 2006 11:29
Localisation : Les Corbières

Re: [Résolu][Issue] [Base] Créer un fichier ics (format iCal)

Message par ThierryM »

J'ai créé une feuille calc permettant de générer automatiquement un fichier .ics contenant les dates des vacances scolaires ainsi que les jours fériés. Le fichier est téléchargeable sur ce forum ici : http://user.services.openoffice.org/fr/ ... 26&t=18054
Cordialement,

Thierry

Remarque concernant la modération :
Mon premier post a été verrouillé par "abus de pouvoir" alors que j'avais courtoisement écrit à Bidouille pour lui indiquer que je n'étais pas d'accord avec son balisage car il me semblait que la balise [Résolu] était plus appropriée : j'ai trouvé la solution a mon problème et je suis venu la partager sur ce forum pour aider d'autres personnes. C'est vrai que j'ai fait un rapport mais c'est pour demander une nouvelle fonctionnalité et il ne s'agit pas à proprement parler d'un bug. Vu l'icône et les notices sur le balisage sur ce forum, la balise [Issue] est souvent synonyme de bug ou de problème, ce qui n'est pas vraiment le cas ici.
Voici sa réponse complète (quelle courtoisie, c'est bien la peine d'exiger des formules de politesse des contributeurs) :

ThierryM a écrit:
Bonjour Bidouille,
Je m'interroge sur le balisage de mon post : viewtopic.php?f=8&t=18022
En effet, il ne s'agit pas vraiment d'une "issue" qui indique à mon sens plutôt un bug. C'est vrai que j'ai fait une demande de nouvelle fonctionnalité (et que cela se fait via IssueZilla) mais j'ai trouvé une solution (qui vaut ce qu'elle vaut) à mon problème. Il me semble donc que la balise [Résolu] serait plus appropriée que [Issue].
Merci,

Thierry
Réponse de Bidouille :
Vous avez déclaré un rapport donc la balise est... [Issue]
Ma réponse du même acabit que Bidouille :
J'ai aussi résolu mon problème donc la balise ... [Résolu]
Il n'est écrit nulle part (du moins pas encore, ou je ne l'ai pas trouvé malgré mes recherches) que le fait de signaler un rapport impose de mettre cette balise.
De plus, je n'ai pas du tout fait une guerre d'édition en faisant sauter la balise de Bidouille mais celui-ci (qui d'autre ?) a quand même verrouillé au cas où...

Je trouve cette façon de faire assez peu respectueuse des contributeurs qui ne viennent pas que se servir. Même si modérer est fastidieux et fatiguant, je pense que ces usages sont démotivants. Merci de tenir compte de cette remarque.
LibreOffice Version: 7.6.2 / Linux Mint Mate Edition 21.2 / Pourquoi privilégier les formats de fichiers ouverts ?
Avatar de l’utilisateur
Bidouille
RespOOnsable forum
RespOOnsable forum
Messages : 12231
Inscription : 08 nov. 2005 16:23
Localisation : Caen, France

Re: [Issue] [Base] Créer un fichier ics (format iCal)

Message par Bidouille »

Bonjour,
ThierryM a écrit :Mon premier post a été verrouillé par "abus de pouvoir"
Vous y allez un peu fort. Un abus de pouvoir voudrait dire que je vous ai porté préjudice. Si vraiment, je faisais de telles choses, j'aurai déjà supprimé votre message car votre remarque n'a rien de technique et aurait dû être postée en Tribune libre.
ThierryM a écrit :C'est vrai que j'ai fait un rapport mais c'est pour demander une nouvelle fonctionnalité et il ne s'agit pas à proprement parler d'un bug.
Non, relisez d'autres sujets balisés [Issue], vous verrez que le terme est large. Je l'ai donc fait dans votre intérêt, histoire que votre demande soit appuyée par les votes d'autres membres. Je reçois parfois plus de 10 MP par jour. Poster des messages de modération prend du temps et les contester nous en fait donc perdre encore plus puisqu'il faut vous répondre. Si mes réponses sont sèches, je m'en excuse.
ThierryM a écrit :J'ai aussi résolu mon problème donc la balise ... [Résolu]
J'appelle cela un contournement.
ThierryM a écrit :Même si modérer est fastidieux et fatiguant, je pense que ces usages sont démotivants. Merci de tenir compte de cette remarque.
Nous avons régulièrement des suggestions d'amélioration et nous vous remercions de l'attention que vous y portez.

Comme vous le dites si bien : modérer est une tâche lourde. Maintenant, je vous invite à postuler comme modérateur. Vous pourrez ainsi nous faire profiter de votre vision en participant plus activement à la gestion de ce forum.

Cordialement
ThierryM
Membre enthOOusiaste
Membre enthOOusiaste
Messages : 437
Inscription : 26 nov. 2006 11:29
Localisation : Les Corbières

Re: [Issue] [Base] Créer un fichier ics (format iCal)

Message par ThierryM »

Bonjour Bidouille,
J'ai réagi à la façon dont vous avez procédé (verrouillage en catimini sans autre forme de procès, ce que l'on peut qualifier d' "abus de pouvoir"). Je ne tiens pas à polémiquer de façon stérile, mais pourquoi dire de but en blanc, sans argumenter :
ThierryM a écrit:J'ai aussi résolu mon problème donc la balise ... [Résolu]
J'appelle cela un contournement.
J'ai posté dans la section macro et API car j'étais à la recherche d'une macro au départ ou du moins d'un angle d'attaque, pensant qu'une personne avait déjà réalisé ce genre de macro. D'ailleurs j'ai trouvé une solution avec des macros (c'est pourquoi j'ai proposé du code), donc pourquoi dire que ce n'est pas le bon endroit et que la "Tribune libre" était plus appropriée ?
De plus, je cherche à chaque fois à faire profiter à la communauté de mes recherches (déclarer une issue si j'en découvre une ou proposer un fichier exemple en téléchargement) même si je n'ai pas obtenu de réponses sur ce forum car je sais que ça peut aider et que c'est le principe du libre. Comme je l'indique dans mon précédent post, j'ai posté dans la section "Projets" mon fichier qui permet de créer un fichier .ics sachant que ce type de fichier n'avait pas encore été réalisé.
Bref comme je l'ai dit à Oukcha, je pense que :
"Il serait bon d'être moins autiste et d'écouter les arguments des contributeurs qui remettent en cause des décisions qui peuvent être prises trop rapidement (cela peut se comprendre avec le nombre de messages à modérer). Accepter un compromis (ou reconnaître une erreur) avec la règle pure et dure (qui ne peut couvrir toutes les situations), serait plus constructif et améliorerait ce forum. Pourquoi ne pas mettre alors les 2 balises [Résolu][Issue] : là la règle aurait été respectée, non ?"
Je sais que la modération est difficile et qu'elle prend beaucoup de temps (que je n'ai malheureusement pas en dehors de certaines périodes), que l'on ne peut répondre à tous les messages privés (voie que j'ai utilisé au départ pour que cette discussion ne soit pas publique et que vous entendiez mes arguments, chose que vous n'avez pas faite), que l'on peut réagir des fois trop brusquement (j'en suis le parfait exemple avec mon précédent post) mais je vous demande de tenir davantage compte des avis des contributeurs même s'ils sont divergents, car tout le monde va dans le même sens c'est-à-dire développer une base de connaissance de qualité.
Pour moi l'incident est clos,
Cordialement et à bientôt,

Thierry
LibreOffice Version: 7.6.2 / Linux Mint Mate Edition 21.2 / Pourquoi privilégier les formats de fichiers ouverts ?