FRangeProtectionRule
| Packages | @univerjs/sheets |
|---|
Implementation class for range protection rules Encapsulates operations on a single protection rule
This class should not be instantiated directly. Use factory methods on
univerAPIinstead.
Overview
@univerjs/sheets
| Method | Description |
|---|---|
canDelete | Check if the current user can delete this protection rule |
canEdit | Check if the current user can edit this range |
canManageCollaborator | Check if the current user can manage collaborators for this range |
canView | Check if the current user can view this range |
getPoint | Get the value of a specific permission point |
getSnapshot | Get the current permission snapshot |
remove | Delete the current protection rule |
setPoint | Set a specific permission point for the range rule (low-level API) |
updateRanges | Update the protected ranges |
APIs
Getters & Queries
canDelete
Check if the current user can delete this protection rule.
Signature
canDelete(): booleanReturns
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(', ')}`);
}@univerjs/sheets
canEdit
Check if the current user can edit this range.
Signature
canEdit(): booleanReturns
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(', ')}`);
}@univerjs/sheets
canManageCollaborator
Check if the current user can manage collaborators for this range.
Signature
canManageCollaborator(): booleanReturns
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(', ')}`);
}@univerjs/sheets
canView
Check if the current user can view this range.
Signature
canView(): booleanReturns
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(', ')}`);
}@univerjs/sheets
getPoint
Get the value of a specific permission point.
Signature
getPoint(point: RangePermissionPoint): booleanParameters
pointRangePermissionPoint— No 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);
}@univerjs/sheets
getSnapshot
Get the current permission snapshot.
Signature
getSnapshot(): RangePermissionSnapshotReturns
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);
}@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
pointRangePermissionPoint— No descriptionvalueboolean— No 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@univerjs/sheets
updateRanges
Update the protected ranges.
Signature
async updateRanges(ranges: FRange[]): Promise<boolean>Parameters
rangesFRange[]— 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);
}@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);
}@univerjs/sheets