【注意】エクセルWEBSERVICE関数でのアクセス発生件数に注意

WEBSERVICE関数でサーバアクセスがどれくらい発生するか実験してみた

エクセルにWEBSERVICE関数という関数があります。

これを使うと、インターネット上で公開されているWEB APIに問い合わせをして、その結果をセルに表示させることができます。

公式の解説ページへのリンクはこちら↓

WEBSERVICE 関数

何も考えずに使うとアクセス先のWEB APIに大量のアクセスが発生してしまい、先方に迷惑をかけてしまう可能性があります(利用規約で過剰なアクセスが禁止されている場合には、利用規約に違反する可能性もあります)。

そこで、WEBSERVICE関数を使ったときに、どのタイミングでどれくらいアクセスが発生するか実験をしてみました。

実験環境準備

手元のPCにウェブサーバを立てる

手元のPCに、ウェブサーバを立てます。

「http://localhost:3000/test」へのアクセスごとに、「1」「2」「3」・・・と、返答する数を1ずつ数を増やすようなWEB APIを作りました。

参考までにソースコードを載せておきます(Node.js、Expressで構築しています)。

import express from 'express';

const app = express();

let accessCount = 0;

app.get('/test', (req, res) => {
  accessCount++;
  console.log(accessCount);
  res.send(String(accessCount));
});

app.listen(3000, () => {
  console.log(`listening to port 3000`);
});

実験

同一URLを複数のセルに入力してみる

非現実的ですが、まずは、まったく同じURLを複数のURLに入力してみます。

最初に、A1セルにWEBSERVICE関数を入力します。

次に、その数式をコピーして、A2セル以下に貼り付けてみます。

すると、A2セル以下には、すべて同じ値が表示されました。

これから、同一URLを貼り付けたときには、貼り付けたセルの数にかかわらず、サーバに1回しかアクセスしていないことがわかります

別のURLを複数のセルに入力してみる

実際にWEBSERVICE関数を使う時には、セルごとにWEBSERVICE関数で呼び出すURLは変わるケースがほとんどです。

そこで、今度は、A2~A7セルに、あらかじめ値を入力しておきましょう。

そして、B2セルにはWEBSERVICE関数を入力します。このとき、A2セルの値に応じて問い合わせをするURLが変わるような数式を入れてみます。

この数式をコピーしてB3~B7セルに貼り付けると、今度は、B3~B7セルに別々の値が表示されました。

このように、セルごとに呼び出しているURLが異なるときには、貼り付けたセルの数だけサーバにアクセスしていることがわかります

セルの値を入力・変更してみる

この状態で、セルに値を入力・変更してみましょう。

まず、B2セル~B7セルの数式に無関係なセル(たとえば、E2セル)に値を入力しても、B列の値は変わりません。

一方で、B列の数式から参照しているA列の値を変えると、関連しているセルだけ再リクエストがかかります

たとえば、A7セルの値を「8」に変えると、B7セルの値だけ変わります。

つまり、B7セルに入力したWEBSERVICE関数だけが実行されたということになります。

サーバへのアクセスを必要最小限で抑えようとしてくれているようですね。

保存・再読み込みしてみる

次に、このファイルを保存して、再読み込みしてみます。

結論からいうと、再読み込みのタイミングでもサーバへのアクセスは発生しないようです。

「コンテンツの有効化」ボタンを押しても、サーバへのアクセスは発生しませんでした。

とりあえず、保存・再読み込みだけならサーバへのアクセスが発生することはなさそうです。

その他の操作

ここまでの実験だと、最初に数式を入力した時点以外では、比較的サーバへのアクセスは控えめなように感じました。

が、意外なタイミングでサーバへのアクセスが発生するようです。たとえば、行の挿入・削除で、サーバへのアクセスが発生しました。

実際、1行目に行を挿入すると、すべてのセルについてサーバへのアクセスが発生します。

これは、結構痛いですね。

仮に、1,000行分WEBSERVICE関数を入力してある状態で1行目に行を挿入したら、瞬間的に1,000回のリクエストが送信されるということになります

なお、サーバへのリクエストは、同時には10リクエストを上限とするように制限されているようです(ExcelAPIの運営者の方から情報提供を頂きました)。

そして、ExcelからのAPIを受ける前提のAPIサーバであれば、この程度の負荷ならば許容範囲だろうとのことでした。

ExcelAPIも、この程度の負荷なら許容範囲とのことで、(外部APIサーバにリクエストを出す一部の機能を除き)基本的にはサーバの負荷を考慮することなくガンガン使ってほしいとのことでした。

「祝日一覧取得」など、便利なAPIが揃っていますので、興味がある方は見てみてください。

結論

安易にWEBSERVICE関数を使うと、瞬間的に大量のリクエストが送られて相手に迷惑をかけてしまうおそれがあります。相手に迷惑がかからないか、慎重に検討をしたほうが良いでしょう。

また、思わぬタイミングで、サーバへのアクセスが発生する場合もあるので注意しましょう。たとえば、「1秒に○リクエストまで」「1日に○リクエストまで」といった制限がある場合には、この制限を超過しないか慎重に検討してください。

エクセル基礎講座 「無料」動画マニュアル

「経理事務のためのエクセル基礎講座(初級編)」(動画マニュアル 総収録時間162分)を無料プレゼント中です!

このマニュアルで解説していることを一通り学べば、経理事務を行う上で最低限必要となる知識が得られます。

ご登録者の方には、合わせて、公認会計士が実体験を通して身に付けたエクセルを使う技をメールにてお伝えしていきます!

無料動画講座 登録フォーム

※ご登録頂いたメールアドレスに、エクセルを使いこなすための情報を配信するメールセミナー「エクセル倍速講座」も合わせて配信させていただきます。