ONLYOFFICEバージョン8.0を使いこなす:Document Builder APIの新フォームメソッドを公開
バージョン8.0の発表に伴い、一連の新しいDocument Builder APIメソッドが導入されました。この記事では、これらのメソッドのうち2つをピックアップし、それらを2つの新しいONLYOFFICEマクロに組み込み、フォームテンプレートでの作業を効率化する方法をご紹介します。
新しいメソッドについて
- 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++) {
}
現在のフォームのタイプが「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を自由に掘り下げてください。あなたの革新的なアイデアを共有するために、お気軽に私たちにご連絡ください。ディスカッションとコラボレーションを歓迎します。