[]
SpreadJSでは、セルをロックして、シートを保護することで、他のユーザーがデータを変更、移動、または削除できないようにすることができます。 ただし、ロックしたセルのデータはコピーできます。
ワークシートを保護するには、 isProtected オプションをtrueに設定します。セルのロックまたはロック解除を実現するには、lockedメソッドを使用します。
ユーザーが保護されたワークシートの特定のセルを編集できるようにするには、 locked メソッドを falseに設定します。
sheet.getCell(1,1, GC.Spread.Sheets.SheetArea.viewport).locked(false);
sheet.setValue(1,1,"unLocked");
sheet.getRange(-1,3, -1, 1).locked(false);
sheet.getRange(5, -1, 1, -1).locked(false);
sheet.options.isProtected = true;
保護されたワークシートの特定の範囲のセルをロックするには、次の手順を実行します。
カスタムスタイルを作成し、 locked フィールドを falseに設定して、すべてのセルのロックを解除します。
読み取り専用にするセル範囲を個別にロックします。
// ワークブックとワークシートを構成します。
var spread = new GC.Spread.Sheets.Workbook("ss");
var sheet = spread.getActiveSheet();
// スタイルを使用してワークシートのすべてのセルのロックを解除します。
let style = new GC.Spread.Sheets.Style();
style.locked = false;
// シート内のすべてのセルのデフォルトスタイルとしてスタイルを設定します。
sheet.setDefaultStyle(style);
// 読み取り専用にするセル範囲を個別にロックします。
new GC.Spread.Sheets.CellRange(sheet, 0, 0, 13, 4).locked(true);
// 保護するシートを設定します。
sheet.options.isProtected = true;
options.protectionOptions プロパティを使用すると、ユーザーに変更を許可する領域を指定できます。特定の領域に対し、行または列のサイズ変更、ドラッグ、挿入、削除などを許可または禁止できます。
isProtected オプションをtrueに設定すると、以下のプロパティが有効になり、それぞれ次のような効果が得られます。
プロパティ | 説明 |
---|---|
allowDragInsertRows | 行の挿入時にドラッグ操作を実行できるようにします。 |
allowDragInsertColumns | 列の挿入時にドラッグ操作を実行できるようにします。 |
allowInsertRows | 行を挿入できるようにします。 |
allowInsertColumns | 列を挿入できるようにします。 |
allowDeleteRows | 行を削除できるようにします。 |
allowDeleteColumns | 列を削除できるようにします。 |
allowSelectLockedCells | ロックされたセルを選択できるようにします。 |
allowSelectUnlockedCells | ロックされていないセルを選択できるようにします。 |
allowSort | 範囲の並べ替えが行えるようにします。 |
allowFilter | 範囲のフィルタ処理が行えるようにします。 |
allowEditObjects | フローティングオブジェクトを編集できるようにします。 |
allowResizeRows | 行をサイズ変更できるようにします。 |
allowResizeColumns | 列をサイズ変更できるようにします。 |
allowOutlineRows | 行グループを展開または折りたたむことができるようにします。 |
allowOutlineColumns | 列グループを展開または折りたたむことができるようにします。 |
isProtected オプションをfalseに設定すると、上記の保護オプションはすべて無効となります。
ワークシートを保護し、Spread JSで使用可能なさまざまな保護オプションを有効にすることができます。
var spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss"));
var sheet = spread.getActiveSheet();
sheet.options.isProtected = true;
sheet.options.protectionOptions.allowDeleteRows = true;
sheet.options.protectionOptions.allowDeleteColumns = true;
sheet.options.protectionOptions.allowInsertRows = true;
sheet.options.protectionOptions.allowInsertColumns = true;
sheet.options.protectionOptions.allowDragInsertRows = true;
sheet.options.protectionOptions.allowDragInsertColumns = true;
sheet.options.protectionOptions.allowOutlineColumns = true;
注:保護オプションallowInsertRows、allowInsertColumns、allowDeleteRows、allowDeleteColumnsは、ユーザーインタフェース上で操作を実行する場合のみに適用されます。つまり、コンテキストメニューでの、行および列の挿入および削除コマンドのみが制限されます。
デフォルトでは、保護されたワークシートにアウトライン行や列のグループを展開または折りたたむことができません。この場合、invalidOperationイベントが発生します。また、次に示すように、このイベントを使用してアラートを表示することもできます。
// 警告メッセージを設定します。
spread.bind(GC.Spread.Sheets.Events.InvalidOperation, (e, args) => {
if(args.invalidType === GC.Spread.Sheets.InvalidOperationType.groupProtected){
args.message="保護されたワークシートでは、展開または折りたたみ操作は許可されていません。";
alert(args.message)
}
});
protect メソッドを使用して、ワークシートを保護するときに、パスワードを設定することができます。なお、protect メソッドを呼び出すと、isProtected オプションは自動的に true に設定されます。
// ワークシートを保護します。
var password = 'AddedPassword';
activeSheet.protect(password);
ワークシートの保護を解除するには、パスワードを unprotect メソッドのパラメーターとして指定することができます。
// パスワードでワークシートの保護を解除します。
if(activeSheet.hasPassword()) {
activeSheet.unprotect(password);
} else {
activeSheet.unprotect();
}
Style クラスの hidden プロパティまたは CellRange クラスの hidden メソッドを使用して、保護されたシートでセルの数式の表示を制御できます。デフォルトでは、hidden 属性は false に設定されており、数式が非表示ではないことを示します。さらに、SSJSON、SJS、XLSX のエクスポートとインポートもサポートされています。
次のコード サンプルは、GC.Spread.Sheets.Style タイプの hidden プロパティを使用してセルの数式を非表示にする方法を示しています。
// シートを保護するように設定します。
activeSheet.options.isProtected = true;
// スタイルを作成し、hiddenプロパティを true に設定します。
var style = new GC.Spread.Sheets.Style();
style.hidden = true;
// セルに、スタイルを設定します。
activeSheet.setStyle(1, 1, style, GC.Spread.Sheets.SheetArea.viewport);
// スタイルを設定したセルに、数式を設定します。
activeSheet.setFormula(1, 1, "=SUM(1,2)");
また、次のコード サンプルでは、GC.Spread.Sheets.CellRange の hidden メソッドを使用します。
// シートが保護されているときにセルの数式を非表示に設定します。
activeSheet.options.isProtected = true;
activeSheet.setFormula(1, 3, "=SUM(10,20)");
activeSheet.getRange(1, 3, GC.Spread.Sheets.SheetArea.viewport).hidden(true);
hidden プロパティが設定されたセルでは、次の SpreadJS の機能は、hidden 属性の影響を受けます。
数式テキストボックスと数式エディタパネルには、セルの数式は表示されません。
セルが編集モードの場合、入力エディタのデフォルト データは空になります。
セルをコピーした場合、数式はコピーせず結果のみをコピーしますが、切り取りには常に数式が含まれます。
ただし、locked プロパティを true に設定すると、セルの切り取りを防ぐことができます。
showFormulas プロパティは、セルの数式を表示しません。
FORMULATEXT 関数は、セルの数式を取得できません。
次の表で説明されているように、hidden プロパティと locked プロパティは相互に機能に影響を与えることに注意してください。
シート保護 | locked | hidden | 結果 |
---|---|---|---|
ワークシートが保護されていない場合 | True/False | True/False | locked および hidden プロパティは相互に影響を与えません。 |
ワークシートが保護されている場合 | False | False | セルは編集可能で、数式も普通に表示されます。 |
True | False | セルはロックされ編集できませんが、数式の取得や表示は可能です。 | |
False | True | セルは編集可能ですが、数式は表示されません。 編集モードの場合、セルの入力エディタにデフォルト値として null が表示されます。 | |
True | True | セルはロックされて編集できません。数式の取得および表示もできません。 |
制限事項
テーブルシート(TableSheet)、ガントシート(GanttSheet)、およびレポートシート(ReportSheet)は hidden 属性をサポートしていません。
hidden属性は、API を通じた数式へのアクセスには影響しません。
[シートの保護]ダイアログを表示するには、タブストリップに表示されているシート名を右クリックして、[シートの保護]オプションを選択します。
[シートの保護]ダイアログを使用してワークシートを保護および保護解除する手順
[シートの保護]ダイアログボックスでは、ワークシートを保護するパスワードを入力して、使用可能なオプションのリストから複数のオプションをチェック・チェック解除します。
ワークシートを保護するパスワードを入力すると、パスワードを確認する別のダイアログボックスが表示されます。
パスワードが正常に設定されると、保護されたワークシートを表示することができますが、シートに変更を加えることはできません。ワークシートの保護を解除するには、[シートの保護の解除]ダイアログに設定されたパスワードを入力します。