# FWorksheetPermission

> Language fallback: requested `ko-KR`; content is `en-US`.

- Human documentation: [https://docs.univer.ai/ko-KR/reference/facade/worksheet-permission](https://docs.univer.ai/ko-KR/reference/facade/worksheet-permission)

- Agent Markdown: [https://docs.univer.ai/ko-KR/reference/facade/worksheet-permission.md](https://docs.univer.ai/ko-KR/reference/facade/worksheet-permission.md)

- Requested language: `ko-KR`

- Content language: `en-US`

- Documentation version: `1.0.4`

- Source: [facade/worksheet-permission.mdx](https://github.com/dream-num/documentation/blob/dev/content/reference/facade/worksheet-permission.mdx)

---

Implementation class for WorksheetPermission
Provides worksheet-level permission control

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

## Access

Access through:

* [`FWorksheet.getWorksheetPermission()`](https://docs.univer.ai/ko-KR/reference/facade/worksheet.md#getworksheetpermission)

## Setup

Register [`@univerjs/sheets`](https://docs.univer.ai/ko-KR/reference/packages/plugins/univerjs/sheets.md) or a preset that includes it. In plugin mode, import `@univerjs/sheets/facade`. Additional methods below require their listed plugin packages. See [Facade setup](https://docs.univer.ai/ko-KR/guides/sheets/getting-started/facade.md).

## `@univerjs/sheets`

### `FWorksheetPermission.applyConfig`

Apply a permission configuration to the worksheet.

```typescript
applyConfig(config: IWorksheetPermissionConfig): Promise<void>
```

**Parameters**

* `config` — Required. The configuration to apply.

**Returns**

A promise that resolves when the configuration is applied.

**Examples**

```ts
const worksheet = univerAPI.getActiveWorkbook()?.getSheetByName('Sheet1')
if (!worksheet) throw new Error('worksheet is not available')
const permission = worksheet?.getWorksheetPermission()
await permission?.applyConfig({
  mode: 'readOnly',
  points: {
    [univerAPI.Enum.WorksheetPermissionPoint.View]: true,
    [univerAPI.Enum.WorksheetPermissionPoint.Edit]: false,
  },
})
```

**Types:** [`Promise`](https://unpkg.com/@typescript/typescript-darwin-arm64/lib/lib.es5.d.ts) · [`IWorksheetPermissionConfig`](https://unpkg.com/@univerjs/sheets/lib/types/facade/permission/permission-types.d.ts)

**Package:** [`@univerjs/sheets`](https://docs.univer.ai/ko-KR/reference/packages/plugins/univerjs/sheets.md) · [Type definitions](https://unpkg.com/@univerjs/sheets/lib/types/facade/permission/f-worksheet-permission.d.ts)

### `FWorksheetPermission.canEdit`

Check if the worksheet is editable.

```typescript
canEdit(): boolean
```

**Returns**

true if the worksheet can be edited, false otherwise.

**Examples**

```ts
const fWorkbook = univerAPI.getActiveWorkbook()
const fWorksheet = fWorkbook.getSheetByName('Sheet1')
if (!fWorksheet) throw new Error('fWorksheet is not available')
if (fWorksheet.getWorksheetPermission().canEdit()) {
  console.log('Worksheet is editable')
}
```

**Package:** [`@univerjs/sheets`](https://docs.univer.ai/ko-KR/reference/packages/plugins/univerjs/sheets.md) · [Type definitions](https://unpkg.com/@univerjs/sheets/lib/types/facade/permission/f-worksheet-permission.d.ts)

### `FWorksheetPermission.canEditCell`

Check if a specific cell can be edited.

```typescript
canEditCell(row: number, col: number): boolean
```

**Parameters**

* `row` — Required. Row index.
* `col` — Required. Column index.

**Returns**

true if the cell can be edited, false otherwise.

**Examples**

```ts
const fWorkbook = univerAPI.getActiveWorkbook()
const fWorksheet = fWorkbook.getSheetByName('Sheet1')
if (!fWorksheet) throw new Error('fWorksheet is not available')
// Check if cell C3 can be edited
const fRange = fWorksheet.getRange('C3')
const canEdit = fWorksheet.getWorksheetPermission().canEditCell(fRange.getRow(), fRange.getColumn())
console.log(canEdit)
```

**Package:** [`@univerjs/sheets`](https://docs.univer.ai/ko-KR/reference/packages/plugins/univerjs/sheets.md) · [Type definitions](https://unpkg.com/@univerjs/sheets/lib/types/facade/permission/f-worksheet-permission.d.ts)

### `FWorksheetPermission.canView`

Check if the worksheet is viewable.

```typescript
canView(): boolean
```

**Returns**

true if the worksheet can be viewed, false otherwise.

**Examples**

```ts
const fWorkbook = univerAPI.getActiveWorkbook()
const fWorksheet = fWorkbook.getSheetByName('Sheet1')
if (!fWorksheet) throw new Error('fWorksheet is not available')
if (fWorksheet.getWorksheetPermission().canView()) {
  console.log('Worksheet is viewable')
}
```

**Package:** [`@univerjs/sheets`](https://docs.univer.ai/ko-KR/reference/packages/plugins/univerjs/sheets.md) · [Type definitions](https://unpkg.com/@univerjs/sheets/lib/types/facade/permission/f-worksheet-permission.d.ts)

### `FWorksheetPermission.canViewCell`

Check if a specific cell can be viewed.

```typescript
canViewCell(row: number, col: number): boolean
```

**Parameters**

* `row` — Required. Row index.
* `col` — Required. Column index.

**Returns**

true if the cell can be viewed, false otherwise.

**Examples**

```ts
const fWorkbook = univerAPI.getActiveWorkbook()
const fWorksheet = fWorkbook.getSheetByName('Sheet1')
if (!fWorksheet) throw new Error('fWorksheet is not available')
// Check if cell C3 can be viewed
const fRange = fWorksheet.getRange('C3')
const canView = fWorksheet.getWorksheetPermission().canViewCell(fRange.getRow(), fRange.getColumn())
console.log(canView)
```

**Package:** [`@univerjs/sheets`](https://docs.univer.ai/ko-KR/reference/packages/plugins/univerjs/sheets.md) · [Type definitions](https://unpkg.com/@univerjs/sheets/lib/types/facade/permission/f-worksheet-permission.d.ts)

### `FWorksheetPermission.debugCellPermission`

Debug cell permission information.

```typescript
debugCellPermission(row: number, col: number): Promise<FRangeProtectionRule | undefined>
```

**Parameters**

* `row` — Required. Row index.
* `col` — Required. Column index.

**Returns**

A promise resolving to the protection rule affecting this cell, or `undefined` if no range protection rule applies.

**Examples**

```ts
const fWorkbook = univerAPI.getActiveWorkbook()
const fWorksheet = fWorkbook.getSheetByName('Sheet1')
if (!fWorksheet) throw new Error('fWorksheet is not available')
// Get debug info for cell C3
const fRange = fWorksheet.getRange('C3')
const debugInfo = await fWorksheet
  .getWorksheetPermission()
  .debugCellPermission(fRange.getRow(), fRange.getColumn())
console.log(debugInfo)
```

**Types:** [`FRangeProtectionRule`](https://docs.univer.ai/ko-KR/reference/facade/range-protection-rule.md) · [`Promise`](https://unpkg.com/@typescript/typescript-darwin-arm64/lib/lib.es5.d.ts)

**Package:** [`@univerjs/sheets`](https://docs.univer.ai/ko-KR/reference/packages/plugins/univerjs/sheets.md) · [Type definitions](https://unpkg.com/@univerjs/sheets/lib/types/facade/permission/f-worksheet-permission.d.ts)

### `FWorksheetPermission.getPoint`

Get the value of a specific permission point.

```typescript
getPoint(point: WorksheetPermissionPoint): boolean
```

**Parameters**

* `point` — Required. The permission point to query.

**Returns**

true if allowed, false if denied.

**Examples**

```ts
const fWorkbook = univerAPI.getActiveWorkbook()
const fWorksheet = fWorkbook.getSheetByName('Sheet1')
if (!fWorksheet) throw new Error('fWorksheet is not available')
const permission = fWorksheet.getWorksheetPermission()
const canInsertRow = permission.getPoint(univerAPI.Enum.WorksheetPermissionPoint.InsertRow)
console.log(canInsertRow)
```

**Types:** [`WorksheetPermissionPoint`](https://unpkg.com/@univerjs/sheets/lib/types/facade/permission/permission-types.d.ts)

**Package:** [`@univerjs/sheets`](https://docs.univer.ai/ko-KR/reference/packages/plugins/univerjs/sheets.md) · [Type definitions](https://unpkg.com/@univerjs/sheets/lib/types/facade/permission/f-worksheet-permission.d.ts)

### `FWorksheetPermission.getSnapshot`

Get a snapshot of all permission points.

```typescript
getSnapshot(): WorksheetPermissionSnapshot
```

**Returns**

An object containing all permission point values.

**Examples**

```ts
const fWorkbook = univerAPI.getActiveWorkbook()
const fWorksheet = fWorkbook.getSheetByName('Sheet1')
if (!fWorksheet) throw new Error('fWorksheet is not available')
const snapshot = fWorksheet.getWorksheetPermission().getSnapshot()
console.log(snapshot)
```

**Types:** [`WorksheetPermissionSnapshot`](https://unpkg.com/@univerjs/sheets/lib/types/facade/permission/permission-types.d.ts)

**Package:** [`@univerjs/sheets`](https://docs.univer.ai/ko-KR/reference/packages/plugins/univerjs/sheets.md) · [Type definitions](https://unpkg.com/@univerjs/sheets/lib/types/facade/permission/f-worksheet-permission.d.ts)

### `FWorksheetPermission.isProtected`

Check if worksheet is currently protected.

```typescript
isProtected(): boolean
```

**Returns**

true if protected, false otherwise.

**Examples**

```ts
const fWorkbook = univerAPI.getActiveWorkbook()
const fWorksheet = fWorkbook.getSheetByName('Sheet1')
if (!fWorksheet) throw new Error('fWorksheet is not available')
if (fWorksheet.getWorksheetPermission().isProtected()) {
  console.log('Worksheet is protected')
}
```

**Package:** [`@univerjs/sheets`](https://docs.univer.ai/ko-KR/reference/packages/plugins/univerjs/sheets.md) · [Type definitions](https://unpkg.com/@univerjs/sheets/lib/types/facade/permission/f-worksheet-permission.d.ts)

### `FWorksheetPermission.listRangeProtectionRules`

List all range protection rules for the worksheet.

```typescript
listRangeProtectionRules(options?: { ignoreCollaborators?: boolean; }): Promise<FRangeProtectionRule[]>
```

**Parameters**

* `options` — Optional. Options for listing range protection rules.

**Returns**

Array of protection rules.

**Examples**

```ts
const fWorkbook = univerAPI.getActiveWorkbook()
const fWorksheet = fWorkbook.getSheetByName('Sheet1')
if (!fWorksheet) throw new Error('fWorksheet is not available')
const rules = await fWorksheet.getWorksheetPermission().listRangeProtectionRules()
console.log(rules)
```

**Types:** [`FRangeProtectionRule`](https://docs.univer.ai/ko-KR/reference/facade/range-protection-rule.md) · [`Promise`](https://unpkg.com/@typescript/typescript-darwin-arm64/lib/lib.es5.d.ts)

**Package:** [`@univerjs/sheets`](https://docs.univer.ai/ko-KR/reference/packages/plugins/univerjs/sheets.md) · [Type definitions](https://unpkg.com/@univerjs/sheets/lib/types/facade/permission/f-worksheet-permission.d.ts)

### `FWorksheetPermission.protect`

Create worksheet protection with collaborators support.
This must be called before setting permission points for collaboration to work.

```typescript
protect(options?: IWorksheetProtectionOptions): Promise<string>
```

**Parameters**

* `options` — Optional. Protection options including allowed users.

**Returns**

The permissionId for the created protection.

**Examples**

```ts
const fWorkbook = univerAPI.getActiveWorkbook()
const fWorksheet = fWorkbook.getSheetByName('Sheet1')
if (!fWorksheet) throw new Error('fWorksheet is not available')
const permission = fWorksheet.getWorksheetPermission()

// Create worksheet protection with collaborators
const permissionId = await permission.protect({
  allowedUsers: ['user1', 'user2'],
  name: 'My Worksheet Protection',
})

// Now set permission points
await permission?.setMode('readOnly')
```

**Types:** [`Promise`](https://unpkg.com/@typescript/typescript-darwin-arm64/lib/lib.es5.d.ts) · [`IWorksheetProtectionOptions`](https://unpkg.com/@univerjs/sheets/lib/types/facade/permission/permission-types.d.ts)

**Package:** [`@univerjs/sheets`](https://docs.univer.ai/ko-KR/reference/packages/plugins/univerjs/sheets.md) · [Type definitions](https://unpkg.com/@univerjs/sheets/lib/types/facade/permission/f-worksheet-permission.d.ts)

### `FWorksheetPermission.protectRanges`

Protect multiple ranges at once (batch operation).

```typescript
protectRanges(configs: Array<{ ranges: FRange[]; options?: IRangeProtectionOptions; }>): Promise<FRangeProtectionRule[]>
```

**Parameters**

* `configs` — Required. Array of protection configurations.

**Returns**

Array of created protection rules.

**Examples**

```ts
const fWorkbook = univerAPI.getActiveWorkbook()
const fWorksheet = fWorkbook.getSheetByName('Sheet1')
if (!fWorksheet) throw new Error('fWorksheet is not available')
const rules = await fWorksheet.getWorksheetPermission().protectRanges([
  {
    ranges: [fWorksheet.getRange('A1:B2')],
    options: {
      name: 'Protected Area 1',
      allowedUsers: ['user1', 'user2'],
      allowViewByOthers: true,
    },
  },
  {
    ranges: [fWorksheet.getRange('C3:D4')],
    options: { name: 'Protected Area 2', allowViewByOthers: false },
  },
])
console.log(rules)
```

**Types:** [`FRangeProtectionRule`](https://docs.univer.ai/ko-KR/reference/facade/range-protection-rule.md) · [`Promise`](https://unpkg.com/@typescript/typescript-darwin-arm64/lib/lib.es5.d.ts) · [`Array`](https://unpkg.com/@typescript/typescript-darwin-arm64/lib/lib.es5.d.ts) · [`FRange`](https://docs.univer.ai/ko-KR/reference/facade/range.md) · [`IRangeProtectionOptions`](https://unpkg.com/@univerjs/sheets/lib/types/facade/permission/permission-types.d.ts)

**Package:** [`@univerjs/sheets`](https://docs.univer.ai/ko-KR/reference/packages/plugins/univerjs/sheets.md) · [Type definitions](https://unpkg.com/@univerjs/sheets/lib/types/facade/permission/f-worksheet-permission.d.ts)

### `FWorksheetPermission.setEditable`

Set the worksheet to editable mode.

```typescript
setEditable(): Promise<void>
```

**Returns**

A promise that resolves when the mode is set.

**Examples**

```ts
const fWorkbook = univerAPI.getActiveWorkbook()
const fWorksheet = fWorkbook.getSheetByName('Sheet1')
if (!fWorksheet) throw new Error('fWorksheet is not available')
await fWorksheet.getWorksheetPermission().setEditable()
```

**Types:** [`Promise`](https://unpkg.com/@typescript/typescript-darwin-arm64/lib/lib.es5.d.ts)

**Package:** [`@univerjs/sheets`](https://docs.univer.ai/ko-KR/reference/packages/plugins/univerjs/sheets.md) · [Type definitions](https://unpkg.com/@univerjs/sheets/lib/types/facade/permission/f-worksheet-permission.d.ts)

### `FWorksheetPermission.setMode`

Set permission mode for the worksheet.
Automatically creates worksheet protection if not already protected.

```typescript
setMode(mode: WorksheetMode): Promise<void>
```

**Parameters**

* `mode` — Required. The permission mode to set ('editable' | 'readOnly' | 'filterOnly' | 'commentOnly').

**Returns**

A promise that resolves when the mode is set.

**Examples**

```ts
const fWorkbook = univerAPI.getActiveWorkbook()
const fWorksheet = fWorkbook.getSheetByName('Sheet1')
if (!fWorksheet) throw new Error('fWorksheet is not available')
await fWorksheet.getWorksheetPermission().setMode('readOnly')
```

**Types:** [`Promise`](https://unpkg.com/@typescript/typescript-darwin-arm64/lib/lib.es5.d.ts) · [`WorksheetMode`](https://unpkg.com/@univerjs/sheets/lib/types/facade/permission/permission-types.d.ts)

**Package:** [`@univerjs/sheets`](https://docs.univer.ai/ko-KR/reference/packages/plugins/univerjs/sheets.md) · [Type definitions](https://unpkg.com/@univerjs/sheets/lib/types/facade/permission/f-worksheet-permission.d.ts)

### `FWorksheetPermission.setPoint`

Set a specific permission point for the worksheet.
Automatically creates worksheet protection if not already protected.

```typescript
setPoint(point: WorksheetPermissionPoint, value: boolean): Promise<void>
```

**Parameters**

* `point` — Required. The permission point to set.
* `value` — Required. The value to set (true = allowed, false = denied).

**Returns**

A promise that resolves when the point is set.

**Examples**

```ts
const fWorkbook = univerAPI.getActiveWorkbook()
const fWorksheet = fWorkbook.getSheetByName('Sheet1')
if (!fWorksheet) throw new Error('fWorksheet is not available')
const permission = fWorksheet.getWorksheetPermission()
await permission.setPoint(univerAPI.Enum.WorksheetPermissionPoint.InsertRow, false)
```

**Types:** [`Promise`](https://unpkg.com/@typescript/typescript-darwin-arm64/lib/lib.es5.d.ts) · [`WorksheetPermissionPoint`](https://unpkg.com/@univerjs/sheets/lib/types/facade/permission/permission-types.d.ts)

**Package:** [`@univerjs/sheets`](https://docs.univer.ai/ko-KR/reference/packages/plugins/univerjs/sheets.md) · [Type definitions](https://unpkg.com/@univerjs/sheets/lib/types/facade/permission/f-worksheet-permission.d.ts)

### `FWorksheetPermission.setReadOnly`

Set the worksheet to read-only mode.

```typescript
setReadOnly(): Promise<void>
```

**Returns**

A promise that resolves when the mode is set.

**Examples**

```ts
const fWorkbook = univerAPI.getActiveWorkbook()
const fWorksheet = fWorkbook.getSheetByName('Sheet1')
if (!fWorksheet) throw new Error('fWorksheet is not available')
await fWorksheet.getWorksheetPermission().setReadOnly()
```

**Types:** [`Promise`](https://unpkg.com/@typescript/typescript-darwin-arm64/lib/lib.es5.d.ts)

**Package:** [`@univerjs/sheets`](https://docs.univer.ai/ko-KR/reference/packages/plugins/univerjs/sheets.md) · [Type definitions](https://unpkg.com/@univerjs/sheets/lib/types/facade/permission/f-worksheet-permission.d.ts)

### `FWorksheetPermission.unprotect`

Remove worksheet protection.
This deletes the protection rule and resets all permission points to allowed.

```typescript
unprotect(): Promise<boolean>
```

**Returns**

A promise resolving to whether protection was removed; also resolves to `true` if already unprotected.

**Examples**

```ts
const fWorkbook = univerAPI.getActiveWorkbook()
const fWorksheet = fWorkbook.getSheetByName('Sheet1')
if (!fWorksheet) throw new Error('fWorksheet is not available')
await fWorksheet.getWorksheetPermission().unprotect()
```

**Types:** [`Promise`](https://unpkg.com/@typescript/typescript-darwin-arm64/lib/lib.es5.d.ts)

**Package:** [`@univerjs/sheets`](https://docs.univer.ai/ko-KR/reference/packages/plugins/univerjs/sheets.md) · [Type definitions](https://unpkg.com/@univerjs/sheets/lib/types/facade/permission/f-worksheet-permission.d.ts)

### `FWorksheetPermission.unprotectRules`

Remove multiple protection rules at once.

```typescript
unprotectRules(ruleIds: string[]): Promise<boolean>
```

**Parameters**

* `ruleIds` — Required. Array of rule IDs to remove.

**Returns**

A promise resolving to whether the rules were removed; also resolves to `true` for an empty ID list.

**Examples**

```ts
const fWorkbook = univerAPI.getActiveWorkbook()
const fWorksheet = fWorkbook.getSheetByName('Sheet1')
if (!fWorksheet) throw new Error('fWorksheet is not available')
const worksheetPermission = fWorksheet.getWorksheetPermission()
const rules = await worksheetPermission.listRangeProtectionRules()
// Unprotect the first rule as an example
if (rules.length > 0) {
  const result = await worksheetPermission.unprotectRules([rules[0].id])
  console.log(result)
}
```

**Types:** [`Promise`](https://unpkg.com/@typescript/typescript-darwin-arm64/lib/lib.es5.d.ts)

**Package:** [`@univerjs/sheets`](https://docs.univer.ai/ko-KR/reference/packages/plugins/univerjs/sheets.md) · [Type definitions](https://unpkg.com/@univerjs/sheets/lib/types/facade/permission/f-worksheet-permission.d.ts)
