[]
        
(Showing Draft Content)

名前付きセルテンプレート

名前付きセルテンプレートを使用すると、ワークブック内のサポート対象範囲に適用可能な、再利用可能なセル構成を定義できます。

視覚的なスタイルプロパティのみを定義する名前付きスタイルとは異なり、名前付きセルテンプレートでは、複数のセル関連設定を 1 つの定義としてまとめて管理できます。

定義可能な構成要素は次の通りです。

  • スタイル

  • 条件付き書式ルール

  • データ検証ルール

  • セル状態

これらをテンプレートとして定義することで、ワークシートやその他の対応するシートタイプにおいて一貫した設定を適用でき、設定作業の重複を防止し効率化できます。

基本概念

テンプレート定義

名前付きセルテンプレートは、次の特性を持ちます。

  • 一意の名前で識別されます

  • ワークブック レベルで管理されます

  • 名前は大文字と小文字を区別しません

既に存在する名前でテンプレートを追加した場合、以前の定義は上書きされます。

テンプレートは workbook.namedCellTemplates を通じて管理します。

適用時反映モデル

名前付きセルテンプレートは、適用時のみ内容が反映されるモデルを採用しています。

  • テンプレートは、適用した時点で対象範囲に反映されます

  • テンプレートと適用先範囲の間に継続的な関連付けは保持されません

  • テンプレート定義を更新しても、既に適用済みの範囲には影響しません

既存の範囲に変更内容を反映させるには、テンプレートを再度適用する必要があります。

取得時の不変性

テンプレートマネージャーで get(name) を呼び出すと、登録済みテンプレートのディープコピーが返されます。

取得したオブジェクトを変更しても、登録済みテンプレートには影響しません。

既存のテンプレート定義を更新する場合は、同じ名前で add() を再度呼び出してください。それにより以前の定義は上書きされます。

適用時の動作

名前付きセルテンプレートを対象範囲に適用すると、各設定は次のルールに従って処理されます。

設定

動作

スタイル

既存のスタイルを上書きします

データ検証

既存の検証を上書きします

条件付き書式

新しいルールを追加します

セル状態

新しい状態を追加します

追加仕様は次のとおりです。

  • マージや重複排除は行いません

  • 既存の条件付き書式およびセル状態ルールは保持されます

  • 新規追加ルールの挿入優先順位は、SpreadJS の標準的なルール順序に従います

テンプレートは適用時のみ反映されるため、その後テンプレートを変更しても、既に適用済みの範囲には影響しません。

テンプレートの管理

テンプレートは、ワークブックで公開されている INamedCellTemplatesManager を通じて管理されます。

実行可能な操作は次のとおりです。

  • テンプレートの追加

  • 既存セルからのテンプレート作成

  • テンプレートの取得

  • テンプレートの削除

  • すべてのテンプレートの列挙

  • すべてのテンプレートのクリア

  • JSON によるシリアル化および逆シリアル化

テンプレートはワークブック レベルで保持され、ワークブックのシリアル化対象に含まれます。

メソッドの詳細なシグネチャおよびオプションについては、API リファレンスを参照してください。

  • INamedCellTemplatesManager

  • INamedCellTemplate

使用例:テンプレートの作成

spread.namedCellTemplates.add("Financial Amount", {
    style: {
        formatter: "#,##0.00",
        hAlign: GC.Spread.Sheets.HorizontalAlign.right
    },
    conditionalFormats: [{
        ruleType: GC.Spread.Sheets.ConditionalFormatting.RuleType.cellValueRule,
        operator: GC.Spread.Sheets.ConditionalFormatting.ComparisonOperators.lessThan,
        value1: 0,
        style: { foreColor: "Accent 2" }
    }]
});

シートタイプ別の対応

名前付きセルテンプレートは、複数のシートタイプに適用できます。

動作はシートの種類により一部異なる場合があります。

ワークシート(標準スプレッドシート)

ワークシートまたはセル範囲に対して applyNamedCellTemplate を使用します。

sheet.applyNamedCellTemplate("Financial Amount", "A1:A10");

// or
sheet.getRange("B1:B10")
     .applyNamedCellTemplate("Financial Amount");

対応アドレス形式

  • A1 形式の範囲(例: "A1:C3")

  • 行全体または列全体(例: "A:A"、"1:3")

  • テーブルの構造化参照(例: "Table1"、"Table1[[#Data]]"、"Table1[[#Headers]]")

詳細は API リファレンスを参照してください。

  • Worksheet.applyNamedCellTemplate

  • CellRange.applyNamedCellTemplate

レポートシート

レポートシートではテンプレート適用メソッドは直接公開されていません。

代わりに、レイアウトおよび書式を定義するテンプレートシートに対して適用します。

const report = spread.addSheetTab(0, "Report", GC.Spread.Sheets.SheetType.reportSheet);
const templateSheet = report.getTemplate();

templateSheet.applyNamedCellTemplate("Financial Amount", "A1:A5");

テーブルシート

テーブルシートでは、データソースのフィールド名を指定してテンプレートを適用します。

tableSheet.applyNamedCellTemplate("Financial Amount", ["price", "quantity"]);

動作仕様

  • バインドされた dataSource が必要です

  • データソースが存在しない場合、テンプレートは適用されません

  • 指定したフィールド名ごとに列単位で適用されます

  • データソースに存在しないフィールド名は無視されます

  • テンプレート内のセル状態はサポートされず、無視されます

  • 通常の条件付き書式ルールは列単位で適用されます

  • 状態ベースのルールはシート レベルで適用されます

詳細は API リファレンスを参照してください。

  • TableSheet.applyNamedCellTemplate

ガントシート

ガントシートでは、テーブルシートと同じメソッドで名前付きセルテンプレートを適用できます。

追加仕様

  • ガントチャート列は自動的に適用対象外となります

  • 組み込みの機能列は既存の対話型エディターを保持します

使用場面

次のような場合に名前付きセルテンプレートの使用を推奨します。

  • スタイル以外の設定も含めて再利用したい場合

  • 条件付き書式やデータ検証の定義を統一したい場合

  • セル状態を標準化したい場合

視覚的な書式のみを再利用する場合は、名前付きスタイルの使用を検討してください。

SpreadJS デザイナとの連携

名前付きセルテンプレートは、SpreadJS ランタイム API で完全にサポートされています。

SpreadJS デザイナでは、テンプレートの作成、編集、および適用を視覚的に操作できます。また、利便性向上のためのプリセットテンプレートが提供される場合があります。

詳細は次のドキュメントを参照してください。