Share via


Outlook で予定を作成するときに時刻を取得または設定する

Office JavaScript API には、構成されている予定の開始時刻または終了時刻を取得および設定するための非同期メソッド (Time.getAsyncTime.setAsync) が用意されています。 これらの非同期メソッドは、アドインを作成する場合にのみ使用できます。これらのメソッドを使用するには、「新規作成フォームの Outlook アドインを作成する」の説明に従って、Outlook が新規作成フォームでアドインをアクティブ化するためにアドインの XML マニフェストを適切 設定していることを確認します。

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

Office JavaScript API のほとんどの非同期メソッドとsetAsync同様に、getAsyncオプションの入力パラメーターを受け取ります。 これらの省略可能な入力パラメーターを指定する方法の詳細については、「 Office アドインでの非同期プログラミング」の「省略可能なパラメーターを非同期メソッドに渡す」を参照してください。

開始時刻または終了時刻を取得する

このセクションでは、構成されている予定の開始時刻を取得し、時刻を表示するコード サンプルを示します。 同じコードを使用できますが、 プロパティを プロパティにstartend置き換えて終了時刻を取得します。

または item.end.getAsync メソッドをitem.start.getAsync使用するには、非同期呼び出しの状態と結果を確認するコールバック関数を指定します。 コールバックの asyncResult 出力パラメーターを使用して、状態、結果、およびエラーを取得します。 非同期呼び出しが成功した場合は、 プロパティを asyncResult.value 使用して、開始時刻を Date UTC 形式のオブジェクトとして取得します。 コールバック関数に必要な引数を指定するには、呼び出しの asyncContext 省略可能なパラメーターを 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;
}

開始時刻または終了時刻を設定する

このセクションでは、構成する予定の開始時刻を設定するコード サンプルを示します。 同じコードを使用できますが、 プロパティを プロパティにstartend置き換えて終了時刻を設定します。 または end プロパティの変更は、構成中のstart予定の他のプロパティに影響する可能性があることに注意してください。

  • 既に構成されている予定に既存の開始時刻がある場合は、開始時刻を設定すると、予定の前の期間を維持するように終了時刻が調整されます。
  • 構成されている予定に既存の終了時刻がある場合は、終了時刻を設定すると、継続時間と終了時刻の両方が調整されます。
  • 予定が終日イベントとして設定されている場合は、開始時刻を設定すると終了時刻が 24 時間後に調整され、予定の終日イベントのチェック ボックスがオフになります。

または を使用item.start.setAsyncするには、 パラメーターに UTC 形式DateのオブジェクトをdateTime指定item.end.setAsyncします。 クライアント内のユーザーによる入力に基づいて日付を取得する場合は、 mailbox.convertToUtcClientTime を使用して、値を UTC 形式のオブジェクトに Date 変換できます。 省略可能なコールバック関数を指定する場合は、 パラメーターを asyncContext 含め、引数を追加します。 さらに、コールバックの出力パラメーターを使用して、状態、結果、およびエラー メッセージをasyncResultチェックします。 非同期呼び出しが成功した場合は、 setAsync 指定した開始時刻または終了時刻の文字列をプレーン テキストとして挿入し、その項目の既存の開始時刻または終了時刻を上書きします。

注:

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

関連項目