V19.1Jの新機能
共同編集機能
Excelのように複数のユーザーで同じワークブックを同時に編集できる「共同編集機能」を追加しました。チームでのデータ編集や確認を同一画面でリアルタイムで実施できます。
※ 本機能の使用には配布ライセンス共同編集機能アドオンが必要です。詳細はこちらまでお問い合わせください。
ユーザーの状態表示と権限設定
共同編集機能では、他のユーザーが編集した内容が即座に反映されるだけでなく、現在アクティブなシートで作業している他のユーザーの選択範囲や選択したセルをリアルタイムで表示することもできます。さらに、共同編集機能を使用する各ユーザーに対して、シートの編集が可能、シートの閲覧のみ可能といった権限設定を行うこともできます。

スレッド形式のコメントもリアルタイムに
共同編集機能とスレッド形式のコメントを併用することで、シート上でリアルタイムに内容の確認や調整を行いながら、編集を進めることができます。
共同編集機能のアーキテクチャ
共同編集機能では、複数ユーザーによる共同編集を実現するため、以下の3つのモジュールからなる「Collaboration Framework」を提供します。
| モジュール | 説明 |
|---|---|
| js-collaboration | リアルタイムのデータ同期とメッセージのブロードキャスト機能を提供します |
| js-collaboration-ot |
|
| js-collaboration-presence | カーソル位置やテキスト選択の強調表示など、ユーザーの編集状態をリアルタイムに共有します |
また、各クライアントの編集状態をサーバー側で管理するためのデータベースのアダプターを提供します。インメモリーのストレージ、PostgreSQL、SQLite3の3種類が利用可能なほか、独自のアダプターを作成することもできます。

〈SpreadJSデザイナ〉Visual Studio Code拡張機能を公開
SpreadJSデザイナがVisual Studio Codeの拡張機能として使用できるようになりました。Visual Studio Codeでアプリケーションを開発中に、SJSファイルやExcelファイルもVisual Studio Code上でシームレスに編集できます。

〈リボンコンテナ〉新規作成画面にテンプレートを表示
ファイルメニューの「新規作成」画面にテンプレートを表示できるようになりました。業務内容に合わせてテンプレートを用意しておくことでスムーズに作業を開始できます。従来は同様のカスタマイズに複雑な独自実装を要しましたが、V19.1JではtemplateConfigオプションに、表示したいテンプレートの情報を定義したjsonファイルを指定するのみで実現できるようになりました。

〈リボンコンテナ/SpreadJSデザイナ〉データソースのUIの改善
リボンコンテナやSpreadJSデザイナを使用してデータソースを設定する際の各種UIにおいて以下のような改善を行いました。
セクションの折りたたみと展開
テーブル設定の一部の項目が「行の操作」「列の操作」「ウィンドウ」の各セクションに分割されました。各セクションは見出しをクリックして折りたたみ/展開ができるので、必要なセクションのみを展開して作業をすることが可能です。
ローカルデータの設定が可能に
ローカルデータを直接設定できる「ローカルデータ設定ダイアログ」を追加しました。外部データソースを用意しなくてもデータのバインドと動作確認ができます。JSON、CSV、XML、Column JSONをサポートし、ファイルアップロードや直接入力での設定が可能です。
列設定のUI改善
[計算列の追加]ボタンの表示名を[列の追加]ボタンに変更し、より直感的に操作できるようリストの上部に移動しました。

また、計算列に削除ボタンが追加され、計算列を削除できるようになりました。

データのプレビュー
作成したテーブルのデータをプレビュー表示できる「データ」タブを追加しました。プレビューはテーブルシートと同じ形式で表示され、列のスタイルや計算列の結果も反映されます。

〈リボンコンテナ/SpreadJSデザイナ〉リモートAPIのリクエストヘッダーの設定
リボンコンテナやSpreadJSデザイナを使用してデータソースを設定する際に、リモートAPIのリクエストヘッダーを設定できるようになりました。認証情報やリクエストのメタデータなど、APIとの通信に必要な情報を含めることができます。よく使われるヘッダーがあらかじめ候補として選択できるほか、カスタムヘッダーを直接入力することも可能です。

〈Excel入出力〉Excelインポート/エクスポートの強化
対応フォーマットの追加とスパークラインの出力に関する機能強化を行いました。
Excelテンプレートファイル( .xltx)のサポート
VBAマクロを含まないExcelテンプレートファイル( .xltx)をSpreadJSにインポート/エクスポートできるようになりました。業務で多用するテンプレートを .xltxファイルとして用意している場合に、標準のExcelファイル( .xlsx)に変換することなくそのままSpreadJSで利用することができます。
スパークラインを画像として出力
Excelファイルにエクスポートする際にsaveAsViewオプションをtrueに設定することで、スパークラインの表示内容を画像として出力できるようになりました。スパークラインで表示したチャートやバーコードの見た目を維持したままExcelファイルに出力することができます。

