为 OFORM 表单分配唯一 ID
使用 ONLYOFFICE 产品,我们就可以轻松创建和操作可填写的表单。在上一篇博文中,我们向您展示了一个宏,可以将 CSV/TXT 数据转换为可填写的组合框。
今天,我们来构建一个为可填写的表单分配唯一 ID 的宏,让电子文档更有条理。
前期准备
在这个新项目中,我们会实现与上面提到的宏类似的概念。
宏的代码如下:
function LoadFile() {
$.ajax({
url: 'file:///C:/Users/LEOPARD/Desktop/Book1.csv',
dataType: 'text',
}).done(successFunction);
}
function successFunction(data) {
var arrAllRows = data.split("\n");
var oComboBoxForm = Api.CreateComboBoxForm({ "key": "Personal information", "tip": "Choose your country", "required": true, "placeholder": "Country", "editable": false, "autoFit": false, "items": arrAllRows });
var oParagraph = Api.CreateParagraph();
oParagraph.AddElement(oComboBoxForm);
oDocument.InsertContent([oParagraph]);
}
LoadFile();
通过一个新的宏,我们还会并入“InsertContent”方法。它会在光标定位的地方插入一个元素。而这一次,插入的内容是不同的。
构建宏
为创建这个内容,我们添加了“generate”函数。这里我们创建“key”变量并将其设置为空白。之后,它会存储生成的值。此外,我们还添加了“data”变量,会包含大写和小写字母和数字。这些都是我们唯一 ID 的构建块:
function generate () {
let key = '';
const data = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' +
'abcdefghijklmnopqrstuvwxyz0123456789';
};
然后我们添加一个“for 循环”,会执行 12 次迭代。每次迭代都会返回一个唯一值。因此,12 次迭代会产生 12 个 ID 的唯一字符。然后我们使用“Math.random”方法在每次迭代中得到一个唯一索引。之后,我们用这个索引和“charAt”方法从“data”变量中检索出一个唯一字符。我们将结果分配给“key”变量,并将其返回供后续使用。然后我们调用“generate”函数并将其分配给“id”变量:
for (let i = 1; i <= 12; i++) {
let index = Math.floor(Math.random()
* data.length + 1);
key += data.charAt(index)
}
return key;
};
const id = generate();
现在我们需要将生成的内容插入文档中。首先,我们以活动表单为目标:
var oDocument = Api.GetDocument();
之后,我们创建一个段落,并在其中添加一个文本元素。我们通过在参数中传递“id”变量,将生成的内容封装在这个元素中:
var oParagraph = Api.CreateParagraph();
oParagraph.AddText(id);
然后我们将其插入。“InsertContent”方法会在光标位置上嵌入一个元素。我们还会指定“KeepTextOnly”属性。我们将其设置为“true”,以防止出现定位问题:
oDocument.InsertContent([oParagraph], { "KeepTextOnly": true });
整个宏代码如下:
function generate () {
let key = '';
const data = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' +
'abcdefghijklmnopqrstuvwxyz0123456789';
for (let i = 1; i <= 12; i++) {
let index = Math.floor(Math.random()
* data.length + 1);
key += data.charAt(index)
}
return key;
};
const id = generate();
var oDocument = Api.GetDocument();
var oParagraph = Api.CreateParagraph();
oParagraph.AddText(id);
oDocument.InsertContent([oParagraph], { "KeepTextOnly": true })
现在,我们来运行这个宏,看看它是如何运行的!
我们希望您会发现这个宏非常有用,并将其添加到您的工作流中。ONLYOFFICE 宏的用途非常广泛,支持用户以各种方式处理文件。您可以通过实施我们的 API 方法而实现目标,而这个宏只是众多例子之一。
我们建议您进行尝试,开启自己的项目之路。欢迎提出问题或分享您的想法,欢迎您与我们讨论、合作。祝好运!
创建免费的 ONLYOFFICE 账户
在线查看并协作编辑文本文档、电子表格、幻灯片、表单和 PDF 文件。