FRangeProtectionRule

GitHubEdit on GitHub
Packages@univerjs/sheets
CORE

Implementation class for range protection rules Encapsulates operations on a single protection rule

This class should not be instantiated directly. Use factory methods on univerAPI instead.

Overview

@univerjs/sheets

MethodDescription
canDeleteCheck if the current user can delete this protection rule
canEditCheck if the current user can edit this range
canManageCollaboratorCheck if the current user can manage collaborators for this range
canViewCheck if the current user can view this range
getPointGet the value of a specific permission point
getSnapshotGet the current permission snapshot
removeDelete the current protection rule
setPointSet a specific permission point for the range rule (low-level API)
updateRangesUpdate the protected ranges

APIs

Getters & Queries

canDelete

Check if the current user can delete this protection rule.

Signature

canDelete(): boolean

Returns

  • boolean — true if can delete rule, false otherwise.

Examples

const fWorkbook = univerAPI.getActiveWorkbook();
const fWorksheet = fWorkbook.getActiveSheet();
const rules = await fWorksheet.getWorksheetPermission().listRangeProtectionRules();
// Check if the first rule allows deleting the rule
const rule = rules[0];
if (rule?.canDelete()) {
  console.log(`You can delete this protection rule for this range ${rule.ranges.map(r => r.getA1Notation()).join(', ')}`);
}
Source: @univerjs/sheets

canEdit

Check if the current user can edit this range.

Signature

canEdit(): boolean

Returns

  • boolean — true if editable, false otherwise.

Examples

const fWorkbook = univerAPI.getActiveWorkbook();
const fWorksheet = fWorkbook.getActiveSheet();
const rules = await fWorksheet.getWorksheetPermission().listRangeProtectionRules();
// Check if the first rule allows editing
const rule = rules[0];
if (rule?.canEdit()) {
  console.log(`You can edit this range ${rule.ranges.map(r => r.getA1Notation()).join(', ')}`);
}
Source: @univerjs/sheets

canManageCollaborator

Check if the current user can manage collaborators for this range.

Signature

canManageCollaborator(): boolean

Returns

  • boolean — true if can manage collaborators, false otherwise.

Examples

const fWorkbook = univerAPI.getActiveWorkbook();
const fWorksheet = fWorkbook.getActiveSheet();
const rules = await fWorksheet.getWorksheetPermission().listRangeProtectionRules();
// Check if the first rule allows managing collaborators
const rule = rules[0];
if (rule?.canManageCollaborator()) {
  console.log(`You can manage collaborators for this range ${rule.ranges.map(r => r.getA1Notation()).join(', ')}`);
}
Source: @univerjs/sheets

canView

Check if the current user can view this range.

Signature

canView(): boolean

Returns

  • boolean — true if viewable, false otherwise.

Examples

const fWorkbook = univerAPI.getActiveWorkbook();
const fWorksheet = fWorkbook.getActiveSheet();
const rules = await fWorksheet.getWorksheetPermission().listRangeProtectionRules();
// Check if the first rule allows viewing
const rule = rules[0];
if (rule?.canView()) {
  console.log(`You can view this range ${rule.ranges.map(r => r.getA1Notation()).join(', ')}`);
}
Source: @univerjs/sheets

getPoint

Get the value of a specific permission point.

Signature

getPoint(point: RangePermissionPoint): boolean

Parameters

  • point RangePermissionPointNo description

Returns

  • boolean — true if allowed, false if denied.

Examples

const fWorkbook = univerAPI.getActiveWorkbook();
const fWorksheet = fWorkbook.getActiveSheet();
const rules = await fWorksheet.getWorksheetPermission().listRangeProtectionRules();
// Check if the first rule allows editing
if (rules.length > 0) {
  const rule = rules[0];
  const canEdit = rule.getPoint(univerAPI.Enum.RangePermissionPoint.Edit);
  console.log(canEdit);
}
Source: @univerjs/sheets

getSnapshot

Get the current permission snapshot.

Signature

getSnapshot(): RangePermissionSnapshot

Returns

  • RangePermissionSnapshot — Snapshot of all permission points.

Examples

const fWorkbook = univerAPI.getActiveWorkbook();
const fWorksheet = fWorkbook.getActiveSheet();
const rules = await fWorksheet.getWorksheetPermission().listRangeProtectionRules();
// Get the permission snapshot of the first rule
if (rules.length > 0) {
  const rule = rules[0];
  const snapshot = rule.getSnapshot();
  console.log(snapshot);
}
Source: @univerjs/sheets

Setters & Modifiers

setPoint

Set a specific permission point for the range rule (low-level API).

Important: This method only updates the permission point value for an existing protection rule. It does NOT create permission checks that will block actual editing operations. You must call protect() first to create a protection rule before using this method.

This method is useful for:

  • Fine-tuning permissions after creating a protection rule with protect()
  • Dynamically adjusting permissions based on runtime conditions
  • Advanced permission management scenarios

Signature

async setPoint(point: RangePermissionPoint, value: boolean): Promise<void>

Parameters

  • point RangePermissionPointNo description
  • value booleanNo description

Returns

  • Promise<void> — A promise that resolves when the point is set.

Tags

  • @throws — If no protection rule exists for this range.

Examples

const fWorkbook = univerAPI.getActiveWorkbook();
const fWorksheet = fWorkbook.getActiveSheet();
const fRange = fWorksheet.getRange('A1:B2');
// First, create a protection rule
const rule = await fRange.getRangePermission().protect({ name: 'My Range', allowEdit: true });
// Then you can dynamically update permission points
await rule.setPoint(univerAPI.Enum.RangePermissionPoint.Edit, false); // Now disable edit
await rule.setPoint(univerAPI.Enum.RangePermissionPoint.View, true);  // Ensure view is enabled
Source: @univerjs/sheets

updateRanges

Update the protected ranges.

Signature

async updateRanges(ranges: FRange[]): Promise<boolean>

Parameters

  • ranges FRange[]No description

Returns

  • Promise<boolean> — A promise that resolves when the ranges are updated.

Examples

const fWorkbook = univerAPI.getActiveWorkbook();
const fWorksheet = fWorkbook.getActiveSheet();
const rules = await fWorksheet.getWorksheetPermission().listRangeProtectionRules();
// Update the ranges to A1:C3 for the first rule
if (rules.length > 0) {
  const rule = rules[0];
  const result = await rule.updateRanges([fWorksheet.getRange('A1:C3')]);
  console.log(result);
}
Source: @univerjs/sheets

Actions & Operations

remove

Delete the current protection rule.

Signature

async remove(): Promise<boolean>

Returns

  • Promise<boolean> — A promise that resolves when the rule is removed.

Examples

const fWorkbook = univerAPI.getActiveWorkbook();
const fWorksheet = fWorkbook.getActiveSheet();
const rules = await fWorksheet.getWorksheetPermission().listRangeProtectionRules();
// Remove the first protection rule
if (rules.length > 0) {
  const rule = rules[0];
  const result = await rule.remove();
  console.log(result);
}
Source: @univerjs/sheets