SpreadJS製品ヘルプ
シートの保護とセルのロック
機能 > ワークシート > シートの保護とセルのロック

SpreadJSでは、セルをロックして、シートを保護することで、他のユーザーがデータを変更、移動、または削除できないようにすることができます。 ただし、ロックしたセルのデータはコピーできます。

ワークシートを保護するには、isProtectedオプションをtrueに設定します。セルのロックまたはロック解除を実現するには、locked メソッドを使用します。

保護されたワークシート内のセルのロック解除

ユーザーが保護されたワークシートの特定のセルを編集できるようにするには、lockedメソッドを falseに設定します。

JavaScript
コードのコピー
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;

保護されたワークシートでセル範囲をロックする

保護されたワークシートの特定の範囲のセルをロックするには、次の手順を実行します。

  1. カスタムスタイルを作成し、lockedフィールドを falseに設定して、すべてのセルのロックを解除します。
  2. 読み取り専用にするセル範囲を個別にロックします。
JavaScript
コードのコピー
// ワークブックとワークシートを構成します。
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で使用可能なさまざまな保護オプションを有効にすることができます。

JavaScript
コードのコピー
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イベントが発生します。また、次に示すように、このイベントを使用してアラートを表示することもできます。

JavaScript
コードのコピー
// 警告メッセージを設定します。
spread.bind(GC.Spread.Sheets.Events.InvalidOperation, (e, args) => {
    if(args.invalidType === GC.Spread.Sheets.InvalidOperationType.groupProtected){
    args.message="保護されたワークシートでは、展開または折りたたみ操作は許可されていません。";
    alert(args.message)
    }
});