カスタム関数のための JavaScript 専用ランタイム

共有ランタイムを使用しないカスタム関数では、計算のパフォーマンスを最適化するように設計された JavaScript 専用ランタイム が使用されます。

重要

Excel カスタム関数は、次のプラットフォームで使用できます。

  • Office on the web
  • Windows での Office
    • Microsoft 365 サブスクリプション
    • retail 永久 Office 2016 以降
    • ボリューム ライセンスの永続的なOffice 2021以降
  • Office on Mac

Excel カスタム関数は現在、次ではサポートされていません。

  • Office on iPad
  • Windows での Office 2019 以前のボリューム ライセンスの永続的バージョン

注:

共有ランタイムを使用しない特定の理由がない限り、 共有ランタイムでカスタム関数を使用することをお勧めします。 共有ランタイムを使用すると、条件が満たされた場合はアドインで WebView2 (Microsoft Edge Chromium ベース) が使用され、それ以外の場合、アドインでは Windows または Microsoft 365 のバージョンに関係なく Trident (インターネット エクスプローラー 11) が使用されることに注意してください。 WebView2 の条件の詳細については、「Office アドインで使用されるブラウザーと Webview コントロール」を参照してください。ランタイムの詳細については、「Office アドインとランタイムのランタイム」を参照してください。

この JavaScript 専用ランタイムは、カスタム関数と作業ウィンドウ (別のランタイムで実行される) で使用できる名前空間内 OfficeRuntime の API にアクセスして、データを格納します。

外部データを要求する

カスタム関数内では、Fetch などの API や、サーバーとやり取りする HTTP 要求を発行する標準 Web API である XmlHttpRequest (XHR) を使用して、外部データを要求できます。

カスタム関数では、XmlHttpRequests を作成するときに追加のセキュリティ対策を使用する必要があることに注意してください。 同じ配信元ポリシー と単純な CORS が必要です。

単純な CORS 実装では Cookie を使用できず、単純なメソッド (GET、HEAD、POST) のみがサポートされます。 単純な CORS はフィールド名AcceptAccept-LanguageContent-Languageの簡単なヘッダーを受け入れます。 コンテンツ タイプapplication/x-www-form-urlencodedtext/plainContent-Type 、、または multipart/form-dataである場合は、単純な CORS でヘッダーを使用することもできます。

データの格納とアクセス

共有ランタイムを使用しないカスタム関数内では、 OfficeRuntime.storage オブジェクトを使用してデータを格納およびアクセスできます。 オブジェクトは Storage 、JavaScript 専用ランタイムを使用するカスタム関数では使用できない localStorage の代替手段を提供する、永続的で暗号化されていないキー値ストレージ システムです。 オブジェクトは Storage 、ドメインごとに 10 MB のデータを提供します。 ドメインは、複数のアドインで共有できます。

オブジェクトは Storage 共有ストレージ ソリューションであり、アドインの複数の部分が同じデータにアクセスできることを意味します。 たとえば、ユーザー認証のトークンは、カスタム関数 (JavaScript 専用ランタイムを使用) と作業ウィンドウ (完全な Webview ランタイムを使用) の両方でアクセスできるため、オブジェクトに格納される Storage 場合があります。 同様に、2 つのアドインが同じドメイン (、 などwww.contoso.com/addin1www.contoso.com/addin2) を共有する場合、オブジェクトを介して情報を前後にStorage共有することもできます。 サブドメインが異なるアドインには、 のインスタンスStorageが異なっていることに注意してください (例: 、 subdomain.contoso.com/addin1differentsubdomain.contoso.com/addin2)。

オブジェクトは Storage 共有の場所にできるため、キーと値のペアをオーバーライドできることを認識することが重要です。

オブジェクトでは、次のメソッドを Storage 使用できます。

  • getItem
  • getItems
  • setItem
  • setItems
  • removeItem
  • removeItems
  • getKeys

注:

すべての情報 (など clear) をクリアする方法はありません。 代わりに、一度に複数のエントリを削除できる removeItems を使用してください。

OfficeRuntime.storage の例

次のコード サンプルでは、 メソッドを OfficeRuntime.storage.setItem 呼び出して、キーと値を に storage設定します。

function StoreValue(key, value) {

  return OfficeRuntime.storage.setItem(key, value).then(function (result) {
      return "Success: Item with key '" + key + "' saved to storage.";
  }, function (error) {
      return "Error: Unable to save item with key '" + key + "' to storage. " + error;
  });
}

次の手順

カスタム関数をデバッグする方法について説明します。

関連項目