Office Scriptsの基本!fetchを使ったHTTP通信で外部APIと連携する方法【Excel自動化・初心者向け解説】
生徒
「Office ScriptsでExcelを自動化できるのは分かりましたが、外部APIと連携するHTTP通信って何ですか?」
先生
「HTTP通信とは、インターネットを通じてデータをやり取りする仕組みのことです。fetchという機能を使えば、Webサービスや外部APIからデータを取得できます。」
生徒
「Excelなのにインターネットとつながるんですか?」
先生
「はい。Office Scriptsはクラウド上で動くので、fetchを使ったHTTP通信で外部API連携ができます。それでは基本から見ていきましょう。」
1. Office Scriptsとは?
Office Scriptsは、Excel Onlineで動作する自動化機能です。ブラウザ上のExcelでスクリプトを書き、繰り返し作業やデータ処理を自動化できます。使用する言語はTypeScriptで、これはJavaScriptを拡張したプログラミング言語です。難しそうに聞こえますが、やっていることは「Excelに命令を書く」だけです。
たとえばセルに文字を入力する、表を作る、データを並び替えるといった操作をコードで実行できます。さらにfetchを使えば、外部API連携やWebサービスとのHTTP通信も可能になります。
2. HTTP通信とfetchの基本とは?
HTTP通信とは、インターネット上で情報をやり取りするためのルールです。Webサイトを見るときも、この仕組みが使われています。
fetchは、そのHTTP通信を行うための命令です。簡単に言えば「インターネットからデータを取りに行くボタン」のようなものです。
外部APIとは、他のサービスが公開しているデータの入り口です。たとえば天気情報や為替情報などを取得できます。Office Scriptsでfetchを使うと、そのデータをExcelに取り込めます。
3. fetchでデータを取得する基本コード(GET通信)
まずは基本的なGET通信の例です。GETとは「データをください」とお願いする通信方法です。
async function main(workbook: ExcelScript.Workbook) {
const response = await fetch("https://api.example.com/data");
const data = await response.json();
const sheet = workbook.getActiveWorksheet();
sheet.getRange("A1").setValue(data.message);
}
asyncやawaitという言葉は「通信が終わるまで待つ」という意味です。インターネット通信は時間がかかるため、順番を守る必要があります。
response.json()は、受け取ったデータを使いやすい形式に変換しています。
4. 取得したデータを複数セルに表示する方法
外部API連携では、配列という複数データが返ってくることがあります。配列とは、データの箱が並んでいるイメージです。
async function main(workbook: ExcelScript.Workbook) {
const response = await fetch("https://api.example.com/users");
const users = await response.json();
const sheet = workbook.getActiveWorksheet();
for (let i = 0; i < users.length; i++) {
sheet.getRange("A" + (i + 1)).setValue(users[i].name);
}
}
for文は繰り返し処理です。同じ作業を何度も行うときに使います。これでAPIのデータをExcelに一覧表示できます。
5. POST通信でデータを送信する方法
POST通信は「データを送る」方法です。たとえばフォームの送信のような仕組みです。
async function main(workbook: ExcelScript.Workbook) {
const response = await fetch("https://api.example.com/send", {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify({ name: "Taro" })
});
const result = await response.json();
workbook.getActiveWorksheet().getRange("A1").setValue(result.status);
}
methodは通信方法を指定しています。headersは通信の説明書のようなものです。bodyには送信するデータを書きます。
6. エラー処理の基本(安全なHTTP通信)
HTTP通信ではエラーが発生することもあります。エラーとは「うまくいかなかった」という状態です。
async function main(workbook: ExcelScript.Workbook) {
try {
const response = await fetch("https://api.example.com/data");
if (!response.ok) {
throw new Error("通信エラー");
}
const data = await response.json();
workbook.getActiveWorksheet().getRange("A1").setValue(data.message);
} catch (error) {
workbook.getActiveWorksheet().getRange("A1").setValue("取得失敗");
}
}
tryとcatchは、問題が起きたときの備えです。外部API連携では必ずエラー対策をしましょう。
7. fetchを使うときの注意点
Office Scriptsでfetchを使ったHTTP通信を行う場合、API側がCORSという制限をかけていると通信できないことがあります。これは安全のための仕組みです。
また認証が必要なAPIではトークンという鍵が必要になります。トークンは秘密のパスワードのようなものなので安全に管理します。
外部API連携はとても便利ですが、セキュリティや通信エラーも理解しておくことが大切です。
8. Office Scriptsとfetchでできること
Office Scriptsのfetchを使えば、天気情報取得、在庫管理システム連携、社内データベースAPI接続などが可能になります。Excel自動化とWeb API連携を組み合わせることで、手作業を大幅に削減できます。
初心者の方は、まずはGET通信の基本を理解し、その後POST通信やエラー処理へ進むと理解が深まります。Office Scripts、fetch、HTTP通信、外部API連携というキーワードを意識して学習を進めていきましょう。
まとめ
今回はOffice Scriptsの基本から始まり、fetchを使ったHTTP通信、そして外部API連携の方法までを順番に学習しました。Excel自動化というと、これまではマクロやVBAを思い浮かべる方が多かったかもしれません。しかしOffice Scriptsはクラウド上で動作し、TypeScriptを使ってより柔軟な自動化を実現できます。特にfetchを活用することで、単なるExcelの自動処理にとどまらず、外部APIと連携した高度なデータ取得やデータ送信が可能になります。
HTTP通信の基本であるGET通信は、外部サービスからデータを取得するための仕組みです。天気情報取得や在庫情報の確認、社内システムとのデータ同期など、業務効率化に直結する使い方が数多く存在します。Office Scriptsとfetchを組み合わせることで、Excelが単なる表計算ソフトではなく、情報を集約するハブのような存在になります。
またPOST通信では、Excelで入力したデータを外部APIへ送信できます。例えばアンケート結果の送信、顧客情報の登録、勤怠データの更新など、双方向のやり取りが可能になります。Excel自動化とWeb API連携を理解することで、手作業による転記やコピー作業を削減でき、作業時間短縮と入力ミス防止につながります。
さらに重要なのがエラー処理です。HTTP通信では通信失敗やサーバーエラーが起きる可能性があります。tryとcatchを使ったエラー対策を実装することで、安全な外部API連携が実現できます。業務で利用する場合は、通信成功だけでなく失敗時の動作も必ず設計しましょう。
Office Scriptsのfetchは、Excel Online環境で動作するため、インストール不要で利用できる点も魅力です。クラウド環境でのExcel自動化、HTTP通信、外部API連携という三つの要素を組み合わせれば、データ活用の幅が大きく広がります。初心者の方はまずGET通信を確実に理解し、配列処理やPOST通信、エラー処理へと段階的に学習を進めることが大切です。
サンプルプログラムの振り返り
async function main(workbook: ExcelScript.Workbook) {
try {
const response = await fetch("https://api.example.com/products");
if (!response.ok) {
throw new Error("通信失敗");
}
const products = await response.json();
const sheet = workbook.getActiveWorksheet();
for (let i = 0; i < products.length; i++) {
sheet.getRange("A" + (i + 1)).setValue(products[i].name);
sheet.getRange("B" + (i + 1)).setValue(products[i].price);
}
} catch (error) {
workbook.getActiveWorksheet().getRange("A1").setValue("データ取得エラー");
}
}
上記のコードでは、外部API連携によって商品一覧データを取得し、Excelに一覧表示しています。fetchによるHTTP通信、awaitによる非同期処理制御、for文による繰り返し処理、そしてエラー処理までを含めた実践的な構成です。これらを理解できれば、Office Scriptsを使った実務レベルのExcel自動化に一歩近づいたと言えるでしょう。
生徒
「Office Scriptsとfetchを使えば、Excelが外部APIと連携できることが分かりました。HTTP通信はデータのやり取りの仕組みなんですね。」
先生
「その通りです。GET通信でデータ取得、POST通信でデータ送信ができます。Excel自動化とWeb API連携を組み合わせることで、業務効率化が実現できます。」
生徒
「asyncやawaitは通信が終わるまで待つために必要なんですね。エラー処理も大切だと理解できました。」
先生
「とても良い理解です。外部API連携では安全なHTTP通信とエラー対策が重要です。まずは基本のGET通信を何度も練習し、Excel自動化の幅を広げていきましょう。」