Office Scripts入門!オブジェクトをExcel行列へ変換する方法【JSONデータ操作・自動化】
生徒
「Office ScriptsでJSONやオブジェクトのデータをExcelの行と列に変換したいんですが、どうすればいいんですか?」
先生
「Office Scriptsでは、オブジェクトデータを配列に変換してからExcelのセル範囲にまとめて書き込むことで、きれいな表にできますよ。」
生徒
「オブジェクトって何ですか?パソコン初心者でもできますか?」
先生
「もちろん大丈夫です。オブジェクトは『名前付きの箱』のようなものです。順番にゆっくり解説していきましょう。」
1. Office Scriptsとオブジェクトとは?
Office Scriptsは、Excel Onlineで使えるExcel自動化ツールです。ブラウザ上でExcelを開き、「自動化」タブからスクリプトを実行できます。難しそうに見えますが、やっていることは「セルに値を書く」「表を作る」といった普段のExcel操作と同じです。
ここで重要なのがオブジェクトです。オブジェクトとは、データを「名前付き」でまとめたものです。例えば「名前」「年齢」「部署」などをひとまとめにしたものです。
JSONデータやオブジェクトデータは、WebサービスやPower Automate連携でもよく使われます。Office ScriptsでオブジェクトをExcelの行列へ変換できると、データ整理や業務効率化が一気に進みます。
2. オブジェクトをそのままExcelに書いてみる
まずは簡単なオブジェクトを作ってみましょう。オブジェクトは「波かっこ」で囲みます。中に「名前: 値」の形で書きます。
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
const person = {
name: "山田",
age: 25,
department: "営業"
};
sheet.getRange("A1").setValue(person.name);
sheet.getRange("B1").setValue(person.age);
sheet.getRange("C1").setValue(person.department);
}
このコードでは、オブジェクトの中身を1つずつ取り出してExcelのセルに入れています。オブジェクトの中のデータは「person.name」のように「ドット」で取り出します。
これは小さなデータなら問題ありませんが、人数が増えると大変です。そこで次は「配列」と組み合わせます。
3. 複数オブジェクトを行列に変換する方法
複数のデータを扱う場合は「配列」を使います。配列とは、データを順番に並べたものです。オブジェクトの配列を作ると、社員一覧のようなデータを扱えます。
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
const employees = [
{ name: "山田", age: 25, department: "営業" },
{ name: "佐藤", age: 30, department: "総務" },
{ name: "鈴木", age: 28, department: "開発" }
];
const values = employees.map(emp => [
emp.name,
emp.age,
emp.department
]);
sheet.getRange("A1:C3").setValues(values);
}
ここで重要なのが「map」という処理です。mapは、配列の中身を1つずつ取り出して新しい形に変換する機能です。
ExcelのsetValuesは「二次元配列」を必要とします。二次元配列とは、行と列の形をしたデータのことです。つまり、オブジェクトを「行データ」に変換してあげる必要があります。
4. ヘッダー付きでExcel表を作る
実務では、1行目に見出しをつけることが多いです。例えば「名前」「年齢」「部署」のようなヘッダーです。
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
const employees = [
{ name: "山田", age: 25, department: "営業" },
{ name: "佐藤", age: 30, department: "総務" }
];
const header = [["名前", "年齢", "部署"]];
const body = employees.map(emp => [
emp.name,
emp.age,
emp.department
]);
const allData = header.concat(body);
sheet.getRange("A1:C3").setValues(allData);
}
concatは「つなげる」という意味です。ヘッダーとデータを結合して、Excelの行列データにしています。
これでJSONデータをExcelの表形式に変換する基本が完成です。
5. オブジェクトのキーを自動で取得する方法
キーとは、オブジェクトの「name」や「age」のような項目です。これを自動で取得できると、柔軟なExcel出力ができます。
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
const data = [
{ name: "山田", age: 25 },
{ name: "佐藤", age: 30 }
];
const keys = Object.keys(data[0]);
const header = [keys];
const body = data.map(item =>
keys.map(key => item[key])
);
const result = header.concat(body);
sheet.getRange("A1:B3").setValues(result);
}
Object.keysは、オブジェクトの項目名を配列で取り出す機能です。この方法なら、列が増えても自動で対応できます。
6. Office Scriptsでオブジェクト変換を使う場面
Office ScriptsでオブジェクトをExcel行列へ変換する技術は、業務自動化やデータ整理で非常に役立ちます。例えばPower Automateと連携してJSONデータを受け取り、Excelレポートを自動生成することも可能です。
また、API連携や外部システムから取得したデータも、同じように配列へ変換すればExcel表にできます。
初心者の方はまず「オブジェクトは名前付きの箱」「配列は並んだ箱」「二次元配列はExcelの行列」とイメージしてください。この考え方を理解できれば、Office Scriptsのデータ操作はぐっと簡単になります。
Excel自動化、JSON変換、オブジェクト操作、行列変換の基本を押さえておくことで、日々の作業時間を大幅に短縮できます。まずは小さなデータから試して、少しずつ応用していきましょう。
まとめ
今回は、Office Scriptsを使ってオブジェクトやJSONデータをExcelの行列へ変換する方法を基礎から丁寧に確認しました。Office ScriptsはExcel Onlineで使える自動化機能であり、手作業で行っていたデータ入力や表作成を効率化できる非常に強力な仕組みです。特に、オブジェクト操作、配列変換、二次元配列作成、setValuesによる一括書き込みといった流れを理解することが、Excel自動化を成功させる重要なポイントになります。
オブジェクトは「名前付きのデータの集まり」であり、JSON形式のデータも基本的には同じ構造です。このオブジェクトをそのままExcelに書き込むのではなく、配列へ変換し、さらにExcelが理解できる二次元配列へ加工することで、行と列の形に整った表を作成できます。map関数やObject.keysを活用することで、データ件数が増えても柔軟に対応できる仕組みを作れる点が大きな利点です。
また、ヘッダー行を追加することで実務にそのまま使えるExcelレポートを生成できます。Power Automate連携やAPI連携を行う場合も、最終的には「オブジェクトから二次元配列へ変換する」という考え方が中心になります。Office ScriptsでJSONデータ操作を行う際は、オブジェクト構造を理解し、キーと値の関係を意識しながら行列変換することが重要です。
ここでもう一度、オブジェクトを行列へ変換する基本形を確認してみましょう。実務でもよく使う形です。
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
const data = [
{ name: "山田", age: 25, department: "営業" },
{ name: "佐藤", age: 30, department: "総務" },
{ name: "鈴木", age: 28, department: "開発" }
];
const keys = Object.keys(data[0]);
const header = [keys];
const body = data.map(item =>
keys.map(key => item[key])
);
const result = header.concat(body);
sheet.getRange("A1:C4").setValues(result);
}
このコードでは、オブジェクト配列からキーを自動取得し、ヘッダー行とデータ本体を結合してExcelへ一括出力しています。Office Scripts入門段階として非常に重要な処理です。JSON変換、データ整形、自動レポート作成、業務効率化など、さまざまな場面で応用できます。
Office Scriptsでのオブジェクト操作に慣れると、単なるExcel操作から一歩進んだ自動化スキルが身につきます。配列処理、map関数、二次元配列、setValues、キー取得といった基礎を繰り返し練習することで、より高度なデータ加工や自動化処理にも対応できるようになります。まずは小規模なJSONデータで試し、徐々に複雑なデータ構造へ挑戦してみましょう。
生徒
「Office ScriptsでオブジェクトをExcel行列に変換する流れがようやく分かってきました。まずオブジェクトを理解して、それを配列にして、最後に二次元配列へ変換するんですよね。」
先生
「その通りです。特に重要なのは、ExcelのsetValuesは二次元配列しか受け取れないという点です。だからJSONデータやオブジェクトデータを、そのままではなく加工する必要があるのです。」
生徒
「map関数を使うことで、複数のデータを一括で変換できるのが便利でした。Object.keysでキーを自動取得できるのも実務向きですね。」
先生
「はい。キーを固定せずに取得することで、列が増えても自動対応できます。これはExcel自動化やAPI連携、Power Automate連携でも非常に役立つ考え方です。」
生徒
「オブジェクトは名前付きの箱、配列は並んだ箱、二次元配列はExcelの行列というイメージで考えると整理しやすいですね。」
先生
「そのイメージが持てていれば、Office ScriptsでのJSON変換やデータ操作は怖くありません。これからはデータ整理やレポート自動生成にも挑戦できますよ。」
生徒
「はい。Office Scripts入門として、オブジェクト変換と行列出力の基礎をしっかり身につけられました。もっと練習してExcel自動化を極めたいです。」
先生
「素晴らしいですね。基礎を大切にしながら、少しずつ応用へ進んでいきましょう。」