関数/計算エンジンの強化
パフォーマンスや利便性の向上に寄与する以下の機能強化を行いました。
Web Workerを使用した増分計算がカスタム関数に対応
Web Workerを利用して増分計算を別スレッドで実行する「計算ワーカー機能」がカスタム関数にも対応しました。従来は別スレッドでの処理中にカスタム関数が出現すると一時的にUIスレッドに処理を戻すオーバーヘッドが発生していましたが、これが解消されることによりさらなるパフォーマンスの向上が期待できます。
関数の検索
「関数の挿入」ダイアログで関数の検索ができるようになりました。関数名だけでなく、関数の説明文、カテゴリ名、引数名を対象とし、入力されたキーワードで部分一致検索を行います。関数名をはっきりと覚えていない場合でも、目的の関数を見つけやすくなりました。
テキスト変換関数
Excel互換のARRAYTOTEXT関数およびVALUETOTEXT関数を使用できるようになりました。
What-If分析
リボンメニューの「データ」タブに新たに「What-If分析」を追加し、以下2種類の分析機能が利用できるようになりました。

ゴールシーク
ある数式が目標の値となるために、式中で参照している別セルの値をいくつにすべきかを探索できる「ゴールシーク機能」を追加しました。従来からCalcEngine.goalSeekメソッドを用いたゴールシーク機能を提供していましたが、V19.1Jでは内部処理の改善とExcel互換性を強化し、「What-If分析」メニューからも利用できるようになりました。
データテーブル
数式中の特定の値を変化させたときに、計算結果がどのように変わるかを表形式で一括シミュレーションできる「データテーブル機能」を追加しました。たとえば、価格や販売数量などの変動が利益に与える影響を把握しながら検討を進めたいといったシーンで簡単に分析を実施することができます。「What-If分析」メニュー、または新しく追加されたSJS.TABLE関数を用いて利用可能です。
〈ピボットテーブル〉ピボットテーブルの機能強化
フィールド操作に関する以下の機能強化を行いました。
フィールド検索
ピボットパネルにフィールドの検索機能を追加しました。フィールドの数が多い場合でも、目的のフィールドを見つけやすくなりました。
日付フィールドの自動グループ化
ピボットテーブルで日付フィールドを追加する際に、日付を自動的にグループ化(年、四半期、月など)できるようになりました。PivotTableChangingイベント、またはデザイナの設定でautoGroupPivotDateFieldをtrueに設定することで利用可能です。
〈ワークブック〉条件付き書式ルールの追加
新たに以下の2つのルールを利用できるようになりました。
スパークラインルール
条件付き書式の機能を使ってスパークラインを設定できるようになりました。通常のスパークラインではセル毎に設定を行う必要がありますが、条件付き書式を使うことで複数のセルに設定する条件を一元管理することが可能となり、開発における再利用性や、可読性の向上が期待できます。

上位/下位ルールのパーセントモード
上位/下位に該当する項目数を、件数ではなく割合で指定できるようになりました。データ数に依存せず、全体における相対的な位置に基づいて上位/下位層を把握するのに役立ちます。

〈ワークブック〉セル書式の機能強化
セルの書式において以下の3つの機能追加を行いました。
画像リッチデータ
画像リッチデータ(IImageRichData)を定義して、画像を構造化データとしてセルに設定できるようになりました。Excelと同様に画像をセルデータとして保持できるようになり、セル内に画像を設定したExcelファイルのインポート/エクスポートが可能となりました。また、セルデータとして保持されるため、並べ替え、フィルタリング、検索、ピボットテーブルなどでも使用することができます。

下線(会計)・二重下線(会計)をサポート
文字装飾機能で、テキストに「下線(会計)」および「二重下線(会計)」を設定できるようになりました。会計関連の書類を正確に扱えるほか、Excelとの互換性も向上しました。

名前付きセルテンプレート
スタイル、条件付き書式、データ検証、セル状態、の設定をまとめて、名前付きセルテンプレートとして定義・管理できるようになりました。複数箇所に同一の設定を適用する場合に、設定ミスの防止や作業効率の向上につながります。また開発においても、名前付きセルテンプレートとして定義を再利用することで、実装効率や保守性の向上が期待できます。

〈ワークブック〉メンション機能の無効化
スレッド形式のコメントでメンションが発生する直前に発火する、「GC.Spread.Sheets.Events.UserMentioning」イベントが追加されました。本イベント発生時に「args.cancel=true」に設定すると、メンションをキャンセルし、ユーザーリストも表示されず、「@」がテキストとして入力されます。また、メンションブロックが作成されず、「GC.Spread.Sheets.Events.UserMentioned」イベントも発火しません。

〈セル型〉チェックボックスのExcel互換性強化
既存機能のチェックボックス型セルに対して、Excel互換性を向上させる機能強化を行いました。
Excelインポート/エクスポートに対応
チェックボックスを維持したまたExcelファイルをインポート/エクスポートできるようになりました。
リボンメニューからExcel互換のチェックボックスを追加可能に
リボンコンテナの挿入タブに新しく追加された「チェックボックス」メニューから、セルにチェックボックスを設定できるようになりました。このメニューから追加したチェックボックスはデフォルトでExcel互換性のある設定となり、手間をかけることなくExcelの外観と操作性を維持できます。

