Outlook で予定を作成するときに時刻を取得または設定する
Office JavaScript API には、構成されている予定の開始時刻または終了時刻を取得および設定するための非同期メソッド (Time.getAsync と Time.setAsync) が用意されています。 これらの非同期メソッドは、アドインを作成する場合にのみ使用できます。これらのメソッドを使用するには、「新規作成フォームの 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);
Office JavaScript API のほとんどの非同期メソッドと同様に、 getAsync
と setAsync
は省略可能な入力パラメーターを受け取ります。 これらの省略可能な入力パラメーターを指定する方法の詳細については、「 Office アドインでの非同期プログラミング」の「省略可能なパラメーターを非同期メソッドに渡す」を参照してください。
開始時刻または終了時刻を取得する
このセクションでは、構成されている予定の開始時刻を取得し、時刻を表示するコード サンプルを示します。 同じコードを使用できますが、 start
プロパティを end
プロパティに置き換えて終了時刻を取得します。
item.start.getAsync
または item.end.getAsync
メソッドを使用するには、非同期呼び出しの状態と結果を確認するコールバック関数を指定します。 コールバックの asyncResult 出力パラメーターを使用して、状態、結果、およびエラーを取得します。 非同期呼び出しが成功した場合は、 asyncResult.value
プロパティを使用して、開始時刻を UTC 形式の Date
オブジェクトとして取得します。 コールバック関数に必要な引数を指定するには、getAsync
呼び出しの省略可能なパラメーターasyncContext
使用します。
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
を使用するには、dateTime
パラメーターに UTC 形式のDate
オブジェクトを指定します。 クライアント内のユーザーによる入力に基づいて日付を取得する場合は、 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.
*/
});
}
関連項目
Office Add-ins