Partager via


Obtenir ou définir l’heure lors de la composition d’un rendez-vous dans Outlook

L’API JavaScript Office fournit des méthodes asynchrones (Time.getAsync et Time.setAsync) pour obtenir et définir l’heure de début ou de fin d’un rendez-vous en cours de composition. Ces méthodes asynchrones sont disponibles uniquement pour composer des compléments. Pour utiliser ces méthodes, vérifiez que vous avez configuré le manifeste XML du complément de manière appropriée pour qu’Outlook active le complément dans les formulaires de composition, comme décrit dans Créer des compléments Outlook pour les formulaires de composition.

Les propriétés start et end sont disponibles pour les rendez-vous dans les formulaires de lecture et de composition. Dans un formulaire de lecture, vous pouvez accéder aux propriétés directement dans l’objet parent, comme dans :

Office.context.mailbox.item.start;
Office.context.mailbox.item.end;

Toutefois, dans un formulaire de composition, étant donné que l’utilisateur et votre complément peuvent insérer ou modifier l’heure en même temps, vous devez utiliser la getAsync méthode asynchrone pour obtenir l’heure de début ou de fin.

Office.context.mailbox.item.start.getAsync(callback);
Office.context.mailbox.item.end.getAsync(callback);

Comme avec la plupart des méthodes asynchrones dans l’API JavaScript Office, getAsync et setAsync prenez des paramètres d’entrée facultatifs. Pour plus d’informations sur la façon de spécifier ces paramètres d’entrée facultatifs, consultez « Passage de paramètres facultatifs à des méthodes asynchrones » dans Programmation asynchrone dans les compléments Office.

Obtention de l’heure de début ou de fin

Cette section présente un exemple de code qui obtient l’heure de début du rendez-vous en cours de composition et affiche l’heure. Vous pouvez utiliser le même code, mais remplacez la start propriété par la end propriété pour obtenir l’heure de fin.

Pour utiliser les item.start.getAsync méthodes ou item.end.getAsync , fournissez une fonction de rappel qui vérifie le status et le résultat de l’appel asynchrone. Obtenez le status, les résultats et toute erreur à l’aide du paramètre de sortie asyncResult du rappel. Si l’appel asynchrone réussit, utilisez la asyncResult.value propriété pour obtenir l’heure de début en tant qu’objet Date au format UTC. Pour fournir tous les arguments nécessaires à la fonction de rappel, utilisez le asyncContext paramètre facultatif de l’appel getAsync .

let item;

// Confirms that the Office.js library is loaded.
Office.onReady((info) => {
    if (info.host === Office.HostType.Outlook) {
        item = Office.context.mailbox.item;
        getStartTime();
    }
});

// Gets the start time of the appointment being composed.
function getStartTime() {
    item.start.getAsync((asyncResult) => {
        if (asyncResult.status === Office.AsyncResultStatus.Failed) {
            write(asyncResult.error.message);
            return;
        }

        // Display the start time in UTC format on the page.
        write(`The start time in UTC is: ${asyncResult.value.toString()}`);
        // Convert the start time to local time and display it on the page.
        write(`The start time in local time is: ${asyncResult.value.toLocaleString()}`);
    });
}

// Writes to a div with id="message" on the page.
function write(message) {
    document.getElementById("message").innerText += message;
}

Définition de l’heure de début ou de fin

Cette section présente un exemple de code qui définit l’heure de début d’un rendez-vous en cours de composition. Vous pouvez utiliser le même code, mais remplacez la start propriété par la end propriété pour définir l’heure de fin. Notez que les start modifications apportées aux propriétés ou end peuvent affecter d’autres propriétés du rendez-vous en cours de composition.

  • Si le rendez-vous en cours de composition a déjà une heure de début existante, la définition de l’heure de début ajuste par la suite l’heure de fin pour conserver toute durée précédente du rendez-vous.
  • Si le rendez-vous composé a déjà une heure de fin existante, la définition de l’heure de fin ajuste par la suite la durée et l’heure de fin.
  • Si le rendez-vous a été défini comme un événement d’une journée entière, la définition de l’heure de début ajuste l’heure de fin à 24 heures plus tard et désactive la case pour l’événement d’une journée entière dans le rendez-vous.

Pour utiliser item.start.setAsync ou item.end.setAsync, spécifiez un objet au Date format UTC dans le dateTime paramètre . Si vous obtenez une date basée sur une entrée de l’utilisateur dans le client, vous pouvez utiliser mailbox.convertToUtcClientTime pour convertir la valeur en objet Date au format UTC. Si vous fournissez une fonction de rappel facultative, incluez le asyncContext paramètre et ajoutez-y des arguments. En outre, case activée le status, le résultat et tout message d’erreur via le asyncResult paramètre de sortie du rappel. Si l’appel asynchrone réussit, setAsync insère la chaîne d’heure de début ou de fin spécifiée en texte brut, en remplaçant toute heure de début ou de fin existante pour cet élément.

Remarque

Dans Outlook sur Windows, la setAsync méthode ne peut pas être utilisée pour modifier l’heure de début ou de fin d’un rendez-vous périodique.

let item;

// Confirms that the Office.js library is loaded.
Office.onReady((info) => {
    if (info.host === Office.HostType.Outlook) {
        item = Office.context.mailbox.item;
        setStartTime();
    }
});

// Sets the start time of the appointment being composed.
function setStartTime() {
    // Get the current date and time, then add two days to the date.
    const startDate = new Date();
    startDate.setDate(startDate.getDate() + 2);

    item.start.setAsync(
        startDate,
        { asyncContext: { optionalVariable1: 1, optionalVariable2: 2 } },
        (asyncResult) => {
            if (asyncResult.status === Office.AsyncResultStatus.Failed) {
                console.log(asyncResult.error.message);
                return;
            }

            console.log("Successfully set the start time.");
            /*
                Run additional operations appropriate to your scenario and
                use the optionalVariable1 and optionalVariable2 values as needed.
            */
        });
}

Voir aussi