Accéder aux rendez-vous, aux contacts, aux tâches d'outlook pour desktop ou ppc.

Contenu du snippet

le fichier html ci-dessous est l'interface de l'agenda. Il est basé sur les rendez-vous, les contacts, les tâches d'Outlook. Il pourrait servir sur un ordinateur de bureau ou sur un pocket Pc(après quelques adaptations modestes). Il s'agit que d'un début du programme à poursuivre
Il a besoin du fichier CasDate.JS (transmis dans la partie code) que l'on sauvegardera dans le même répertoire que le fichier html ci-dessous.

<html>
<HEAD>
<!-- Fichier Agenda.html -->
<script language="JavaScript" src="CasDate.js">
alert("Votre script externe ne peut pas être exécuté, vérifiez que l'attribut src = soit suivi de la localisation du fichier de script externe (entre parenthèses) ...");
</script>
</HEAD>
<body leftmargin="0" topmargin="0" text="#000000" >
<form name="FormAgenda" >
<FONT face="Arial, Verdana, Times" size="1">
<!-- OUVERTURE DU TABLEAU Lapage (TABLEAU INCLUANT LUI-MEME DES TABLEAUX)
//-->

<table summary="lapage" border="0" cellspacing="0" cellpadding="0" >
<!-- définitition de la largeur des 1ères cellules de ligne
//-->
<tr align="center">
<td valign="top" width="0%">
<!-- ici siégeait une image dans la colonne gauche -->
<!-- Ouverture colonne gauche (largeur en % par rapport à la 1ère cellule
//-->
<table summary="lacolonne1" width="0%" border="0" cellspacing="0" cellpadding="0">
<tr align="center">
<td></tr>
<!-- ici siégeait une ligne dans la colonne gauche
//-->

<select name="Quoi" size="5" onclick="AppuiQuoi(this)">
<option selected value="Rdv">Rdv</option>
<option value="Tac">Tac</option>
<option value="Qui">Qui</option>
<option value="Stop">Stop</option>
<option value="Voir">Voir</option>
</select>

<select name="Heure" size="11" onclick="AppuiHeure(this)">
<option selected value="08H40">0840</option>
<option value="09H20">0920</option>
<option value="10H00">1000</option>
<option value="10H40">1040</option>
<option value="11H15">1115</option>
<option value="14H30">1430</option>
<option value="15H15">1515</option>
<option value="16H00">1600</option>
<option value="16H45">1645</option>
<option value="17H30">1730</option>
<option value="18H15">1815</option>
</select>

<select name="APm" size="2" onclick="AppuiAPm(this)">
<option selected value="Mat">Am_</option>
<option value="Apm">Pm_</option>
</select>

</td>
</tr>

</table>

<br>
</td>
<!-- BORDURE entre les 2 premières colonnes
//-->
<td width="0"></td>
<!-- COLONNE CENTRALE
//-->
<td valign="top" width="23">
<table summary="lacolonne2" width="100%" border="0" cellspacing="0" cellpadding="0">
<tr align="center" valign="top">
<td><td>
<input name="LaBox" type="text" align= middle size="22" value="___31/12/1970 24:58___" readonly>
<input name="LaTete" type="text" align= middle size="21" value="Nom_Prenom_Date/H RdV" readonly>
<input name="Ligne1" type="text" align= middle size="21" value="Nom_Prenom_Date/H RdV" readonly>
<input name="Ligne2" type="text" align= middle size="21" value="Nom_Prenom_Date/H RdV" readonly>
<input name="Ligne3" type="text" align= middle size="21" value="Nom_Prenom_Date/H RdV" readonly>
<input name="Ligne4" type="text" align= middle size="21" value="Nom_Prenom_Date/H RdV" readonly>
<input name="Ligne5" type="text" align= middle size="21" value="Nom_Prenom_Date/H RdV" readonly>
<input name="Ligne6" type="text" align= middle size="21" value="Nom_Prenom_Date/H RdV" readonly>
<input name="Ligne7" type="text" align= middle size="21" value="Nom_Prenom_Date/H RdV" readonly>
<input name="Ligne8" type="text" align= middle size="21" value="Nom_Prenom_Date/H RdV" readonly>
<input name="Ligne9" type="text" align= middle size="21" value="Nom_Prenom_Date/H RdV" readonly>
<input name="Ligne10" type="text" align= middle size="21" value="Nom_Prenom_Date/H RdV" readonly>
<input name="Ligne11" type="text" align= middle size="21" value="Nom_Prenom_Date/H RdV" readonly>
<!-- fin de la troisième partie
//-->

</td>
</tr>
</table>

</td>
<!-- BORDURE entre les 2 dernières colonnes
//-->
<td width="0%" ></td>
<td valign="top" align="center">
<!-- COLONNE CENTRALE f
//-->

<table summary="lacolonne3" width="0%" border="0" cellspacing="0" cellpadding="0">

<select name="Jour" size="7" onclick="AppuiJour(this)">
<option value=0>Di</option>
<option selected value=1>Lu</option>
<option value=2>Ma</option>
<option value=3>Me</option>
<option value=4>Je</option>
<option value=5>Ve</option>
<option value=6>Sa</option>
</select>

<select name="Datc" size="5" onclick="AppuiDatec(this)">
<option value="Sp">Sp</option>
<option value="Jp">Jp</option>
<option selected value="Aj">Aj</option>
<option value="Jm">Jm</option>
<option value="Sm">Sm</option>
</select>

<input type="button" name="bSel" value="Séle" onclick="ButtonClick(this)">

<td></td>
<br>

<!-- ON POURRAIT RAJOUTER ICI UNE COLONNE DROITE ELLE COMMENCERAIT PAR TABLE
//-->
<!-- fIN DU TABLEAU GENERAL
//-->
</tr>
</table>
</FONT>
</Form>
<script language="JavaScript">
//exécute le script d'initialisation après avoir dessiné le formulaire
initialisation(this);
</script>
</body>
</html>

Source / Exemple :


/* Fichier CasDate.js à mettre dans le même répertoire que le fichier Agenda.html */
MoisFr = new Array("janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre");

moisUTC = new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Nov","Dec");

JourFr = new Array("dimanche","lundi","mardi","mecredi","jeudi","vendredi","samedi");

function NumMois(UneDate)
{
//a partir de la date UTC Sun Feb 13 09:22:30 UTC+0100 2005
UneChaine1 = UneDate.toLocaleString() ;
var longueur1 = (UneChaine1.length);
//on localise le 1er espace qui suit le jour
var ChaineEs = " ";
var EspLoc1 = UneChaine1.indexOf(ChaineEs) + 1;
var longueur2 = (longueur1 - EspLoc1);
// on bouffe le debut de chaine
var UneChaine2 = UneChaine1.substring(EspLoc1, longueur2);
//on localise le 2nd espace qui suit le mois
var EspLoc2 = UneChaine2.indexOf(ChaineEs) + 1;
var longueur3 = longueur2 - EspLoc2;
// on bouffe le reste de chaine
var UneChaine3 = UneChaine2.substring(0, EspLoc2-1);
//on localise le 3eme espace qui suit le NumMois
//var EspLoc3 = UneChaine3.indexOf(ChaineEs);
//var cumul = UneChaine3.substring(1, EspLoc3);
return UneChaine3 ;
}

function Decoupe(UnePhrase, UnSep, UnNum)
//decoupage d'une phrase UnePhrase 
//selon un séparateur UnSep
//renvoye le xième élément selon UnNum
{
if (!UnePhrase) alert("manque le premier argument");
if (!UnSep) alert("manque le deuxième argument");
if (!UnNum) alert("manque le troisième argument");
var UneChaine1 = UnePhrase + UnSep;
var ChaineEs = UnSep;
var i = 0;
var longueur1 = (UneChaine1.length);
var EspLoc1 = 1;
var longueur2 = 0 ;
var UneChaine2 = " " ;
var DebutChaine = " ";

while ((EspLoc1 >0) && (i < UnNum))
{
longueur1 = (UneChaine1.length);
EspLoc1 = (UneChaine1.indexOf(ChaineEs)) + 1;
if (EspLoc1 < 1) 
{longueur2 = (longueur1 - 1)}
else
{longueur2 = (longueur1 - EspLoc1);
}
// on decoupe la chaine en deux
UneChaine2 = UneChaine1.substring(EspLoc1, longueur2 + EspLoc1);
DebutChaine = UneChaine1.substring(0, EspLoc1-1 );
//alert("iter = " + i + "\r" + "première chaine ->" + DebutChaine + "<-\r suite ->" + UneChaine2) ;
// on prepare pour la localisation qui suit
i++ ;
UneChaine1 = UneChaine2 ;
}
return (DebutChaine) ;
}

function DonCompteur(DatUTC)
{
var dateOjourM = new Date();
dateOjourM = DatUTC;
return DatUTC.getTime();
}

function AfficherRdv(DateUTC)
{
var MonOA = new ActiveXObject("Outlook.Application");
//si ce programme est utilisé sur un pocket pc
//remplacer "Outlook.Application" par "PocketOutlook.Application"
var monEspace = MonOA.GetNamespace("MAPI"); 
//le numero 9 correspond au dossier calendrier
// il reste à faire :
// a) éliminer les rendez-vous récurrents (anniversaires, ...)
// b) classer les rendez-vous selon l'ordre croissant des heures débuts : "start"
// c) dispatcher ces rendez-vous
// d) pouvoir les modifier (heures de début avec les touches 0840 ... )
// e) généraliser ces méthodes aux contacts(Qui) et aux Tâches(Tac)
// f) permettre l'accession plus détaillé (Voir)
Rdvs = monEspace.GetDefaultFolder(9).items;
//Rdvs.sort ("[start]");
//Rdvs.includerecurrences = False ;
//monFiltre = "[Start] >= " + \" + DateUTC + \" ;
//    monFiltre = monFiltre & " And ";
//    monFiltre = monFiltre & "[End] <= """ & MaDate & " 23:59:00""";
//AncienItem = Rdvs.Find (monFiltre);
size = 0;
//
Rdv = Rdvs.item(0);
alert( "cbon " + Rdv.subject + " !" + DonCompteur(Rdv.start) );
while (size <Rdvs.count)
{
Rdv = Rdvs.item(size);
if (DonCompteur(Rdv.start) >= DonCompteur(DateUTC))
{
//alert(Rdv.start + " " + Rdv.subject);

//break;
}
size++;
}
return true;
}

function initialisation(unTruc)
{
// la date du jour en cours en UTC "Sun Feb 13 09:22:30 UTC+0100 2005"
var dateOjourUTC = new Date();
FormAgenda.LaBox.value = dateOjourUTC.toLocaleString();
FormAgenda.Jour.value = (dateOjourUTC.getDay());
// afficher les RDV du jour XXX
AfficherRdv(dateOjourUTC);
return true;
}

function DonDatLabox()
{
//retrouve la date à partir de Labox
var laPhrasu = FormAgenda.LaBox.value;
var leJourN = Decoupe(laPhrasu, " ", 2);
var leMoisS = Decoupe(laPhrasu, " ", 3);
var lannee = Decoupe(laPhrasu, " ", 4);
var leMoisN = 0;
var i;
for (i=0 ;i<12 ;i++)
{
if (leMoisS == MoisFr[i]) leMoisN = i;
}
return (new Date(lannee, leMoisN, leJourN));
}

function ReNitialise(UnCar)
{
//la date AJOUTEE des jours en millisecondes
var dateOjourUTC = DonDatLabox();
var dateOjourM = new Date();
if (UnCar!=0)
{
dateOjourM = dateOjourUTC.getTime();
dateOjourM = dateOjourM + (UnCar * 86400000);
}
var dateOjourUTC = new Date(dateOjourM);
var Decal = dateOjourUTC.getDay();
var msg4 = JourFr[Decal] + " "  ;
FormAgenda.LaBox.value = dateOjourUTC.toLocaleString();
//choisit dans la liste Jour_semaine
FormAgenda.Jour.value = Decal;
// afficher les RDV du jour XXX
AfficherRdv(dateOjourUTC);
}

function AppuiJour(bouton)
// les jours de la semaine
{
var ladates = DonDatLabox();
var dat0 = new Date();
dat0 = ladates;
var Ecart = (bouton.value) - (dat0.getDay() );
if (Ecart != 0) ReNitialise(Ecart);
return true;
}

function AppuiAPm(bouton)
{
alert("Vous avez appuyé sur " + bouton.value );
//démonstration adressage absolu et de modification de choix
//dans un formulaire
alert("Vous avez appuyé sur " + FormAgenda.APm.value + " je vais changer cette valeur ");
// modification
if (FormAgenda.APm.value == "Mat")
{FormAgenda.APm.value = "Apm"}
else
{FormAgenda.APm.value = "Mat"}
return true ;
}

function AppuiHeure(bouton)
{
alert("Vous avez appuyé sur " + bouton.value );
return true;
}

function AppuiQuoi(bouton)                                  
{
alert("Vous avez appuyé sur " + bouton.value  );
return true;
}

function AppuiDatec(bouton)
{

switch(bouton.value)
{
  case "Sp": ReNitialise(7); break;
  case "Jp": ReNitialise(1); break;
  case "Aj": ReNitialise(0); break;
  case "Jm": ReNitialise(-1); break;
  case "Sm": ReNitialise(-7); break;
}

return true;
}

function Jour_lettre(xxx)
{
mday = xxx.getDay();
switch(mday)
{
  case 0 : mas = "Diman"; break;
  case 1 : mas = "Lundi"; break;
  case 2 : mas = "Mardi"; break;
  case 3 : mas = "Mecre"; break;
  case 4 : mas = "Jeudi"; break;
  case 5 : mas = "Vendr"; break;
  case 6 : mas = "Samed"; break;
}
return mas;
}

function ButtonClick(truc)
{
//fonction de sélection pour input text ... Impossible
// de déclencher un événement sur texte sélectionné
alert("Vous avez appuyé sur la ligne " + truc.value );
return true;
}

Conclusion :


Servez-vous de votre bloc-notes (notepad) pou déposer les lignes de code du fichier Agenda.html et CasDate.js.

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.