创建可编辑区域
场景说明
可编辑区域(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"]表示只有指定用户可以编辑- 第四个参数
bHide为true时,未授权用户看不到该区域 - 可编辑区域名称在同一文档中需要唯一
- 可编辑区域可以嵌套在书签内,方便管理