Skip to main content

创建可编辑区域

场景说明

可编辑区域(PermMark)用于实现文档的区域保护,可以限制特定区域只允许指定用户编辑,是实现文档权限控制的重要功能。

适用场景:

  • 多人协作编辑文档
  • 文档区域权限控制
  • 表单分区域填写
  • 敏感信息保护

相关 API 文档

示例代码

创建所有人可编辑的区域(完整参数示例)

async function createPublicEditableRegion() {
// 获取指定书签区域
const bookmark = await Application.ActiveDocument.Bookmarks.item('bookmarkName');
const range = await bookmark.range;

// 创建一个所有人可编辑的区域,其他人也可见
// 参数:name - 区域名称, option - 用户权限, range - 区域范围(可选), bHide - 是否对无权限用户隐藏(可选,默认false)
const permMark = await Application.ActiveDocument.PermMarks.add(
'editRegion1',
{ "group": ["everyone"] },
range,
false // 明确指定 bHide 为 false,其他人可见
);

console.log('公共可编辑区域创建成功');
}

创建指定用户可编辑的区域

async function createUserEditableRegion() {
const bookmark = await Application.ActiveDocument.Bookmarks.item('bookmarkName');
const range = await bookmark.range;

// 创建仅用户 test01 可编辑的区域,其他人仅可见
const permMark = await Application.ActiveDocument.PermMarks.add(
'privateRegion1',
{ "users": ["test01"] },
range
);

console.log('指定用户可编辑区域创建成功');
}

创建指定用户可编辑且其他人不可见的区域

async function createHiddenEditableRegion() {
const bookmark = await Application.ActiveDocument.Bookmarks.item('bookmarkName');
const range = await bookmark.range;

// 创建仅用户 test01 可编辑的区域,其他人不可见
const permMark = await Application.ActiveDocument.PermMarks.add(
'hiddenRegion1',
{ "users": ["test01"] },
range,
true // 设置为 true 表示其他人不可见
);

console.log('隐藏可编辑区域创建成功');
}

批量创建多个可编辑区域

async function createMultipleEditableRegions() {
// 为不同的书签创建不同权限的可编辑区域
const regionConfigs = [
{
name: 'region1',
bookmarkName: 'bookmark1',
users: ["user01"],
hidden: false
},
{
name: 'region2',
bookmarkName: 'bookmark2',
users: ["user02"],
hidden: false
},
{
name: 'region3',
bookmarkName: 'bookmark3',
group: ["everyone"],
hidden: false
}
];

for (const config of regionConfigs) {
const bookmark = await Application.ActiveDocument.Bookmarks.item(config.bookmarkName);
const range = await bookmark.range;

const option = config.group
? { "group": config.group }
: { "users": config.users };

await Application.ActiveDocument.PermMarks.add(
config.name,
option,
range,
config.hidden
);
}

console.log('批量创建可编辑区域成功');
}

获取所有可编辑区域

async function getAllEditableRegions() {
// 获取所有可编辑区域名称
const permMarks = await Application.ActiveDocument.PermMarks.toJson();
console.log('可编辑区域列表:', permMarks);

// 获取可编辑区域数量
const count = await Application.ActiveDocument.PermMarks.count;
console.log('可编辑区域数量:', count);
}

注意事项

  • 可编辑区域需要配合文档保护功能使用
  • group: ["everyone"] 表示所有人都可以编辑该区域
  • users: ["userId"] 表示只有指定用户可以编辑
  • 第四个参数 bHidetrue 时,未授权用户看不到该区域
  • 可编辑区域名称在同一文档中需要唯一
  • 可编辑区域可以嵌套在书签内,方便管理