玩转 ONLYOFFICE 版本 8.0:揭幕全新文档生成器 API 表单方法

2024年02月13日作者: Alina

在新发布的版本 8.0中,我们推出了一组全新文档生成器 API 方法。在这篇博文中,我们会深入探讨其中的两种方法,演示如何将它们整合到两个全新的 ONLYOFFICE 宏中,从而让表单模板的使用体验更为流畅。

Mastering ONLYOFFICE version 8.0: Unveiling new Document Builder API form methods

关于新方法

  • GetFormsData

GetFormsData 方法会检索一个数组,其中包含文档中所有表单元素的表单数据

expression.GetFormsData();

其中 expression 是表示 ApiDocument 类的变量。

您可以使用这种方法,从文档的表单中检索目标数据,从而可以根据表单的类型和属性,对表单做动态修改。

  • SetFormsData

与前面的方法相反,SetFormsData 不会返回数据。不过,它支持我们设置表单元素的值。

expression.SetFormsData();

其中,expression 是表示 ApiDocument 类的变量。

方法参数的传递格式为,指定表单键和值的 FormData 数组。此外,还可以指定表单类型。

您可以使用这一方法,轻松定义所有相关表单元素的默认值,实现动态文档编辑的自动化。

用于修改文本字段的宏:GetFormsData 实现

这个宏很是灵便,您可以通过它来修改文档中所有的文本字段。此外,您也可以对它进行自定义设置,对其他表单类型进行修改。

首先,我们定位活动文档:

const oDocument = Api.GetDocument();

然后,检索包含文档中所有表单元素的数组(aForms)。

const aForms = oDocument.GetAllForms();

之后,我们收集文档中所有表单的数据,将其存储到 formsData 变量中:

const formsData = oDocument.GetFormsData();

然后,我们添加一个循环,遍历数组中所有的表单元素:

for (let i = 0; i < aForms.length; i++) {
}

我们检查当前表单的类型是否为“文本”。如果是,就在随后的行中更改表单元素:

if (formsData[i]["type"] == "text") {
  //aForms[i].SetBackgroundColor(205, 0, 0); // <---- Sets/Changes the Background Color of all the form elements.
  //aForms[i].SetBorderColor(205, 0, 0);       //<---- Unccomment if you want to set/change the border color for all the form elements.
  //aForms[i].SetPlaceholderText("Placeholder Text");       //<---- Unccomment if you want to set/change the Placeholder Text for all the form elements.
  //aForms[i].SetRequired(true);          //<---- Unccomment if you want to set/change the 'required' property for all the form elements.
  //aForms[i].SetTipText("Tip Text");       //<---- Unccomment if you want to set/change the Tip Text for all the form elements.
}

这里,每一行都有注释,说明其执行的操作。

整个宏如下:

(function() {
  const oDocument = Api.GetDocument();
  const aForms = oDocument.GetAllForms();
  const formsData = oDocument.GetFormsData();

  for (let i = 0; i < aForms.length; i++) {
    if (formsData[i]["type"] == "text") {
      // Uncomment the following lines based on your preferences:
      // aForms[i].SetBackgroundColor(205, 0, 0); // Sets/Changes the Background Color of all the form elements.
      // aForms[i].SetBorderColor(205, 0, 0);     // Uncomment if you want to set/change the border color for all the form elements.
      // aForms[i].SetPlaceholderText("Placeholder Text"); // Uncomment if you want to set/change the Placeholder Text for all the form elements.
      // aForms[i].SetRequired(true);        // Uncomment if you want to set/change the 'required' property for all the form elements.
      // aForms[i].SetTipText("Tip Text");   // Uncomment if you want to set/change the Tip Text for all the form elements.
    }
  }
})();

用于设置默认表单值的宏: SetFormsData 实现

这是我们介绍的第二个宏,可以使用它轻轻松松,无缝调整目标表单的值。这个宏非常简单,只需几步即可完成。

首先,我们检索活动文档:

const oDocument = Api.GetDocument();

然后,我们使用 SetFormsData 方法,在方法参数中定义元素键和所需的默认值:

oDocument.SetFormsData([
  {key: "CompanyName", value: "OnlyOffice"}
]);

整个宏如下:

The entire macro code is the following:
const oDocument = Api.GetDocument();
oDocument.SetFormsData([
  {key: "CompanyName", value: "OnlyOffice"}
]);

我们希望以上展示的方法和宏对您而言有价值,可以简化文档工作流程。宏可以是功能强大的工具,我们的 API 库提供海量内容,为您将各种任务自动化提供无限可能。

欢迎深入研究我们的 API,对宏做个性化设置,利用文档处理的强大功能。如有创新的想法,欢迎随时与我们联系,与我们分享。我们欢迎开放讨论与合作。祝您探索之路好运!