この機能強化において、チェックボックス型セルに以下3つの設定を追加しました。
モダンモード
従来のチェックボックス、トグルボタンに加えて、よりExcelの見た目に近い「モダンモード」のUIが選べるようになりました。

チェックボックスの反応領域を設定可能に
新しくhitTestModeオプションを追加し、クリック時の反応領域を従来の「セル全体」だけでなく、Excelと同じく「チェックボックス内のみ」に設定できるようになりました。
テキスト編集モードの開始可否を設定可能に
新しく追加されたtextEditableオプションをfalseにすることで、ダブルクリックやF2キーを押した際にテキスト編集モードを開始しない設定にすることが可能になりました。
〈シェイプ〉シェイプの機能強化
新たな図形のサポートと操作性の向上を行いました。
曲線コネクタ
コネクタシェイプに新たに「曲線型」を追加しました。これにより、Excelで利用可能な3種類のコネクタ(直線/カギ線/曲線)すべてをサポートします。

シェイプ追加時の操作性向上
ドラッグ操作で位置とサイズを指定しながらシェイプを追加できるようになりました。必要な設定が1回の操作で完結し、よりスムーズに配置できます。
〈データチャート〉カテゴリ軸に階層データを設定可能に
データチャートのカテゴリ軸に階層データを設定できるようになりました。「年→四半期→月」「地域→都道府県→市区町村」のような複数レベルの階層構造を持つデータをグループ化して視覚的に表現できます。

UI/UX強化
エンドユーザーの要望にきめ細やかに対応する以下の機能強化を行いました。
スクロールバー表示の自動切り替え
シートのスクロールバーの表示/非表示を自動で切り替えられるようになりました。表示領域内にシート全体が収まっている場合は自動でスクロールバーが非表示となり、一部のみが表示されている場合はスクロールバーが表示されます。スクロールバーの利便性を維持したまま、画面内に収まっているシートはよりすっきりとした見た目で表示することが可能です。
タッチインジケータのサイズがカスタマイズ可能に
タッチデバイスでセルを選択した際に表示されるインジケーターのサイズがCSSから設定できるようになりました。「もう少し大きくしたい」といったエンドユーザーからの要望にも柔軟に対応しやすくなります。

Enterキーによる編集終了時にフォーカス移動させない設定が可能に
Enterキーでセル編集を終了した際の動作を、下のセルにフォーカスを移動することなく編集セルにとどまる動作に設定できるようになりました。新しく追加されたcommitInputコマンドをEnterキーに割り当てるのみで設定できるため、複雑な実装をすることなくエンドユーザーの要望に応じた動作を実現しやすくなりました。
〈テーブルシート〉複数列のソート
テーブルシートにおいて複数の列の項目を基準にソートができるようになりました。ソートを設定した順番に従って並べ替えが適用されます。

〈ガントシート〉ガントシートの機能強化
ガントシートにおいて以下の機能強化を実施し、より使いやすくなりました。
ガントシートパネルのUI改善
ガントシートパネルにフィールドマッピング、階層設定、タスクのスケジュールモードの設定を集約し、より使いやすくなりました。
フィールドマッピング
ガントシートパネルでデータフィールドのマッピングができるようになりました。マッピングはテーブルをバインドした際に、フィールド名・命名規則・データ型をもとに自動で行われるほか、テーブルのフィールドをドラッグ&ドロップして割り当てることもできます。

階層設定
タスク構成に階層構造を持つデータの場合、フィールドのドロップダウンから依存関係を設定できるようになりました。

タスクのスケジュールモード
バインドしたテーブルにタスクのスケジュールモードが含まれていない場合、初期化時にモードを選択するダイアログが表示されるようになりました。

ガントシートテーマ
ガントシートにワークブックテーマとテーブルテーマを適用できるようになりました。テーブル領域、タイムスケール、ガントチャート領域にフォントの背景色、交互行、グリッド線といったスタイルにテーマを適用して統一したデザインで表示できます。

水平スクロールバーの分割ハンドル
ガントシートを構成するテーブル領域(左側)とガントチャート領域(右側)それぞれ水平スクロールバーの間に分割ハンドルを追加し、ドラッグして各領域の表示幅を調整できるようになりました。
〈レポートシート〉レポート生成中のイベント
レポートの作成中に発火する「GC.Spread.Sheets.Events.ReportGenerationStageChangedイベントを追加しました。本イベントを使用して、エンドユーザーにレポートの生成状況を表示することができます。
「Angular 22」に対応
Angularの最新バージョン「22」に対応しました。

その他の機能強化
- SpreadJSの型定義ファイルに、シートの保護オプション「セルの書式設定(formatCells)」「列の書式設定(formatColumns)」「行の書式設定(formatRows)」の定義を追加しました。
- これらの保護オプションは通常SpreadJSデザイナ・リボンコンテナのUI操作からのみ利用可能です。