ONLYOFFICEバージョン8.0を使いこなす:Document Builder APIの新フォームメソッドを公開

2024年02月12日著者:Denis

バージョン8.0の発表に伴い、一連の新しいDocument Builder APIメソッドが導入されました。この記事では、これらのメソッドのうち2つをピックアップし、それらを2つの新しいONLYOFFICEマクロに組み込み、フォームテンプレートでの作業を効率化する方法をご紹介します。

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

新しいメソッドについて

  • GetFormsData

GetFormsDataメソッドは、ドキュメント内のすべてのフォーム要素のフォームデータを含む配列を取得します。

expression.GetFormsData();

expressionApiDocumentクラスを表す変数です。

このメソッドを利用することで、ドキュメント内のフォームから対象となるデータを取得することができ、フォームの型やプロパティに基づいて動的にフォームを変更することができます。

  • SetFormsData

先のメソッドとは逆に、SetFormsDataはデータを返しません。しかし、フォーム要素の値を設定することができます。

expression.SetFormsData();

expressionApiDocumentクラスを表す変数です。

メソッドのパラメータは、フォームのキーと値を指定するFormData配列の形式で渡されます。さらに、フォームタイプを指定するオプションもあります。

このメソッドを使うことで、関連するすべてのフォーム要素のデフォルト値を簡単に定義し、動的なドキュメント編集を自動化することができます。

テキストフィールドを修正するマクロ:GetFormsData実装

この気の利いたマクロは、文書内のすべてのテキストフィールドを変更する機能を提供します。また、他のフォームタイプに変更を加えるためにカスタマイズすることもできます。

まず、アクティブなドキュメントを対象とします:

const oDocument = Api.GetDocument();

次に、ドキュメントに存在するすべてのフォーム要素を含む配列(aForms)を取得します。

const aForms = oDocument.GetAllForms();

その後、ドキュメント内のすべてのフォームに関するデータを収集し、formsData変数に格納します:

const formsData = oDocument.GetFormsData();

次に、配列の各フォーム要素を繰り返し処理するループを追加します:

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

現在のフォームのタイプが「text」かどうかをチェックします。もし真であれば、続く行でフォーム要素に変更を加えます:

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の実装

2番目のマクロを使うことで、対象となるフォームの値を簡単かつシームレスに調整できます。このマクロはとてもシンプルで、わずかなステップで実行できます。

まず、アクティブなドキュメントを取得します:

const oDocument = Api.GetDocument();

次に、SetFormsDataメソッドを使用し、メソッドのパラメータ内で要素のキーと必要なデフォルト値を定義します:

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

マクロコード全体は以下の通りです:

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

ご紹介したメソッドやマクロが、ドキュメントのワークフローを効率化し、皆様のお役に立つことを願っています。マクロは強力なツールとして機能し、私たちの豊富なAPIライブラリは、さまざまなタスクを自動化するための無数の可能性を提供します。

ドキュメント処理の強力な機能を活用したパーソナライズされたマクロを作成し、APIを自由に掘り下げてください。あなたの革新的なアイデアを共有するために、お気軽に私たちにご連絡ください。ディスカッションとコラボレーションを歓迎します。