Skip to main content

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: 文档类型应用对象

参数

属性数据类型必填说明
keystring | 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: 文档类型应用对象

参数

属性数据类型必填说明
namestring可编辑区域名称
optionobject可编辑区域用户信息 { "group": ["everyone"] } 或者 { "users": string[] } // 用户ID
rangeWriter.Range要插入可编辑区域的区域(默认在当前选区插入)
bHideboolean是否对不可编辑的用户不可见,默认 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: 文档类型应用对象

参数

属性数据类型必填说明
itemsArray可编辑区域设置项数组,每项包含 { key: string | number, text: string }
- key: 可编辑区域名称或序号(序号从1开始)
- text: 要设置的文本内容

返回值

Promise<Object>,返回批量设置的结果对象

字段类型说明
successboolean是否全部成功
totalnumber总共执行的数量
successCountnumber成功的数量
failureCountnumber失败的数量
detailsArray每个可编辑区域的执行详情
details[].keystring | number可编辑区域的 key(名称或序号)
details[].successboolean该可编辑区域是否设置成功
details[].errorstring失败时的错误信息(可选)

注意事项

  • 仅支持 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}`);
}
});
}
}