ドキュメントが開いたら、Office アドインでコードを実行する
重要
共有ランタイムは、一部の Office アプリケーションでのみサポートされています。 詳細については、「共有ランタイム要件セット」を参照してください。
ドキュメントが開いたらすぐにコードを読み込んで実行するように Office アドインを構成できます。 これは、アドインを表示する前に、イベント ハンドラーの登録、作業ウィンドウのデータの事前読み込み、UI の同期、またはその他のタスクの実行が必要な場合に便利です。
注:
構成は、コードが実行時に呼び出すメソッドを使用して実装されます。 つまり、ユーザーがドキュメントを初めて開いた場合、アドインは実行されません。 アドインは、ドキュメントで初めて手動で開く必要があります。 メソッドの実行後、Office.initialize、Office.onReady、またはユーザーが実行するコード パスを取得するためです。ドキュメントが再度開くと、アドインはすぐに読み込まれて、 または Office.onReady
メソッド内のすべてのコードがOffice.initialize
実行されます。
注:
この記事では、 共有ランタイムを使用するように Office アドインを構成する必要があります。 詳細については、「 共有ランタイムを使用するように Office アドインを構成する」を参照してください。
ドキュメントが開いたときに読み込まれるようアドインを構成する
次のコードは、ドキュメントを開いたときにアドインを読み込んで実行を開始するように構成します。
Office.addin.setStartupBehavior(Office.StartupBehavior.load);
注:
メソッドは setStartupBehavior
非同期です。
Office.initialize または Office.onReady にスタートアップ コードを配置する
開いているドキュメントに読み込むようアドインを構成すると、すぐに実行されます。 Office.initialize
イベント ハンドラーが呼び出されます。 または Office.onReady
イベント ハンドラーにスタートアップ コードをOffice.initialize
配置します。
次の Excel アドイン コードは、作業中のワークシートから変更イベントのイベント ハンドラーを登録する方法を示しています。 ドキュメントを開くときに読み込むようアドインを構成した場合、このコードはドキュメントを開いたときにイベント ハンドラーを登録します。 作業ウィンドウを開く前に、変更イベントを処理できます。
// This is called as soon as the document opens.
// Put your startup code here.
Office.initialize = () => {
// Add the event handler.
Excel.run(async context => {
let sheet = context.workbook.worksheets.getActiveWorksheet();
sheet.onChanged.add(onChange);
await context.sync();
console.log("A handler has been registered for the onChanged event.");
});
};
/**
* Handle the changed event from the worksheet.
*
* @param event The event information from Excel
*/
async function onChange(event) {
await Excel.run(async (context) => {
await context.sync();
console.log("Change type of event: " + event.changeType);
console.log("Address of event: " + event.address);
console.log("Source of event: " + event.source);
});
}
次の PowerPoint アドイン コードは、PowerPoint ドキュメントから選択変更イベントのイベント ハンドラーを登録する方法を示しています。 ドキュメントを開くときに読み込むようアドインを構成した場合、このコードはドキュメントを開いたときにイベント ハンドラーを登録します。 作業ウィンドウを開く前に、変更イベントを処理できます。
// This is called as soon as the document opens.
// Put your startup code here.
Office.onReady(info => {
if (info.host === Office.HostType.PowerPoint) {
Office.context.document.addHandlerAsync(Office.EventType.DocumentSelectionChanged, onChange);
console.log("A handler has been registered for the onChanged event.");
}
});
/**
* Handle the changed event from the PowerPoint document.
*
* @param event The event information from PowerPoint
*/
async function onChange(event) {
console.log("Change type of event: " + event.type);
}
ドキュメントを開いた場合に読み込み動作が発生しないアドインを構成する
"ドキュメントを開いた状態で実行" 動作をオフにしたい場合があります。 次のコードでは、ドキュメントが開かれたときに開始しないようにアドインを構成します。 代わりに、リボン ボタンの選択や作業ウィンドウの開き方など、ユーザーが何らかの方法で操作したときに開始されます。 メソッドが現在のドキュメントで以前に呼び出されていない場合、 Office.StartupBehavior.load
このコードは影響を与えません。パラメーターとして。
注:
アドインが メソッドを 呼び出す場合は、 Office.StartupBehavior.load
パラメーターとして、 または Office.onReady
でOffice.initialize
、動作が再びオンになります。 そのため、このシナリオでは、オフにすることは、 次回 ドキュメントを開くときにのみ適用され、後続 のすべての 開口部には適用されません。
Office.addin.setStartupBehavior(Office.StartupBehavior.none);
現在の読み込み動作を取得する
アドインが、次に現在のドキュメントを開いた時に自動的に開始するように構成されているかどうかを知る必要がある場合があります。 現在のスタートアップ動作を確認するには、 Office.StartupBehavior 値を返す次のメソッドを実行します。
let behavior = await Office.addin.getStartupBehavior();
関連項目
Office Add-ins