ONLYOFFICEマクロを使用して、特定のヒントテキストで空のテキストフィールドを強調表示する方法

2025年04月24日著者:Denis

ONLYOFFICEフォームは構造化された入力を簡単に収集できますが、必須でない空欄フィールドは見落とされがちです。本記事では、フォーム内の全ての空欄の必須でないフィールド、または特定のヒントテキストを含むフィールドのみをハイライトするマクロの作り方を解説します。

特定のヒントテキストを含む空欄テキストフィールドを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. オプション:ヒントテキストによる絞り込み

特定のヒントテキストを含むフィールドのみをチェックしたい場合は、checkSpecificTiptrue に切り替えます。例えば「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 メソッドもぜひご活用ください。マクロのアイデアやご質問があれば、お問い合わせください。ハッピーコーディング!

著者について

Owais Raza

ONLYOFFICEの無料アカウントを登録する

オンラインでドキュメント、スプレッドシート、スライド、フォーム、PDFファイルの閲覧、編集、共同作業