[]
ユーザー定義のカスタム名は、シート内の情報を表す識別子の役割を果たします。セル範囲または数式を参照するカスタム名を設定できます。定義したカスタム名は、数式内で使用できます。この場合は、数式の評価時に、カスタム名の値が参照および評価されます。カスタム名を作成するには、addCustomNameメソッドを使用します。
次のサンプルコードは、カスタム名を作成します。
activeSheet.setValue(0, 0, 1);
activeSheet.setValue(0, 1, 2);
activeSheet.setValue(0, 2, 3);
// isReadOnly パラメータを true に設定して、カスタム名を追加します。
activeSheet.addCustomName("customName1","=12", 0, 0, 'readonly', true);
activeSheet.addCustomName("customName2","Average(20,45)", 0, 0);
activeSheet.addCustomName("customName3", "=$B$1:$C$1", 0, 0);
activeSheet.setFormula(1, 0, "customName1");
activeSheet.setFormula(1, 1, "customName2");
activeSheet.setFormula(1, 2, "sum(customName3)");
SpreadJSデザイナの[名前の管理]ダイアログボックスから読み取り専用のカスタム名を変更または削除することはできません。読み取り専用のカスタム名を選択すると、[編集]と[削除]ボタンが無効になり、カスタム名も編集不可の状態になります。読み取り専用のカスタム名は、APIを使用するのみ変更できます。
NameInfo
クラスの set
メソッドを使用して、既存のカスタム名の名前やコメントを変更するなど、数式やその他の情報を更新できます。
次のサンプルコードを使用すると、カスタム名情報を更新できます。
// カスタム名を変更すると、参照されているすべての数式が再計算されます。
activeSheet.getCustomName("customName2").set("updatedName");
シート名のないカスタム名の数式は、ワークシートにカスタム名がない場合、ワークブックのカスタム名を使用するように更新されます。
次のサンプルコードを使用すると、ワークブックのカスタム名を使用できます。
spread.sheets[0].setFormula(0, 0, "=customName1+1");
spread.sheets[0].setFormula(1, 0, "=Sheet1!customName1+1");
spread.addCustomName("customName1", "111"); // A1 shows 111, A2 keeps #NAME!
spread.getCustomName("customName1").set("customUpdateName1"); // A1:=bbb+1 A2:=Sheet1!customName1+1
ただし、更新されたカスタム名がすでに存在する場合は、「無効なカスタム名」エラーが発生します。
activeSheet.addCustomName("updatedName", "222");
activeSheet.getCustomName("customName2").set("updatedName");
カスタム名情報を更新するために SpreadJS でサポートされているその他のさまざまなシナリオは次のとおりです。
数式で古い名前が使用されず、新しい名前が数式で参照されている場合、新しい名前で参照されているセルの数式は、カスタム名をセットした後に再計算されます。
activeSheet.setFormula(2, 0, "updatedName+1"); // the formula result is #NAME!
activeSheet.getCustomName("customName1").set("updatedName"); // The formula result is 13
数式で新しい名前と古い名前の両方が参照されている場合。
// 例外「現在の名前と新しい名前の両方がセルの数式で参照されています」がスローされます。
activeSheet.setFormula(1, 0, "customName1");
activeSheet.setFormula(1, 1, "updatedName");
activeSheet.getCustomName("customName1").set("updatedName");
数式を更新し、カスタム名を変更します。
activeSheet.getCustomName("customName2").set("updatedName","SUM(20,45)");
ベース行とベース列を使用してカスタム名の数式を更新し、コメントを更新します。
activeSheet.getCustomName("customName2").set(null,"=A1", 0,1, "the cell adjacent to the upper left corner");
カスタム名のコメントを更新します。
activeSheet.addCustomName("customName4", "=$A$1");
activeSheet.getCustomName("customName4").set(null, null, null, null, "the A1 cell in current sheet");
別のカスタム名で使用されているカスタム名を更新します。
activeSheet.addCustomName("customName4", "=$A$1");
activeSheet.addCustomName("customName5", "=customName4+1");
activeSheet.getCustomName("customName4").set("customName6", "=$C$2", null, null); // the custom name customName5 will be "=customName6+1"
古い名前は使用されていないが新しい名前が使用されている別のカスタム名で使用されているカスタム名を更新します。
activeSheet.addCustomName("customName4", "=$A$1");
activeSheet.addCustomName("customName5", "=customName6+1");
activeSheet.getCustomName("customName4").set("customName6", "=$D$2", null, null); //customName4 will be changed to customName6
メモ: SpreadJS は、ワークブックのカスタム名に応じて数式を変更しません。