ONLYOFFICEマクロを使ってPDFフォームの特定のフィールドに対して計算を実行する方法

2025年03月12日著者:Denis

ONLYOFFICE マクロは強力かつ多用途であり、ドキュメント、スプレッドシート、プレゼンテーションだけでなく、PDF フォーム内のタスク自動化にも役立ちます。本記事では、フォーム内の特定フィールドで計算を実行する独自のマクロの作成と実行方法をご紹介します。今回の例では、税金の計算を自動化することで、作業のスピードと正確性を向上させています。

ONLYOFFICE マクロを使って PDF フォームの特定フィールドで計算を実行する方法

マクロの作成

ドキュメント内のすべてのフォームを取得する

まず、ドキュメント内のすべてのフィールドを取得します:

// ドキュメント内のすべてのフォームを取得する
const document = Api.GetDocument();
let forms = document.GetAllForms();
  • Api.GetDocument() はアクティブなドキュメントを取得します。
  • GetAllForms() はドキュメント内のすべてのフォームフィールドを取得します。

フォームキーの定義

次に、各フォームのキーを定義します:

  // 入力フォームのフォームキー
  var formkey1 = "Form1";
  var formkey2 = "Form2";
  var taxFormkey = "TaxForm";

  // 結果を表示するフォームのキー
  var sumResultKey = "SumResult";
  var taxResultKey = "TaxResult";
  • formkey1, formkey2, taxFormkey は、入力フィールドの識別子を格納します。
  • sumResultKeytaxResultKey は、計算結果を挿入する出力フィールドの識別子を格納します。

フォームの値を取得する

getFormValue 関数は、フォームキーに一致するフォームを見つけ、その値を返します:

  // 指定したフォームキーのフォーム値を取得する関数
  function getFormValue(formKey) {
      for (let form of forms) {
          if (form.GetFormKey() === formKey) {
              return parseFloat(form.GetText()) || 0;
          }
      }
  }
  • GetText() はフォームのテキスト値を取得します。
  • parseFloat() はテキストを数値に変換します。変換できない場合は 0 を返します。

フォームに値を挿入する

setFormValue 関数は、指定したフォームキーに一致するフィールドを探し、数値を小数点以下2桁で書式設定して挿入します:

  // 結果を表示するフォームに値を設定する関数
  function setFormValue(formKey, value) {
      for (let form of forms) {
          if (form.GetFormKey() === formKey) {
              form.SetText(value.toFixed(2));
          }
      }
  }

メイン計算処理

メインの計算関数内で、以下の処理を行います:

  • 入力フォームからユーザーの値を取得する。
  • input1input2 の合計を計算する。
  • 合計に対して税率を掛けて税金を計算する。
  • setFormValue() を呼び出して、結果を各フィールドに挿入する。
  // メイン計算関数
  function calculateAndInsert() {
      let input1 = getFormValue(formkey1);
      let input2 = getFormValue(formkey2);
      let taxInput = getFormValue(taxFormkey);
      // 計算を実行
      var sum = parseFloat(input1) + parseFloat(input2);
      var tax = sum * taxInput / 100; // 税率 (%) による計算

      // 結果を挿入
      setFormValue(sumResultKey, sum);
      setFormValue(taxResultKey, tax);
  }

以下が、全体のマクロコードです:

(function () {
    // ドキュメント内のすべてのフォームを取得する
    const document = Api.GetDocument();
    let forms = document.GetAllForms();

    // 入力フォームのフォームキー
    var formkey1 = "Form1";
    var formkey2 = "Form2";
    var taxFormkey = "TaxForm";

    // 結果を表示するフォームのキー
    var sumResultKey = "SumResult";
    var taxResultKey = "TaxResult";

    // 指定したフォームキーのフォーム値を取得する関数
    function getFormValue(formKey) {
        for (let form of forms) {
            if (form.GetFormKey() === formKey) {
                return parseFloat(form.GetText()) || 0;
            }
        }
    }

    // 結果を表示するフォームに値を設定する関数
    function setFormValue(formKey, value) {
        for (let form of forms) {
            if (form.GetFormKey() === formKey) {
                form.SetText(value.toFixed(2));
            }
        }
    }

    // メイン計算関数
    function calculateAndInsert() {
        let input1 = getFormValue(formkey1);
        let input2 = getFormValue(formkey2);
        let taxInput = getFormValue(taxFormkey);
        // 計算を実行
        var sum = parseFloat(input1) + parseFloat(input2);
        var tax = sum * taxInput / 100; // 税率 (%) による計算

        // 結果を挿入
        setFormValue(sumResultKey, sum);
        setFormValue(taxResultKey, tax);
    }

    // 計算関数を実行する
    calculateAndInsert();
})();

これでマクロを実行し、その動作を確認できます!

ONLYOFFICE では、ユーザーのニーズに合わせた多彩なツールを提供することを目指しています。マクロはあなたの作業効率を大幅に向上させる強力なツールです。このマクロがあなたのツールキットに加わり、有益な資産となることを願っています。

また、当社の API メソッドの豊富なライブラリをぜひご覧になり、ご自身のニーズに合わせたオリジナルのマクロを作成してみてください。ご質問やアイデアがありましたら、お気軽にお問い合わせください。

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

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