如何使用 ONLYOFFICE 宏突出显示具有特定提示文本的空文本字段
2025年04月24日作者:Krystal
在本篇博文中,我们将介绍如何创建宏来突出显示 ONLYOFFICE 表单中所有未填写的非必填字段,或者仅突出显示含有特定提示文本的字段。这样做可以有效避免忽略空的非必填字段,使数据收集更加高效有序。
构建宏
1. 检索表单数据和实时表单对象
宏首先通过 Api.GetDocument() 访问当前活动文档,然后检索两组信息:
- 表单数据:使用 doc.GetFormsData() 获取所有表单字段的 JSON 表示。此 JSON 包含键、类型、值、提示以及字段是否必填等属性。
- 实时表单对象:使用 doc.GetAllForms() 检索与这些表单字段对应的实时对象。
var doc = Api.GetDocument();
var forms = doc.GetAllForms();
var formsData = JSON.parse(JSON.stringify(doc.GetFormsData()));
2. 可选的基于提示的验证
如果您只想检查包含特定提示文本的空字段,可以通过切换 checkSpecificTip 变量来启用或禁用这一功能。例如,您可以设置仅验证提示为“Please enter your second address”的字段。
// Optional: set to true to check only fields with a specific tip text.
var checkSpecificTip = false;
var requiredTipText = "Please enter your second address"; // Change this as needed.
3. 循环遍历每个表单字段
接下来,宏会遍历 JSON 数据中的每个表单字段,重点关注类型为“text”的文本字段。对于未标记为必填的文本字段,宏会检查其值是否为空。
forms.forEach(function(form) {
if (form.GetFormType() === "textForm") {
var key = form.GetFormKey();
var required = form.IsRequired()
// Find corresponding form data by key.
var formData = formsData.find(function(fd) {
return fd.key === key;
});
if (formData) {
// A field is considered empty if its value is missing or only whitespace.
var isEmpty = !formData.value || formData.value.trim() === "";
// Use the live form's GetTip() to get the tip (if available).
var tip = form.GetTipText() ? form.GetTipText() : "";
var shouldCheck = !checkSpecificTip || (checkSpecificTip && tip.trim() === requiredTipText.trim());
if (shouldCheck && isEmpty && !required) {
form.SetBorderColor(0,255,127); // spring green border.
form.SetBackgroundColor(171, 242, 255); // Light blue background.
invalidCount++;
}
}
}
});
- 检查字段值:
如果字段的 JSON “value” 属性缺失或仅包含空格,则该字段被视为空。 - 提示过滤:
如果启用了 checkSpecificTip,只会检查提示与 requiredTipText 匹配的字段。 - 高亮显示:
符合条件的字段会通过其键匹配找到对应的实时表单对象,并设置为绿色边框和浅蓝色背景,以突出显示。
4. 统计结果
最后,宏会统计并记录突出显示的空非必填文本字段的总数。
console.log("Form Field Validator complete. " + invalidCount + " empty unrequired text field(s) highlighted.");
完整的宏代码
(function () {
// Optional: set to true to check only fields with a specific tip text.
var checkSpecificTip = false;
var requiredTipText = "Please enter your second address"; // Change this as needed.
var doc = Api.GetDocument();
var forms = doc.GetAllForms();
var formsData = JSON.parse(JSON.stringify(doc.GetFormsData()));
var invalidCount = 0;
forms.forEach(function(form) {
if (form.GetFormType() === "textForm") {
var key = form.GetFormKey();
var required = form.IsRequired()
// Find corresponding form data by key.
var formData = formsData.find(function(fd) {
return fd.key === key;
});
if (formData) {
// A field is considered empty if its value is missing or only whitespace.
var isEmpty = !formData.value || formData.value.trim() === "";
// Use the live form's GetTip() to get the tip (if available).
var tip = form.GetTipText() ? form.GetTipText() : "";
var shouldCheck = !checkSpecificTip || (checkSpecificTip && tip.trim() === requiredTipText.trim());
if (shouldCheck && isEmpty && !required) {
form.SetBorderColor(0,255,127); // spring green border.
form.SetBackgroundColor(171, 242, 255); // Light blue background.
invalidCount++;
}
}
}
});
console.log("Form Field Validator complete. " + invalidCount + " empty unrequired text field(s) highlighted.");
})();
此宏能自动检测并突出显示包含特定占位符文本的空文本字段,从而节省时间并减少重复工作。我们希望它可以帮助您优化 ONLYOFFICE 表单,提升工作流程效率。同时,欢迎您探索其他强大的 ONLYOFFICE API 功能,以进一步自动化和增强文档处理过程。如果您有任何关于宏的想法、疑问或建议,请随时与我们联系。我们期待您的反馈,并祝您编程愉快!
关于作者
创建免费的 ONLYOFFICE 账户
在线查看并协作编辑文本文档、电子表格、幻灯片、表单和 PDF 文件。