LoginSignup
1
0

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

Posted at

バージョン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を自由に掘り下げてください。あなたの革新的なアイデアを共有するために、お気軽に私たちにご連絡ください。ディスカッションとコラボレーションを歓迎します。

お役立ちリンク

無料オフィス・スイート

GetFormsDataメソッドについて

SetFormsDataメソッドについて

OFORMSライブラリ

その他の便利なマクロ

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0