ONLYOFFICEカスタム関数内での非同期API呼び出しの利用方法

2025年07月30日著者:Denis

ONLYOFFICEスプレッドシートエディタを拡張するための強力かつ柔軟な手段として、カスタム関数があります。プラットフォーム改善の一環として、最新リリースのONLYOFFICE Docs 9.0では、カスタム関数内での非同期API呼び出しがサポートされました。本記事では、その使い方を解説します。

カスタム関数内でのasync API呼び出しの扱い方

カスタム関数とは

カスタム関数はスプレッドシートエディタ用マクロの機能を拡張し、独自の関数を定義してスプレッドシート上で直接利用できる強力な仕組みです。

(function () {
    /**
      * これはカスタム関数の例です。
      * @customfunction

      * @param {number} value - パラメータの説明。
      * @returns {number} 戻り値の説明。
      */
    function customFunctionName(value) {
        // ここに計算ロジックを記述
        return /* 計算結果 */;
    }
    // エディタにカスタム関数を登録
    Api.AddCustomFunction(customFunctionName);
})();

メニュー:表示>マクロ>カスタム関数

変更点

ONLYOFFICE Docs 9.0では、カスタムスクリプト内で非同期関数を呼び出せるようになりました。これにより、以下が可能になります。

  • 任意サービスへの非同期Webリクエスト
  • AIプロバイダへの非同期リクエスト
  • async関数内での非同期JSコードの実行
  • 非同期レスポンスの処理
  • 結果をスプレッドシートへ直接出力
(function () {
    // 非同期リクエストの例
    let asyncFunc = async function (value) {
        let request = await fetch("https://yourURL");
        const jsonData = await request.json();
        if (value === undefined) {
            value = 2;
        }
        return jsonData;
    };
    /**
      * カスタム関数の例 (非同期対応)
      * @customfunction

      * @param {number} value - パラメータの説明。
      * @returns {number} 戻り値の説明。
      */
    async function customFunctionName(value) {
        // 非同期関数を呼び出して結果を返却
        return await asyncFunc(value);
    }
    Api.AddCustomFunction(customFunctionName);
})();

カスタム関数内でのasync API呼び出し

ここではAPI NinjasのSales Tax APIを使い、US ZIP codeに対応する州の売上税率を取得する例を示します。

注意!本機能を利用するには、API Ninjasサイトから取得した自身のAPIキーが必要です。

マクロの作成手順

まず、getSalesTaxという非同期関数を定義します。

let getSalesTax = async function (value) {
    // 未入力時はデフォルトのZIP codeを設定
    if (value === undefined) {
        value = 90210;
    }

    // 先頭ゼロを補完して5桁文字列に
    let zipStr = value.toString();
    while (zipStr.length < 5) {
        zipStr = '0' + zipStr;
    }

    const url = 'https://api.api-ninjas.com/v1/salestax?zip_code=' + zipStr;
    let request = await fetch(url, {
        method: 'GET',
        headers: {
            'X-Api-Key': 'yourAPIkey',
            'Content-Type': 'application/json'
        }
    });
    let jsonData = await request.json();
    // レスポンス配列の先頭要素からstate_rateを取得
    return jsonData[0].state_rate;
};

次に、カスタム関数salestaxを定義・登録します。

/**
  * ZIP codeから州の売上税率を返す関数。
  * @customfunction

  * @param {number} value - ZIP code。
  * @returns {number} 州の売上税率。
  */
async function salestax(value) {
    return await getSalesTax(value);
}
// カスタム関数をエディタに登録
Api.AddCustomFunction(salestax);
})();

これでスプレッドシート上でSALESTAX()を呼び出せるようになります。

非同期カスタム関数を活用し、業務効率化や高度なデータ取得を実現してください。ご意見やアイデアはこちらまでお寄せください。

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

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