PermMarks
JSSDK: 1.2.2、FilezOffice2022.3 FP2 支持
内容保护文档的可编辑区域对象集合
属性
count
可编辑区域的数量
语法
Application.ActiveDocument.PermMarks.count
Application: 文档类型应用对象
返回值
count: Promise<number>
示例
async function example() {
const count = await Application.ActiveDocument.PermMarks.count;
}
方法
item
根据参数获取可编辑区域
语法
document.PermMarks.item(key)
document: 文档类型应用对象
参数
| 属性 | 数据类型 | 必填 | 说明 |
|---|---|---|---|
| key | string | number | 是 | 可编辑区域name/序号(序号从1开始) |
返回值
Promise<Writer.PermMark>
示例
async function example(key) {
const permMark = await Application.ActiveDocument.PermMarks.item(key);
}
add
JSSDK: 1.7.1、FilezOffice V7.2 FP1 支持
以Range为范围添加可编辑区域
语法
document.PermMarks.add(name, option, range, bHide)
document: 文档类型应用对象
参数
| 属性 | 数据类型 | 必填 | 说明 |
|---|---|---|---|
| name | string | 是 | 可编辑区域名称 |
| option | object | 是 | 可编辑区域用户信息 { "group": ["everyone"] } 或者 { "users": string[] } // 用户ID |
| range | Writer.Range | 否 | 要插入可编辑区域的区域(默认在当前选区插入) |
| bHide | boolean | 否 | 是否对不可编辑的用户不可见,默认 false,即仅可见 |
返回值
Promise<Writer.PermMark>
示例
async function example1() {
const bookmark = await Application.ActiveDocument.Bookmarks.item(1);
const range = await bookmark.range;
// 在指定书签区域插入一个所有人可编辑的可编辑区域,名称为pm1
const permMark1 = await Application.ActiveDocument.PermMarks.add('pm1', {"group":["everyone"]}, range);
// 在指定书签区域插入一个仅有用户 test01 可编辑的可编辑区域,其他人仅可见,名称为pm2
const permMark2 = await Application.ActiveDocument.PermMarks.add('pm2', {"users":["test01"]}, range);
// 在指定书签区域插入一个仅有用户 test01 可编辑的可编辑区域,其他人不可见,名称为pm3
const permMark3 = await Application.ActiveDocument.PermMarks.add('pm3', {"users":["test01"]}, range, true);
}
// 在当前选区插入一个仅有用户 test01 可编辑的可编辑区域,其他人仅可见,名称为pm
async function example1() {
const permMark = await Application.ActiveDocument.PermMarks.add('pm', {"users":["test01"]});
}
toJson
获取文档里包含的所有可编辑区域
语法
document.PermMarks.toJson()
document:文档类型应用对象
返回值
Promise<string[]>,可编辑区域名称的数组
示例
async function example() {
const permMarks = await Application.ActiveDocument.PermMarks.toJson();
}
batchSetText
JSSDK: 1.11.0、FilezOffice V8.3 支持
批量设置可编辑区域内容
语法
Application.ActiveDocument.PermMarks.batchSetText(items)
Application: 文档类型应用对象
参数
| 属性 | 数据类型 | 必填 | 说明 |
|---|---|---|---|
| items | Array | 是 | 可编辑区域设置项数组,每项包含 { key: string | number, text: string }- key: 可编辑区域名称或序号(序号从1开始) - text: 要设置的文本内容 |
返回值
Promise<Object>,返回批量设置的结果对象
| 字段 | 类型 | 说明 |
|---|---|---|
| success | boolean | 是否全部成功 |
| total | number | 总共执行的数量 |
| successCount | number | 成功的数量 |
| failureCount | number | 失败的数量 |
| details | Array | 每个可编辑区域的执行详情 |
| details[].key | string | number | 可编辑区域的 key(名称或序号) |
| details[].success | boolean | 该可编辑区域是否设置成功 |
| details[].error | string | 失败时的错误信息(可选) |
注意事项
- 仅支持
Application.ActiveDocument.PermMarks.batchSetText() - 不支持
range.PermMarks.batchSetText()
示例
// 批量设置可编辑区域内容
async function example() {
const result = await Application.ActiveDocument.PermMarks.batchSetText([
{ key: 1, text: '张三' }, // 通过序号设置第一个可编辑区域
{ key: '姓名', text: '李四' }, // 通过名称设置
{ key: '部门', text: '技术研发部' },
{ key: '职位', text: '高级软件工程师' },
{ key: '入职日期', text: '2026-02-01' }
]);
console.log('批量设置结果:', result);
// 返回值示例:
// {
// "success": false,
// "total": 5,
// "successCount": 3,
// "failureCount": 2,
// "details": [
// { "key": 1, "success": true },
// { "key": "姓名", "success": false, "error": "Mark not found or failed to set text" },
// { "key": "部门", "success": true },
// { "key": "职位", "success": true },
// { "key": "入职日期", "success": false, "error": "Mark not found or failed to set text" }
// ]
// }
// 处理结果
if (result.success) {
console.log('所有可编辑区域设置成功');
} else {
console.log(`成功: ${result.successCount}, 失败: ${result.failureCount}`);
result.details.forEach(item => {
if (!item.success) {
console.error(`可编辑区域 ${item.key} 设置失败: ${item.error}`);
}
});
}
}