J2E Excel Add-in
JSONテキストをExcelの値、Entity、spill配列に変換するExcelカスタム関数アドインです。
公開サイト: https://koizumihiroo.github.io/j2e-excel-addin/
利用上の注意
このアドインは現時点の状態のまま提供しており、動作、継続的な提供、特定目的への適合性を含め、明示または黙示を問わず一切保証しません。公開後でも、セキュリティ上または運用上の理由により、予告なく公開を一時停止または終了する場合があります。
このアドインを試す
このアドインは現在Microsoft Marketplaceには掲載されていません。試す場合は、利用者自身が以下の手順でmanifest.xmlをダウンロードし、自分が使用するExcelに追加します。
必要条件
- Excel for the web、またはCustom Functions Runtime 1.4以降に対応するMicrosoft 365版Excel for Windowsを使用すること。
- 個人用Microsoftアカウントまたは組織のMicrosoft 365アカウントで、Excelにサインインしていること。
- GitHub PagesとMicrosoftがホストするOffice.jsへ接続できるインターネット接続があること。
ネットワーク接続は初回の関数実行時だけでなく、アドインの読み込み、数式の再計算、ブックを再度開くときにも必要になる可能性があります。Excelのキャッシュ動作は環境によって異なるため、オフラインでの動作は保証されません。
Excel for the web / Excel for Windows(Microsoft 365デスクトップアプリ)
- manifest.xml を自分の端末へダウンロードします。
- Excelで、自分が使用するブックを開きます。
- ホーム > アドイン を選びます。
- メニュー右下の + その他のアドイン を選びます。
- Office アドイン 画面で、ストア ではなく 個人用アドイン を選びます。
- 右上の 個人用アドインの管理 を選びます。
- アドインのアップロード を選び、自分でダウンロードした
manifest.xmlを選択して アップロード します。
利用者の組織ポリシーによっては、独自アドインの追加に管理者の許可が必要です。追加後は、Excelのセルで =J2E.JSON(A1) などのカスタム関数を使用できます。
個人用アドイン に アドインのアップロード が表示されない場合は、組織ポリシーで独自アドインのアップロードが無効になっています。組織のMicrosoft 365管理者へ許可を依頼してください。
Excelのバージョン、更新チャネル、アカウントの種類、組織ポリシーによって画面構成やボタン名が異なる場合があります。その場合は、アドイン、個人用アドイン、個人用アドインの管理、アドインのアップロード に相当する項目を探してください。
アドインを削除する
アドインを追加前の状態へ戻す場合は、Excelの マイ アドイン からJ2Eを削除します。
- Excel for the webでは ホーム > アドイン > その他の設定、Excel for Windowsでは 挿入 > アドイン > マイ アドイン を開きます。
- 一覧から JSON to Excel Entity または J2E を選び、削除 を実行します。
- ダウンロードした
manifest.xmlが不要であれば、端末から削除します。
ダウンロード済みの manifest.xml を端末から削除するだけでは、Excelに追加済みのアドインは削除されません。アドインを削除しても、既存のセルに入力した数式や計算結果は自動的には削除されません。
関数
関数例を続けて試す場合は、次のタブ区切りデータを空のSheet1のA1へ一度だけ貼り付けます。A1にJSON object、B1にJSON array、C1に空のJSON objectが入ります。
{"商品":"りんご","単価":120,"在庫":25} [[1,2],[3,4]] {}
コードブロックの1行全体をコピーし、Sheet1!A1を選択して Ctrl+V で貼り付けてください。右クリックで貼り付ける場合は、貼り付けのオプション > 値 を選びます。3つの値がA1の1セルに入った場合は、A1を選択して データ > 区切り位置 > 区切り記号付き > タブ を選びます。
OBJECT_KEYS、OBJECT_VALUES、ARRAY は複数セルへ結果をスピルします。各関数の数式セルの下と右側を空けてください。
J2E.JSON(jsonText)
任意のJSON文字列をExcelの値へ変換します。文字列、数値、真偽値は通常のExcel値として返し、オブジェクトまたは配列はExcel Entityとして返します。
既知の不具合: Excel JavaScript APIには空セル値(EmptyCellValue)が定義されており、Excelカスタム関数も同じJSONスキーマを使用します。それでも、現在のExcelアプリでは {"key":null} のようなJSONを J2E.JSON で評価すると #VALUE! エラーになります。
例
A1のJSON objectを変換する数式をD1に入力します。
=J2E.JSON(A1)
D1は商品、単価、在庫をプロパティに持つEntityになります。
J2E.OBJECT(jsonText)
JSONオブジェクトだけをExcel Entityへ変換します。最上位が配列、文字列、数値、真偽値、null のJSONは受け付けません。
A1のobjectをExcel Entityへ変換する数式をE1に入力します。
=J2E.OBJECT(A1)
E1は商品、単価、在庫をプロパティに持つEntityになります。
J2E.OBJECT_KEYS(input)
JSONオブジェクトの文字列、または J2E.JSON / J2E.OBJECT が返したEntityを受け取り、キーを1列にスピルします。空のオブジェクトはスピルできません。
A1のobjectのキーを取得する数式をF1に入力します。
=J2E.OBJECT_KEYS(A1)
F1:F3に商品、単価、在庫が順に表示されます。
J2E.OBJECT_VALUES(input)
JSONオブジェクトの文字列、または J2E.JSON / J2E.OBJECT が返したEntityを受け取り、値を1列にスピルします。空のオブジェクトはスピルできません。
A1のobjectの値を取得する数式をG1に入力します。
=J2E.OBJECT_VALUES(A1)
G1:G3にりんご、120、25が順に表示されます。
J2E.IS_EMPTY_OBJECT(input)
JSON文字列またはExcel Entityが空のオブジェクトかどうかを判定し、TRUE または FALSE を返します。オブジェクト以外のJSONは FALSE になります。
空のobjectが入ったC1を判定する数式をH1に入力します。
=J2E.IS_EMPTY_OBJECT(C1)
H1はTRUEになります。Entityを判定するには、H2に=J2E.IS_EMPTY_OBJECT(D1)を入力します。結果はFALSEです。
J2E.ARRAY(jsonText)
JSON配列をExcelのスピル配列へ変換します。1次元配列は1列に、入れ子の配列は行列としてスピルします。空配列と、行ごとの列数が異なる配列は受け付けません。
B1のJSON arrayをスピルする数式をI1に入力します。
=J2E.ARRAY(B1)
I1:J2に1行目1 / 2、2行目3 / 4が表示されます。
プライバシー
J2Eの関数コードは、受け取ったJSONテキストをExcel内で処理します。関数実装からJSONの内容をJ2Eのサーバーへ送信する処理はありません。Excelはこのサイトから関数ファイルを読み込み、Office.jsはMicrosoftがホストするURLから読み込みます。
サポート
不具合や質問はGitHub Issuesへ報告してください。 個別のサポート対応は行っておらず、問い合わせへの回答や修正対応は保証しません。