共有ランタイムを使用しないカスタム関数は、 JavaScript 専用ランタイムに依存します。 このランタイムは高速計算用に最適化されていますが、使用できる API は少なくなります。
重要
Excel カスタム関数は、次のプラットフォームで使用できます。
- Office on the web
- Windows での Office
- Microsoft 365 サブスクリプション
- retail 永久 Office 2016 以降
- ボリューム ライセンスの永続的/LTSC Office 2021 以降
- Office on Mac
Excel カスタム関数は現在、次ではサポートされていません。
- Office on iPad
- ボリューム ライセンスの永続的なバージョンのOffice 2021以前の Windows
注:
Microsoft 365 の統合マニフェストでは、現在、カスタム関数プロジェクトはサポートされていません。 カスタム関数プロジェクトにはアドインのみのマニフェストを使用する必要があります。 詳細については、「 Office アドイン マニフェスト」を参照してください。
注:
共有ランタイムを使用しない特定の理由がない限り、 共有ランタイムでカスタム関数を使用することをお勧めします。 ランタイムの詳細については、「 Office アドインのランタイム」を参照してください。
この JavaScript 専用ランタイムは、カスタム関数と作業ウィンドウ (別のランタイムで実行される) がデータを格納するために使用できる、 OfficeRuntime 名前空間の API へのアクセスを提供します。
外部データを要求する
カスタム関数内では、Fetch などの API や、サーバーとやり取りする HTTP 要求を発行する標準 Web API である XmlHttpRequest (XHR) を使用して、外部データを要求できます。
カスタム関数では、XmlHttpRequests を作成するときに追加のセキュリティ対策を使用する必要があることに注意してください。 同じ配信元ポリシー と単純な CORS が必要です。
単純な CORS 実装では Cookie を使用できず、単純なメソッド (GET、HEAD、POST) のみがサポートされます。 単純な CORS はフィールド名Accept、 Accept-Language、Content-Languageの簡単なヘッダーを受け入れます。 コンテンツ タイプがapplication/x-www-form-urlencoded、text/plain、またはmultipart/form-dataである場合は、単純な CORS で Content-Type ヘッダーを使用することもできます。
データの格納とアクセス
共有ランタイムを使用しないカスタム関数内では、 OfficeRuntime.storage オブジェクトを使用してデータを格納およびアクセスできます。
Storage オブジェクトは、JavaScript 専用ランタイムを使用するカスタム関数では使用できない localStorage の代替手段を提供する、永続的で暗号化されていないキー値ストレージ システムです。
Storage オブジェクトは、ドメインごとに 10 MB のデータを提供します。 ドメインは、複数のアドインで共有できます。
Storage オブジェクトは共有ストレージ ソリューションであり、アドインの複数の部分が同じデータにアクセスできることを意味します。 たとえば、ユーザー認証のトークンは、カスタム関数 (JavaScript 専用ランタイムを使用) と作業ウィンドウ (完全な Webview ランタイムを使用) の両方でアクセスできるため、 Storage オブジェクトに格納できます。 同様に、2 つのアドインが同じドメイン ( www.contoso.com/addin1、 www.contoso.com/addin2 など) を共有する場合、 Storage オブジェクトを介して情報を前後に共有することもできます。 サブドメインが異なるアドインには、 Storage のインスタンスが異なっていることに注意してください (たとえば、 subdomain.contoso.com/addin1、 differentsubdomain.contoso.com/addin2)。
Storage オブジェクトは共有の場所にできるため、キーと値のペアをオーバーライドできることに注意してください。
Storage オブジェクトでは、次のメソッドを使用できます。
getItemgetItemssetItemsetItemsremoveItemremoveItemsgetKeys
注:
すべての情報 ( 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;
});
}
共有ランタイムとの比較
UI の統合またはオブジェクトとイベントの Office.js が必要ですか? これらの関数を 共有ランタイムに移動します。
次の手順
カスタム関数をデバッグする方法について説明します。
関連項目
Office Add-ins