Office Scriptsで外部API連携!fetchでGET/POSTリクエストを送るHTTP通信の書き方
生徒
「Office ScriptsでExcelを自動化できるのは分かったんですが、外部APIと連携してデータを取得することはできますか?」
先生
「はい、できますよ。fetchという機能を使えば、HTTP通信でGETやPOSTリクエストを送信できます。」
生徒
「GETとかPOSTって何ですか?難しそうです…」
先生
「インターネット上のサーバーに『データをください』とお願いする方法がGET、『データを送ります』と渡す方法がPOSTです。順番にやさしく解説しますね。」
1. Office Scriptsで外部API連携とは?
Office Scriptsは、Excel Onlineの自動化を実現する仕組みです。通常はセルの値変更やシート操作を行いますが、さらに発展させると外部API連携も可能です。
外部APIとは、インターネット上にあるサービスの窓口のようなものです。たとえば天気情報、為替レート、在庫管理システムなどと接続できます。
このときに使うのがfetch関数です。fetchはHTTP通信を行うための命令です。HTTPとは、インターネットでデータをやり取りするルールのことです。ブラウザでWebページを見るときも、このHTTP通信が使われています。
Office Scriptsでfetchを使えば、ExcelからAPIへアクセスし、取得したデータをセルに自動入力できます。これがExcel自動化とAPI連携の基本です。
2. GETリクエストとは?データを取得する方法
GETリクエストは「データをください」とサーバーにお願いする方法です。たとえば天気APIにアクセスして、現在の気温を取得するような使い方をします。
まずは基本の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()は、取得したデータをJavaScriptで扱える形式に変換する命令です。
3. GETリクエストでパラメータを送る方法
APIによっては、検索条件などを指定する必要があります。これをパラメータと呼びます。
たとえば「都市名を指定して天気を取得する」場合は、URLの後ろに?を付けて値を書きます。
async function main(workbook: ExcelScript.Workbook) {
const city = "Tokyo";
const url = `https://api.example.com/weather?city=${city}`;
const response = await fetch(url);
const data = await response.json();
workbook.getActiveWorksheet().getRange("A1").setValue(data.temperature);
}
?city=Tokyoの部分が検索条件です。このようにすることで、API連携の幅が広がります。
4. POSTリクエストとは?データを送信する方法
POSTリクエストは、サーバーにデータを送る方法です。たとえばフォームの送信や登録処理に使われます。
Office ScriptsでPOST通信を書く場合は、fetchの第二引数に設定を記述します。
async function main(workbook: ExcelScript.Workbook) {
const sendData = {
name: "Taro",
score: 90
};
const response = await fetch("https://api.example.com/register", {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify(sendData)
});
const result = await response.json();
workbook.getActiveWorksheet().getRange("A1").setValue(result.status);
}
methodは通信方法の指定です。headersはデータ形式の説明書のようなものです。bodyは実際に送るデータです。
5. エラーハンドリングの基本
インターネット通信では、エラーが発生することもあります。サーバーが停止している場合や、URLが間違っている場合です。
そのため、response.okで成功かどうか確認することが重要です。
async function main(workbook: ExcelScript.Workbook) {
const response = await fetch("https://api.example.com/data");
if (!response.ok) {
workbook.getActiveWorksheet().getRange("A1").setValue("通信エラー");
return;
}
const data = await response.json();
workbook.getActiveWorksheet().getRange("A1").setValue(data.message);
}
このように確認処理を入れることで、安全なAPI連携が可能になります。
6. Office ScriptsとHTTP通信の仕組みまとめ
Office Scriptsでfetchを使うと、Excel自動化と外部API連携が可能になります。GETリクエストはデータ取得、POSTリクエストはデータ送信です。
HTTP通信、API、JSON、非同期処理といった用語は最初は難しく感じますが、「インターネットにお願いする仕組み」と考えると理解しやすくなります。
Excel Online、Office Scripts、fetch、GET、POST、外部API連携といったキーワードを押さえておくことで、実務レベルの自動化にも対応できるようになります。
まずは小さなAPIから試し、Excelに表示させるところから始めると理解が深まります。
まとめ
Office ScriptsとfetchによるHTTP通信の総復習
ここまで、Office Scriptsを使った外部API連携の方法について、GETリクエストやPOSTリクエストの書き方を中心に学んできました。Excel Onlineの自動化だけでなく、HTTP通信を活用することで、インターネット上のサービスと連携できるようになる点が大きな特徴です。
fetch関数を使えば、APIサーバーへアクセスし、JSON形式のデータを取得したり、必要な情報をPOST通信で送信したりできます。これにより、天気情報の取得、在庫データの登録、外部システムとのデータ連携など、業務自動化の幅が一気に広がります。
特に重要なのは、asyncとawaitによる非同期処理の理解です。HTTP通信はすぐに結果が返ってくるとは限らないため、「通信が完了するまで待つ」処理が必要です。この仕組みを理解することで、Office ScriptsでのAPI連携が安定して動作するようになります。
また、GETリクエストではURLにパラメータを付けて検索条件を指定し、POSTリクエストではmethod・headers・bodyを設定してデータを送信するという基本構造も押さえました。JSON.stringifyを使ってオブジェクトを文字列に変換する点も、実務では頻繁に利用します。
さらに、response.okを使ったエラーハンドリングも重要です。通信エラーやサーバーエラーが発生した場合に備えて確認処理を入れることで、安全なHTTP通信と外部API連携が実現できます。Office ScriptsによるExcel自動化は、単なるセル操作にとどまらず、クラウドサービスとの統合まで可能にする強力な仕組みです。
総合サンプルプログラム
最後に、GETリクエストとエラーハンドリングを組み合わせた総合的なサンプルを確認してみましょう。Office ScriptsでのHTTP通信の流れを復習できます。
async function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
const url = "https://api.example.com/data";
try {
const response = await fetch(url);
if (!response.ok) {
sheet.getRange("A1").setValue("通信に失敗しました");
return;
}
const data = await response.json();
sheet.getRange("A1").setValue("取得成功");
sheet.getRange("A2").setValue(data.message);
} catch (error) {
sheet.getRange("A1").setValue("例外エラーが発生しました");
}
}
このように、tryとcatchを組み合わせることで、より堅牢なAPI連携プログラムを作成できます。Excel OnlineとOffice Scripts、fetchによるHTTP通信を組み合わせれば、日々の業務を自動化しながら、外部APIとリアルタイムでデータをやり取りできる環境を構築できます。
生徒
「Office Scriptsで外部API連携ができるということは、Excelからインターネット上のデータを直接取得できるということですよね。」
先生
「その通りです。fetchを使ったHTTP通信によって、GETリクエストでデータ取得、POSTリクエストでデータ送信が可能になります。」
生徒
「asyncとawaitは通信が終わるまで待つための仕組みでしたね。これがないと正しくデータが取れないのですね。」
先生
「よく理解できていますね。さらにresponse.okで成功確認を行い、エラーハンドリングも入れることで、安定したAPI連携が実現できます。」
生徒
「Office Scriptsとfetchを組み合わせれば、Excel自動化がさらに進化しますね。外部APIと連携することで、実務でも活用できそうです。」
先生
「その通りです。HTTP通信の基本、GETとPOSTの違い、JSON形式の扱い、非同期処理の考え方をしっかり理解すれば、応用範囲は非常に広がります。まずは簡単なAPIから試して、少しずつレベルアップしていきましょう。」