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
- Obtener y establecer datos de elementos en un formulario de redacción de Outlook
- Obtener y establecer datos de elementos de Outlook en formularios de lectura o redacción
- Crear complementos de Outlook para formularios de redacción
- Programación asincrónica en los complementos de Office
- Obtener, establecer o agregar destinatarios al redactar una cita o mensaje en Outlook
- Obtener o establecer el asunto al redactar una cita o mensaje en Outlook
- Insertar datos en el cuerpo al redactar una cita o mensaje en Outlook
- Obtener o establecer la ubicación al redactar una cita en Outlook