Office Scripts入門!2次元配列で大量データを高速書き込みする方法【Excel自動化・パフォーマンス改善】
生徒
「Office ScriptsでExcelに大量データを書き込みたいんですが、1件ずつ入力するとすごく遅いです…高速化する方法はありますか?」
先生
「ありますよ。Excel自動化では2次元配列を使ってまとめて書き込むと、処理速度が大きく改善します。」
生徒
「2次元配列って何ですか?プログラミングも初めてで難しそうです。」
先生
「表の形をそのまま箱に入れて、一度にドンと置くイメージです。これからゆっくり解説しますね。」
1. Office Scriptsとは?
Office Scriptsとは、Excel Onlineで使える自動化機能です。Excelの操作をコードで記述し、ボタンひとつで実行できます。Excel自動化、業務効率化、定型作業の削減などに役立つ便利な仕組みです。
使われている言語はTypeScriptです。TypeScriptはJavaScriptをもとにした言語で、Web開発でもよく使われています。難しそうに聞こえますが、実際は「セルを選ぶ」「値を入れる」といった操作を文字で書いているだけです。
たとえば、セルA1に文字を入れるコードは次のようになります。
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
sheet.getRange("A1").setValue("Excel自動化");
}
このように、Excelの操作をそのままコードに置き換えていきます。
2. なぜ大量データは遅くなるのか?
初心者がよくやってしまうのが、セルを1つずつ書き込む方法です。たとえば1000行のデータを1行ずつ入力すると、1000回もExcelに命令を送ることになります。
これは、毎回コンビニに1本ずつジュースを買いに行くようなものです。まとめて買えば早いのに、何度も往復しているので時間がかかります。
実際に1件ずつ書き込む例を見てみましょう。
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
for (let i = 0; i < 100; i++) {
sheet.getRange("A" + (i + 1)).setValue(i);
}
}
この方法は分かりやすいですが、大量データ処理ではパフォーマンスが低下します。
3. 2次元配列とは?初心者向けやさしい解説
2次元配列とは、行と列を持つデータの集まりです。Excelの表と同じ形をしています。
1次元配列は横一列のデータです。2次元配列は、横と縦のデータを持っています。つまり、表そのものです。
たとえば、次のようなデータです。
名前 年齢
田中 20
佐藤 25
これをそのまま配列にすると次のようになります。
const data = [
["名前", "年齢"],
["田中", 20],
["佐藤", 25]
];
このように、配列の中に配列が入っている形を2次元配列と呼びます。
4. 2次元配列で高速書き込みする方法
大量データ高速書き込みのポイントは、setValuesメソッドを使うことです。setValuesは、まとめて範囲にデータを書き込みます。
まとめて一度に書くので、Excelとのやり取りが少なくなり、処理速度が向上します。
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
const data = [
["商品", "価格"],
["りんご", 100],
["みかん", 120],
["バナナ", 150]
];
sheet.getRange("A1:B4").setValues(data);
}
これだけで、表全体が一瞬で書き込まれます。業務自動化やデータ処理の高速化にとても重要なテクニックです。
5. ループと組み合わせた大量データ生成
実務では、データを自動で作ることも多いです。その場合も、まず2次元配列を作り、最後にまとめて書き込みます。
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
const rows = 1000;
const data: (string | number)[][] = [];
for (let i = 0; i < rows; i++) {
data.push(["社員" + (i + 1), i + 20]);
}
sheet.getRange(0, 0, rows, 2).setValues(data);
}
このコードでは1000行のデータを高速生成し、一度で書き込みます。これがExcelパフォーマンス改善の基本です。
6. パフォーマンス改善のポイントまとめ
Office Scriptsで大量データ処理をするときは、セル単位で書かないことが重要です。2次元配列にまとめることで、処理時間を短縮できます。
高速化のコツは次の通りです。
・setValueを繰り返さない
・setValuesで一括書き込みする
・先に配列を完成させてからExcelへ渡す
この方法は、Excel自動化、業務効率化、データ分析、帳票出力など、さまざまな場面で活躍します。Office Scriptsの配列処理を理解すれば、大量データでも怖くありません。
まとめ
今回は、Office Scriptsを使ったExcel自動化の中でも特に重要な「2次元配列による大量データの高速書き込み」について学びました。Excel Onlineで業務効率化を進めるうえで、パフォーマンス改善は避けて通れないテーマです。特に大量データ処理を行う場合、セルを1件ずつsetValueで書き込む方法では処理時間が長くなり、実務ではストレスの原因になります。
そこで重要になるのが、TypeScriptで2次元配列を作成し、setValuesメソッドで一括書き込みする方法です。2次元配列は、Excelの表構造と同じ「行と列」を持つデータ形式です。この形式でデータを準備し、最後にまとめてExcelへ渡すことで、通信回数を減らし、処理速度を大幅に向上させることができます。
Office ScriptsによるExcel自動化では、「配列を先に完成させる」という考え方が非常に重要です。これは単なるテクニックではなく、パフォーマンス設計の基本です。大量データを扱う業務システム、売上管理表、顧客リスト、在庫一覧、社員名簿など、あらゆるExcel業務に応用できます。
もう一度、基本となる高速書き込みコードを確認してみましょう。
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
const data = [
["商品", "価格"],
["りんご", 100],
["みかん", 120],
["バナナ", 150]
];
sheet.getRange("A1:B4").setValues(data);
}
このように、2次元配列を用意してsetValuesでまとめて書き込むだけで、Excel自動化の効率は飛躍的に向上します。大量データ高速書き込みの基本は、「まとめて渡す」という発想です。
さらに、実務ではループ処理と組み合わせることで、数百行から数千行のデータ生成も簡単に実現できます。
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
const rows = 500;
const data: (string | number)[][] = [];
for (let i = 0; i < rows; i++) {
data.push(["社員" + (i + 1), 20 + i]);
}
sheet.getRange(0, 0, rows, 2).setValues(data);
}
この考え方を理解すれば、Excelパフォーマンス改善は難しくありません。Office Scriptsでの配列処理、TypeScriptの基本構文、ループ処理、Range指定方法を組み合わせることで、業務効率化は確実に前進します。
Excel自動化を成功させるポイントは、「一つずつ操作しない」「まとめて処理する」「構造を意識する」という三つです。2次元配列はその中心にある重要な技術です。今回学んだ内容は、今後のOffice Scripts活用の土台になります。
生徒
Office Scriptsで大量データを書き込むときは、1件ずつsetValueを使うのではなく、2次元配列を作ってsetValuesでまとめて書き込むのが大事なんですね。
先生
その通りです。Excel自動化では通信回数を減らすことがパフォーマンス改善の鍵になります。2次元配列はそのための基本技術です。
生徒
2次元配列は、Excelの表と同じ形のデータ構造だから、そのまま一括で渡せるんですね。だから高速書き込みができるんですね。
先生
よく理解できていますね。大量データ処理では、まず配列を完成させてからExcelに渡すという流れを意識しましょう。
生徒
ループ処理でデータを作って、最後にsetValuesでまとめて書き込む。この流れを覚えておけば、業務効率化にも応用できそうです。
先生
その通りです。Office ScriptsとTypeScriptの基礎を押さえれば、Excel自動化は怖くありません。今日学んだ2次元配列と大量データ高速書き込みの考え方を、ぜひ実務で活用してください。