Office Scripts入門!外部JSON/Excelデータ読込戦略とプロジェクト構成の基本
生徒
「Office Scriptsで外部のJSONやExcelデータを読み込んで、自動化したいんですが、どうやってやるんですか?」
先生
「Office Scriptsでは、Excel Onlineを使ってデータを処理します。外部JSONや別のExcelファイルのデータを読み込むには、Power Automateと連携する方法が基本になります。」
生徒
「JSONって何ですか?難しそうです…」
先生
「JSONはデータを整理して保存するための形式です。住所録や商品一覧のようなデータを、決まった形でまとめたものです。順番に学べば大丈夫ですよ。」
1. Office Scriptsとは?Excel自動化の基礎
Office Scriptsは、Microsoftが提供するExcel Online向けの自動化機能です。ブラウザ上のExcelで、繰り返し作業や集計処理を自動化できます。マクロに似ていますが、VBAではなくTypeScriptという言語を使います。
TypeScriptとは、JavaScriptをより安全に書けるようにしたプログラミング言語です。難しく聞こえますが、「Excelのセルを指定して値を入れる」というシンプルな命令から始められます。
Office Scripts、Excel自動化、Excel Online、TypeScript、Microsoft365といったキーワードは検索でもよく使われるため、基礎から理解しておくことが大切です。
2. 外部JSONデータ読込戦略の基本
JSONとは「データの箱」のようなものです。名前や価格などを整理して保存できます。たとえば商品データをJSONで持っている場合、それをExcelに取り込めば自動集計ができます。
Office Scripts単体ではインターネット上のJSONを直接取得できません。そのため、Power Automateを使ってJSONを取得し、そのデータをスクリプトに渡す戦略が一般的です。
外部JSON読込戦略の流れは次の通りです。
- Power AutomateでAPIやファイルからJSONを取得
- Office Scriptsにデータを引き渡す
- Excelのシートに書き込む
3. JSONデータをExcelに書き込む基本コード
まずは、引き渡されたJSONデータをExcelに出力する例です。配列とは、データを順番に並べたものです。
function main(workbook: ExcelScript.Workbook, jsonData: {name: string, price: number}[]) {
const sheet = workbook.getActiveWorksheet();
sheet.getRange("A1").setValue("商品名");
sheet.getRange("B1").setValue("価格");
jsonData.forEach((item, index) => {
sheet.getRange("A" + (index + 2)).setValue(item.name);
sheet.getRange("B" + (index + 2)).setValue(item.price);
});
}
このコードでは、JSONデータを1行ずつExcelに書き込んでいます。forEachは「順番に取り出して処理する」という意味です。
4. 別のExcelファイルを読み込む戦略
別のExcelファイルのデータを読み込みたい場合も、Power Automateとの連携が重要です。OneDriveやSharePointに保存されたExcelファイルを取得し、必要なデータを抽出してOffice Scriptsへ渡します。
Office Scripts内では、受け取ったデータを処理するだけに集中させるのがプロジェクト構成のポイントです。データ取得とデータ加工を分けることで、コード管理がしやすくなります。
5. 受け取ったデータを表に変換する方法
Excelでは「テーブル」という機能を使うと、フィルターや並び替えが簡単になります。自動化ではテーブル化が重要です。
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
const range = sheet.getRange("A1:B5");
const table = sheet.addTable(range, true);
table.setName("商品テーブル");
}
このようにしておくと、データ管理がしやすくなり、大量データ処理や業務自動化に役立ちます。
6. エラー対策とデータチェック戦略
外部データは必ずしも正しいとは限りません。値が空だったり、数値であるべき場所に文字が入っていることもあります。
function main(workbook: ExcelScript.Workbook, data: any[]) {
const sheet = workbook.getActiveWorksheet();
data.forEach((item, index) => {
if (typeof item.price === "number") {
sheet.getRange("A" + (index + 1)).setValue(item.price);
} else {
sheet.getRange("A" + (index + 1)).setValue("価格エラー");
}
});
}
typeofはデータの種類を確認する命令です。初心者でもこのようなチェックを入れることで、安全なExcel自動化ができます。
7. プロジェクト構成とコード管理の考え方
Office Scriptsのプロジェクト構成では、役割ごとに整理することが重要です。たとえば、データ取得処理、データ整形処理、Excel書込処理を分けて設計します。
また、スクリプト名を「json取込処理」「売上集計処理」など具体的にすると、コード管理がしやすくなります。コメントも必ず書きましょう。
// 売上データを合計するスクリプト
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
const total = sheet.getRange("B2:B10").getValues()
.flat()
.reduce((sum, value) => sum + Number(value), 0);
sheet.getRange("C1").setValue("合計");
sheet.getRange("C2").setValue(total);
}
このように役割を明確にすることで、Office Scriptsのコード管理がしやすくなり、業務自動化の効率も向上します。
まとめ
今回は、Office Scripts入門として、外部JSONデータ読込戦略、Excel Onlineでの自動化方法、Power Automateとの連携方法、そしてプロジェクト構成の基本までを順番に整理しました。Office ScriptsはMicrosoft365環境で動作するExcel自動化機能であり、TypeScriptを使って安全にスクリプトを記述できる点が大きな特徴です。従来のVBAとは異なり、ブラウザ上で動作するため、社内共有やクラウド運用との相性が非常に良い仕組みになっています。
外部JSONを直接取得できないという制約はありますが、Power Automateを活用することでAPI連携やOneDrive保存ファイルの取得が可能になります。つまり、データ取得はPower Automate、データ加工とExcel書込はOffice Scriptsという役割分担が重要です。この設計思想を理解することで、Excel自動化、業務効率化、データ処理自動化の品質が大きく向上します。
また、JSON配列をforEachで処理する方法、typeofによるデータ型チェック、テーブル化によるデータ管理最適化など、実務でよく使う重要なテクニックも学びました。特にエラー対策は重要であり、数値チェックや空白確認を入れることで、安全なExcel自動化環境を構築できます。Office Scriptsで大量データ処理を行う場合は、必ずデータ検証処理を組み込むことが基本戦略になります。
さらに、プロジェクト構成では処理を分離する考え方が重要でした。データ取得処理、データ整形処理、Excel書込処理を分けることで、保守性と可読性が向上します。スクリプト名の付け方やコメントの書き方も、チーム開発では大きな差になります。Office Scripts、Excel Online、自動化設計、JSON連携、Power Automate連携というキーワードを軸に、体系的に理解することが重要です。
応用サンプルプログラム
最後に、JSONデータを受け取り、エラーチェックを行い、テーブル化まで自動で行う応用例を確認しましょう。実務でもそのまま応用できる構成です。
function main(workbook: ExcelScript.Workbook, jsonData: {name: string, price: number}[]) {
const sheet = workbook.getActiveWorksheet();
// 見出し設定
sheet.getRange("A1").setValue("商品名");
sheet.getRange("B1").setValue("価格");
// データ書込とチェック
jsonData.forEach((item, index) => {
sheet.getRange("A" + (index + 2)).setValue(item.name);
if (typeof item.price === "number") {
sheet.getRange("B" + (index + 2)).setValue(item.price);
} else {
sheet.getRange("B" + (index + 2)).setValue("価格エラー");
}
});
// テーブル化
const lastRow = jsonData.length + 1;
const range = sheet.getRange("A1:B" + lastRow);
const table = sheet.addTable(range, true);
table.setName("商品管理テーブル");
}
このように、データ検証、Excel書込、テーブル生成までを一つの流れとして設計すると、業務自動化の品質が安定します。Office ScriptsとPower Automateを組み合わせた設計は、今後のExcel自動化の標準的な方法と言えるでしょう。
生徒
Office ScriptsはExcel Online専用の自動化機能で、TypeScriptを使って書くんですよね。外部JSONは直接取得できないから、Power Automateと連携するのが基本戦略だと理解しました。
先生
その通りです。データ取得とデータ加工を分離する設計が重要です。Office ScriptsはExcel処理に集中させることで、保守性と再利用性が高まります。
生徒
JSON配列をforEachで処理したり、typeofでデータ型チェックをしたりするのは、安全なデータ処理のためなんですね。エラー対策を入れることが重要だと分かりました。
先生
そうです。特に業務自動化では、想定外のデータが入ることは珍しくありません。データ検証処理を入れることで、安定したExcel自動化が実現できます。
生徒
テーブル化することでフィルターや並び替えが簡単になり、大量データ処理にも強くなるんですね。プロジェクト構成も意識して設計していきます。
先生
とても良い理解です。Office Scripts、Excel自動化、JSON連携、Power Automate連携という基礎を押さえておけば、業務効率化やデータ処理自動化の幅は大きく広がります。まずは小さな自動化から始めて、徐々に設計力を高めていきましょう。