Office Scripts×外部API連携!fetchで取得したデータをExcelに自動反映する方法【初心者向け完全ガイド】
生徒
「Office Scriptsで外部APIからデータを取得して、Excelに自動で入力することはできますか?」
先生
「できますよ。fetchというHTTP通信の仕組みを使えば、APIからデータを取得してExcelに自動反映できます。」
生徒
「APIとかHTTPって難しそうです…パソコンもあまり触ったことがないんですが大丈夫ですか?」
先生
「大丈夫です。インターネットから情報を取り寄せて、Excelのセルに書き込むだけのイメージです。一緒にゆっくり見ていきましょう。」
1. Office Scriptsで外部API連携とは?
Office Scriptsとは、Excel Onlineで使える自動化機能です。Excelの作業をコードで自動化できるため、繰り返し作業やデータ入力を効率化できます。
外部API連携とは、インターネット上にあるサービスからデータを取得する仕組みです。APIとは「アプリケーション同士をつなぐ窓口」のようなものです。例えば、天気情報APIや為替レートAPIから最新データを取得し、Excelに自動入力することができます。
fetchは、HTTP通信を行うための命令です。HTTPとはインターネットでデータをやり取りするルールのことです。難しく考えなくて大丈夫です。「インターネットにお願いしてデータを取ってくる」命令だと思ってください。
2. fetchでAPIからデータを取得する基本コード
まずは、APIからデータを取得する最も基本的なOffice Scriptsのコードを見てみましょう。ここではサンプルAPIからJSONデータを取得します。
async function main(workbook: ExcelScript.Workbook) {
const response = await fetch("https://jsonplaceholder.typicode.com/todos/1");
const data = await response.json();
console.log(data);
}
asyncやawaitは、データの取得が終わるまで待つための仕組みです。インターネット通信は少し時間がかかるため、順番を守って処理する必要があります。
response.json()は、取得したデータを扱いやすい形式に変換する処理です。JSONとは、データの書き方のルールの一つです。
3. APIから取得したデータをExcelのセルに反映する方法
次は、取得したデータをExcelのセルに書き込んでみましょう。これが「Excel自動反映」の基本です。
async function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
const response = await fetch("https://jsonplaceholder.typicode.com/todos/1");
const data = await response.json();
sheet.getRange("A1").setValue("タイトル");
sheet.getRange("B1").setValue(data.title);
}
getActiveWorksheetは、今開いているシートを取得する命令です。getRangeはセルを指定する命令です。setValueでセルに値を書き込みます。
これで、APIのデータがExcelに自動入力されます。手作業でコピーする必要はありません。
4. 複数データをExcel表に自動入力する方法
APIから複数のデータを取得し、表形式でExcelに反映することも可能です。データ一覧を自動取得してExcelに一覧表示できます。
async function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
const response = await fetch("https://jsonplaceholder.typicode.com/users");
const users = await response.json();
sheet.getRange("A1").setValue("名前");
sheet.getRange("B1").setValue("メール");
for (let i = 0; i < users.length; i++) {
sheet.getRange(`A${i+2}`).setValue(users[i].name);
sheet.getRange(`B${i+2}`).setValue(users[i].email);
}
}
for文は繰り返し処理です。同じ作業を何回も自動で行います。これにより、大量データを一瞬でExcelに反映できます。
5. エラー対策も含めた安全なAPI連携
インターネット通信ではエラーが起きる可能性もあります。そのため、エラーハンドリングも大切です。
async function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
try {
const response = await fetch("https://jsonplaceholder.typicode.com/posts/1");
if (!response.ok) {
throw new Error("通信エラー");
}
const data = await response.json();
sheet.getRange("A1").setValue(data.title);
} catch (error) {
sheet.getRange("A1").setValue("データ取得に失敗しました");
}
}
tryとcatchは、エラーが発生した場合の保険のようなものです。response.okは通信が成功したか確認する命令です。
6. Office ScriptsでAPI自動取得を活用するメリット
Office Scriptsと外部API連携を組み合わせることで、最新情報を自動取得しExcelに自動反映できます。例えば、売上データ、在庫情報、天気情報、ニュースデータなどを自動取得できます。
Excel自動化、API連携、fetchによるHTTP通信、JSONデータ取得、Excel自動入力といった技術を組み合わせることで、業務効率化や作業時間短縮が実現できます。
初心者でも、まずはセルに値を書き込む基本から理解し、次にfetchでデータ取得、最後にExcel反映という順番で学ぶことで、確実にスキルアップできます。
まとめ
今回は、Office Scriptsと外部API連携を組み合わせて、fetchによるHTTP通信で取得したJSONデータをExcelに自動反映する方法を学びました。Office ScriptsはExcel Onlineで使える自動化機能であり、繰り返し作業の効率化やデータ入力の自動化に非常に強力な仕組みです。特に、外部APIから最新データを取得し、Excelのセルへ自動入力できる点は、業務効率化や作業時間短縮に大きく貢献します。
fetchを使ったHTTP通信の基本では、asyncやawaitを活用して通信完了を待つ処理を行いました。インターネット経由でデータを取得する場合、処理の順番を正しく制御することが重要です。response.jsonでJSON形式のデータを扱いやすい形に変換し、そのデータをgetRangeとsetValueを使ってExcelのセルへ書き込みました。これにより、手作業でコピー貼り付けをする必要がなくなり、自動化されたデータ取得と自動反映が実現しました。
また、for文を使った繰り返し処理によって、複数データを一覧形式でExcelに自動入力する方法も確認しました。大量データを一括で処理できることは、Excel自動化の大きなメリットです。さらに、tryとcatchを使ったエラーハンドリングによって、安全なAPI連携を実装しました。通信エラーやサーバーエラーが発生しても、適切なメッセージを表示することで、実務で安心して使える仕組みになります。
Office Scriptsによる外部API連携、fetchによるHTTP通信、JSONデータ取得、Excel自動入力、エラーハンドリングという一連の流れを理解することで、初心者でも段階的にスキルを高めることができます。まずはセルに値を書き込む基本操作を身につけ、その後にAPIデータ取得、そして複数データ処理へと進むことで、確実に理解が深まります。
サンプルプログラム総復習
ここで、APIからデータを取得し、エラー対策を行いながらExcelへ自動反映する流れをもう一度確認してみましょう。
async function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
try {
const response = await fetch("https://jsonplaceholder.typicode.com/users");
if (!response.ok) {
throw new Error("通信エラー");
}
const users = await response.json();
sheet.getRange("A1").setValue("名前");
sheet.getRange("B1").setValue("メール");
for (let i = 0; i < users.length; i++) {
sheet.getRange(`A${i+2}`).setValue(users[i].name);
sheet.getRange(`B${i+2}`).setValue(users[i].email);
}
} catch (error) {
sheet.getRange("A1").setValue("データ取得に失敗しました");
}
}
このコードには、Office Scriptsの基本操作、fetchによるHTTP通信、JSONデータ処理、for文による繰り返し処理、tryとcatchによるエラーハンドリングがすべて含まれています。実際の業務では、売上管理、在庫管理、顧客情報取得、天気情報取得、為替レート取得など、さまざまな用途に応用できます。
生徒
「Office Scriptsと外部API連携を組み合わせると、Excel自動化がここまでできるとは思いませんでした。」
先生
「そうですね。fetchによるHTTP通信を理解すれば、インターネット上のデータをExcelへ自動反映できます。」
生徒
「asyncやawaitは難しく感じましたが、順番を守るための仕組みだと分かりました。」
先生
「その理解はとても大切です。JSONデータ取得とExcelセル入力を組み合わせることで、業務効率化が実現します。」
生徒
「for文を使えば複数データも自動入力できるので、大量データ処理にも使えますね。」
先生
「その通りです。さらにエラーハンドリングを入れることで、安全なAPI連携が可能になります。」
生徒
「Office Scripts、Excel自動化、外部API連携、fetch、HTTP通信、JSON処理の流れがつながりました。」
先生
「基礎を丁寧に積み重ねれば、初心者でも確実にスキル向上できます。まずは小さな自動化から始めてみましょう。」