次の方法で共有


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を呼び出す必要があります。それ以外の場合、関数は実行されません。