Microsoftは先日、JavaScriptでExcelのカスタム関数の作成をサポートする開発者プレビューを発表した。これは、Officeホストアプリケーションのオブジェクトモデルと対話するアドインやWebアプリケーションに限定される既存のMicrosoft Office JavaScript APIを超えて実現できる。

Microsoft Officeチームは、GitHubソースコードリポジトリを作成して、JavaScriptを使ってExcel関数の使い方を学習できるようにした。このサンプルリポジトリは、主要な4つの機能に分けている:

* JavaScript: カスタム関数のソースコード
* JSON: 利用可能なカスタム関数を表示するためにExcelで使用されるメタデータ
* HTML: 関連するJavaScriptソースコードとカスタム関数を初期化するためのメソッドを参照するためのプレビューリリースメカニズム
* XML: カスタム関数とそのリソースの場所と名前空間をExcelに伝える

カスタム関数はユーザーインターフェイスと関連付けられていないため、DOMを操作してはならない。この機能の最終リリースまでにカスタム関数の初期化のためのHTMLは削除される予定だ。

PromisesのサポートのようなモダンなJavaScript機能がサポートされているため、開発者はカスタム関数を、すぐに計算済みの値を扱うために同期にしたり、完了までの複数の計算をする非同期処理としてカスタム関数を定義できる。1回だけではなく、複数回値を返す非同期promiseであるStreamsもExcelカスタムJavaScript関数のオプションである。

ExcelのJavaScriptは、Microsoft Edge Webブラウザで使われているものと同じChakra JavaScriptエンジンを利用している。

カスタム関数は現在、WindowsとMacの開発者プレビューバージョンのExcelに限定的にサポートされている。カスタム関数は、モバイルデバイスや、製品バージョンのExcelでは、現在サポートされていない。

この追加により、シートでJavaScriptのカスタム関数をすでにサポートしているGoogle Sheetsと同等になる。

TypeScriptユーザーは、カスタムJavaScript関数を書くことができる。他のJavaScript環境と同様に、TypeScriptをJavaScriptに変換する必要がある。MicrosoftはExcelでTypeScriptを直接サポートする予定はない。

ExcelでのカスタムJavaScript関数の正式な製品リリース日はまだないが、ExcelのカスタムJavaScript関数に興味がある人は、このプレビューリリースを試して、Officeチームにフィードバックを提供して欲しい。
https://www.infoq.com/jp/news/2018/06/microsoft-excel-js-functions