Просмотр или изменение времени при создании встречи в Outlook

API JavaScript для Office предоставляет асинхронные методы (Time.getAsync и Time.setAsync) для получения и задания времени начала или окончания создаваемой встречи. Эти асинхронные методы доступны только для создания надстроек. Чтобы использовать эти методы, убедитесь, что вы настроили XML-манифест надстройки соответствующим образом для Outlook, чтобы активировать надстройку в формах создания, как описано в разделе Создание надстроек Outlook для форм создания.

Свойства start и end доступны для встреч в формах создания и чтения. в форме чтения доступ к свойствам можно получить напрямую из родительского объекта, как в следующем примере:

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

Но в форме создания, так как пользователь и надстройка могут вставлять или изменять время одновременно, необходимо использовать getAsync асинхронный метод для получения времени начала или окончания.

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

Как и большинство асинхронных методов в API JavaScript для Office, getAsync и setAsync принимают необязательные входные параметры. Дополнительные сведения о том, как указать эти необязательные входные параметры, см. в разделе Передача необязательных параметров в асинхронные методы статьи Асинхронное программирование в надстройках Office.

Получение времени начала или окончания

В этом разделе показан пример кода, который получает время начала создаваемой встречи и отображает время. Вы можете использовать тот же код, но замените start свойство свойством , end чтобы получить время окончания.

Чтобы использовать item.start.getAsync методы или item.end.getAsync , предоставьте функцию обратного вызова, которая проверяет состояние и результат асинхронного вызова. Получите состояние, результаты и любую ошибку с помощью выходного параметра asyncResult обратного вызова. Если асинхронный вызов выполнен успешно, используйте asyncResult.value свойство , чтобы получить время начала в виде Date объекта в формате UTC. Чтобы указать все необходимые аргументы для функции обратного asyncContextgetAsync вызова, используйте необязательный параметр вызова.

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

Установка времени начала или окончания

В этом разделе показан пример кода, который задает время начала встречи. Вы можете использовать тот же код, но замените start свойство свойством , end чтобы задать время окончания. Обратите внимание, что изменения start свойств или end могут повлиять на другие свойства создаваемой встречи.

  • Если составляемая встреча уже имеет существующее время начала, установка времени начала впоследствии корректирует время окончания, чтобы сохранить предыдущую продолжительность встречи.
  • Если составляемая встреча уже имеет существующее время окончания, установка времени окончания впоследствии изменяет длительность и время окончания.
  • Если встреча была назначена как событие на весь день, установка времени начала изменит время окончания на 24 часа позже и снимет флажок для события в течение всего дня в встрече.

Чтобы использовать item.start.setAsync или item.end.setAsync, укажите объект в формате Date UTC в параметре dateTime . Если вы получаете дату на основе введенных пользователем данных в клиенте, можно использовать mailbox.convertToUtcClientTime для преобразования значения Date в объект в формате UTC. Если вы предоставляете необязательную функцию обратного asyncContext вызова, включите параметр и добавьте в него любые аргументы. Кроме того, проверка состояние, результат и любое сообщение об ошибке asyncResult через выходной параметр обратного вызова. Если асинхронный вызов выполнен успешно, setAsync вставляет указанную строку времени начала или окончания в виде обычного текста, перезаписав любое существующее время начала или окончания для этого элемента.

Примечание.

В Outlook в Windows setAsync метод нельзя использовать для изменения времени начала или окончания повторяющейся встречи.

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

См. также