FunctionFile 要素
次のいずれかの方法でアドインが公開する操作のソース コード ファイルを指定します。
- UI を表示する代わりに JavaScript 関数を実行するアドイン コマンド。
- JavaScript 関数を実行するキーボード ショートカット。
アドインの種類: 作業ウィンドウ、メール
次の VersionOverrides スキーマでのみ有効です:
- 作業ウィンドウ 1.0
- メール 1.0
- メール 1.1
詳細については、「 アドインのみのマニフェストでのバージョンのオーバーライド」を参照してください。
<FunctionFile> 要素は、DesktopFormFactor または MobileFormFactor の子要素です。
<FunctionFile> 要素のresid
属性は 32 文字以下であり、Control 要素で定義されているように、関数コマンド ボタンで使用されるすべての JavaScript 関数を格納または読み込む HTML ファイルへの URL を含む Resources 要素の <id
>属性の値に設定されます。
注:
アドインが共有ランタイムを使用するように構成されている場合、コード ファイル内の関数は、アドインの作業ウィンドウ (存在する場合) の JavaScript と同じ JavaScript ランタイム (および共通のグローバル名前空間を共有) で実行されます。
<FunctionFile> 要素と関連するコード ファイルには、共有ランタイムを必要とするカスタム キーボード ショートカットで再生する特別なロールもあります。
<FunctionFile> 要素の例を次に示します。
<DesktopFormFactor>
<FunctionFile resid="Commands.Url" />
<ExtensionPoint xsi:type="PrimaryCommandSurface">
<!-- Information about this extension point. -->
</ExtensionPoint>
<!-- You can define more than one ExtensionPoint element as needed. -->
</DesktopFormFactor>
...
<Resources>
<bt:Urls>
<bt:Url id="Commands.Url" DefaultValue="https://www.contoso.com/commands.html" />
</bt:Urls>
<!-- Define other resources as needed. -->
</Resources>
<FunctionFile> 要素によって示される HTML ファイル内の JavaScript は、Office.jsを初期化し、単一のパラメーターである event を受け取る名前付き関数を定義する必要があります。 また、実行が終了したときに event.completed を呼び出す必要もあります。 Outlook アドインの関数では、 通知 API を 使用して、進行状況、成功、または失敗をユーザーに示す必要があります。 関数の名前は、関数コマンド ボタンの FunctionName 要素で使用されます。
<FunctionName> 要素で指定された関数を、HTML ファイルによって読み込まれる別の JavaScript ファイルに定義して登録できます。 このようなファイルの例を次に示します。
// Initialize the Office Add-in.
Office.onReady(() => {
// If needed, Office.js is ready to be called
});
// The command function.
async function highlightSelection(event) {
// Implement your custom code here. The following code is a simple Excel example.
try {
await Excel.run(async (context) => {
const range = context.workbook.getSelectedRange();
range.format.fill.color = "yellow";
await context.sync();
});
} catch (error) {
// Note: In a production add-in, notify the user through your add-in's UI.
console.error(error);
}
// Calling event.completed is required. event.completed lets the platform know that processing has completed.
event.completed();
}
// You must register the function with the following line.
Office.actions.associate("highlightSelection", highlightSelection);
重要
event.completed
への呼び出しは、イベントが正常に処理されたことを示します。 同一のアドイン コマンドを複数回クリックするなど、関数を複数回呼び出すと、すべてのイベントが自動的にキューに入れられます。 最初のイベントが自動的に実行され、その他のイベントはキューに残ります。 関数が event.completed
を呼び出すと、その関数に対する次のキューに登録された呼び出しが実行されます。
event.completed
を呼び出す必要があります。それ以外の場合、関数は実行されません。
Office Add-ins