ONLYOFFICEマクロを使用して、特定のヒントテキストで空のテキストフィールドを強調表示する方法
2025年04月24日著者:Denis
ONLYOFFICEフォームは構造化された入力を簡単に収集できますが、必須でない空欄フィールドは見落とされがちです。本記事では、フォーム内の全ての空欄の必須でないフィールド、または特定のヒントテキストを含むフィールドのみをハイライトするマクロの作り方を解説します。
マクロの構築
1. フォームデータとライブフォームオブジェクトの取得
マクロはまず Api.GetDocument()
でアクティブなドキュメントを取得します。その後、次の二種類の情報を取得します:
- フォームデータ:
doc.GetFormsData()
により全フォームフィールドの JSON 表現を得ます。各フィールドのキー、タイプ、値、ヒント、必須かどうかなどのプロパティが含まれます。 - ライブフォームオブジェクト:
doc.GetAllForms()
でこれらのフィールドに対応するフォームオブジェクトを取得します。
var doc = Api.GetDocument();
var forms = doc.GetAllForms();
var formsData = JSON.parse(JSON.stringify(doc.GetFormsData()));
2. オプション:ヒントテキストによる絞り込み
特定のヒントテキストを含むフィールドのみをチェックしたい場合は、checkSpecificTip
を true
に切り替えます。例えば「Please enter your second address」というヒントのフィールドのみを検証できます。
// オプション:特定のヒントテキストを含むフィールドのみチェックする場合 true
var checkSpecificTip = false;
var requiredTipText = "Please enter your second address"; // 必要に応じて変更
3. 各フォームフィールドのループ処理
次に、全フォームオブジェクトをループし、タイプが "textForm"
のテキストフィールドだけに注目します。必須でないフィールドのうち、値が空かどうかをチェックします。
forms.forEach(function(form) {
if (form.GetFormType() === "textForm") {
var key = form.GetFormKey();
var required = form.IsRequired();
// キーで対応する JSON データを検索
var formData = formsData.find(function(fd) {
return fd.key === key;
});
if (formData) {
// 空欄かどうか:値がない、または空白のみ
var isEmpty = !formData.value || formData.value.trim() === "";
// ライブフォームからヒント取得
var tip = form.GetTipText() ? form.GetTipText() : "";
// ヒント絞り込みの判定
var shouldCheck = !checkSpecificTip || (checkSpecificTip && tip.trim() === requiredTipText.trim());
if (shouldCheck && isEmpty && !required) {
form.SetBorderColor(0,255,127); // 春色の緑境界線
form.SetBackgroundColor(171, 242, 255); // 淡い青背景
invalidCount++;
}
}
}
});
- 空欄判定: JSON の
value
が存在しないか、空白のみであれば空欄とみなします。 - ヒント絞り込み:
checkSpecificTip
が true の場合、ヒントがrequiredTipText
と一致するフィールドのみをチェック。 - ハイライト: 条件を満たすフィールドを春緑の境界線と淡青の背景で強調表示します。
4. 結果のログ出力
最後に、ハイライトされた空欄の必須でないテキストフィールド数をコンソールに出力します。
console.log("Form Field Validator complete. " + invalidCount + " empty unrequired text field(s) highlighted.");
完全なマクロコード
(function () {
// オプション:特定のヒントテキストのみチェックする場合 true
var checkSpecificTip = false;
var requiredTipText = "Please enter your second address"; // 必要に応じて変更
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();
var formData = formsData.find(function(fd) {
return fd.key === key;
});
if (formData) {
var isEmpty = !formData.value || formData.value.trim() === "";
var tip = form.GetTipText() ? form.GetTipText() : "";
var shouldCheck = !checkSpecificTip || (checkSpecificTip && tip.trim() === requiredTipText.trim());
if (shouldCheck && isEmpty && !required) {
form.SetBorderColor(0,255,127);
form.SetBackgroundColor(171, 242, 255);
invalidCount++;
}
}
}
});
console.log("Form Field Validator complete. " + invalidCount + " empty unrequired text field(s) highlighted.");
})();
それではマクロを実行して動作を確認してみましょう!
このマクロを使えば、指定したプレースホルダーが設定された空欄テキストフィールドを自動で検出しハイライトできます。日常の繰り返し作業を削減し、ONLYOFFICEフォームの入力チェックを効率化するのに役立つでしょう。他の強力なONLYOFFICE API メソッドもぜひご活用ください。マクロのアイデアやご質問があれば、お問い合わせください。ハッピーコーディング!
著者について
ONLYOFFICEの無料アカウントを登録する
オンラインでドキュメント、スプレッドシート、スライド、フォーム、PDFファイルの閲覧、編集、共同作業