Compartir a través de


Obtener o establecer la hora al redactar una cita en Outlook

La API de JavaScript de Office proporciona métodos asincrónicos (Time.getAsync y Time.setAsync) para obtener y establecer la hora de inicio o finalización de una cita que se va a componer. Estos métodos asincrónicos solo están disponibles para crear complementos. Para usar estos métodos, asegúrese de que ha configurado el manifiesto de solo complemento del complemento adecuadamente para que Outlook active el complemento en formularios de redacción, como se describe en Crear complementos de Outlook para formularios de redacción.

Las propiedades start y end están disponibles para las citas tanto en formularios de redacción como de lectura. En un formulario de lectura, se puede obtener acceso a las propiedades directamente desde el objeto principal, como en:

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

Pero en un formulario de redacción, dado que tanto el usuario como el complemento pueden insertar o cambiar la hora al mismo tiempo, debe usar el getAsync método asincrónico para obtener la hora de inicio o finalización.

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

Al igual que con la mayoría de los métodos asincrónicos de la API de JavaScript de Office, getAsync y setAsync tomar parámetros de entrada opcionales. Para obtener más información sobre cómo especificar estos parámetros de entrada opcionales, vea "Pasar parámetros opcionales a métodos asincrónicos" en Programación asincrónica en complementos de Office.

Obtener la hora de inicio o finalización

En esta sección se muestra un ejemplo de código que obtiene la hora de inicio de la cita que se está redactando y muestra la hora. Puede usar el mismo código, pero reemplace la start propiedad por la end propiedad para obtener la hora de finalización.

Para usar los item.start.getAsync métodos o item.end.getAsync , proporcione una función de devolución de llamada que compruebe el estado y el resultado de la llamada asincrónica. Obtenga el estado, los resultados y cualquier error mediante el parámetro de salida asyncResult de la devolución de llamada. Si la llamada asincrónica se realiza correctamente, use la asyncResult.value propiedad para obtener la hora de inicio como un Date objeto en formato UTC. Para proporcionar los argumentos necesarios a la función de devolución de llamada, use el asyncContext parámetro opcional de la getAsync llamada.

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;
}

Establecer la hora de inicio o finalización

En esta sección se muestra un ejemplo de código que establece la hora de inicio de una cita que se va a componer. Puede usar el mismo código, pero reemplace la start propiedad por la end propiedad para establecer la hora de finalización. Tenga en cuenta que los cambios en las start propiedades o end pueden afectar a otras propiedades de la cita que se está redactando.

  • Si la cita que se está redactando ya tiene una hora de inicio existente, al establecer la hora de inicio se ajusta posteriormente la hora de finalización para mantener la duración anterior de la cita.
  • Si la cita que se está redactando ya tiene una hora de finalización existente, al establecer la hora de finalización se ajustarán posteriormente tanto la duración como la hora de finalización.
  • Si la cita se ha establecido como un evento de todo el día, al establecer la hora de inicio se ajusta la hora de finalización a 24 horas más tarde y se desactiva la casilla para el evento de todo el día en la cita.

Para usar item.start.setAsync o item.end.setAsync, especifique un objeto con formato Date UTC en el dateTime parámetro . Si obtiene una fecha basada en una entrada del usuario en el cliente, puede usar mailbox.convertToUtcClientTime para convertir el valor en un Date objeto en el formato UTC. Si proporciona una función de devolución de llamada opcional, incluya el asyncContext parámetro y agréguele cualquier argumento. Además, compruebe el estado, el resultado y cualquier mensaje de error a través del asyncResult parámetro de salida de la devolución de llamada. Si la llamada asincrónica se realiza correctamente, setAsync inserta la cadena de hora de inicio o finalización especificada como texto sin formato, sobrescribiendo cualquier hora de inicio o finalización existente para ese elemento.

Nota:

En Outlook clásico en Windows, el setAsync método no se puede usar para cambiar la hora de inicio o finalización de una cita periódica.

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.
            */
        });
}

Vea también