Office ScriptsでCSVを2次元配列に変換!Excel自動化で使えるCSVパース入門
生徒
「Office ScriptsでCSVファイルを読み込んで、Excelで使える形にしたいです。CSVを2次元配列に変換するってどういう意味ですか?」
先生
「CSVはカンマで区切られたテキストデータです。それをExcelで扱いやすい『行と列の形』、つまり2次元配列に変換するのがポイントです。」
生徒
「2次元配列って難しそうです……。」
先生
「ノートのマス目を思い浮かべてください。横が列、縦が行です。そのマス目の形にデータを並べることを2次元配列と言います。Office Scriptsなら簡単に実現できますよ。」
1. Office Scriptsとは?
Office Scriptsは、Excel Onlineで使える自動化機能です。ブラウザ上のExcelで「自動化」タブからスクリプトを作成し、繰り返し作業やデータ処理を自動化できます。使用する言語はTypeScriptで、Excelのセル操作、データ変換、CSV読み込み処理などが可能です。
特にCSVの読み込みやデータ整形は、業務効率化やデータ分析の現場でよく使われます。CSVを2次元配列に変換できると、ExcelのsetValuesメソッドを使って一括でセルに書き込めるため、大量データ処理にも便利です。
2. CSVとは?初心者向けやさしい解説
CSVとは「カンマ区切りのテキストファイル」です。たとえば次のような内容です。
名前,年齢,住所
田中,30,東京
佐藤,25,大阪
このように、カンマで区切られたデータが1行ずつ並んでいます。改行ごとに行が変わります。Excelで開くと表のように見えますが、実際はただのテキストです。
Office ScriptsでCSVパースを行うとは、このテキストを分解して「行」と「列」に分けることです。これが2次元配列への変換です。
3. CSVを2次元配列に変換する基本スクリプト
まずは一番シンプルなCSVパースの例です。文字列としてCSVを用意し、改行とカンマで分割します。
function main(workbook: ExcelScript.Workbook) {
const csvText = "名前,年齢,住所\n田中,30,東京\n佐藤,25,大阪";
const rows = csvText.split("\n");
const result: string[][] = rows.map(row => row.split(","));
const sheet = workbook.getActiveWorksheet();
sheet.getRange("A1").getResizedRange(result.length - 1, result[0].length - 1).setValues(result);
}
ここで使っているsplitは「区切る」という意味です。改行でまず行ごとに分け、次にカンマで列ごとに分けています。こうして2次元配列が完成します。
4. TSVにも対応する応用パターン
TSVはタブ区切りのテキストです。区切り文字が違うだけなので、少し変更すれば対応できます。
function main(workbook: ExcelScript.Workbook) {
const tsvText = "商品\t価格\t在庫\nりんご\t100\t20\nみかん\t80\t15";
const rows = tsvText.split("\n");
const result: string[][] = rows.map(row => row.split("\t"));
const sheet = workbook.getActiveWorksheet();
sheet.getRange("A1").getResizedRange(result.length - 1, result[0].length - 1).setValues(result);
}
CSVとTSVの違いは区切り文字だけです。データ変換やファイル形式変換の基本を理解しておくと、Excel自動化の幅が広がります。
5. 空白行を除外するCSVパース
実務では空白行が含まれることがあります。filterを使うと不要な行を削除できます。
function main(workbook: ExcelScript.Workbook) {
const csvText = "名前,年齢\n田中,30\n\n佐藤,25";
const rows = csvText.split("\n").filter(row => row.trim() !== "");
const result: string[][] = rows.map(row => row.split(","));
workbook.getActiveWorksheet()
.getRange("A1")
.getResizedRange(result.length - 1, result[0].length - 1)
.setValues(result);
}
trimは前後の空白を取り除く機能です。データクリーニングの基本テクニックとして覚えておきましょう。
6. 数値データに変換する方法
CSVはすべて文字列として扱われます。数値計算をする場合はnumber型に変換すると便利です。
function main(workbook: ExcelScript.Workbook) {
const csvText = "商品,価格\nりんご,100\nみかん,80";
const rows = csvText.split("\n");
const result = rows.map((row, index) => {
const cols = row.split(",");
if (index > 0) {
cols[1] = Number(cols[1]).toString();
}
return cols;
});
workbook.getActiveWorksheet()
.getRange("A1")
.getResizedRange(result.length - 1, result[0].length - 1)
.setValues(result);
}
Numberは文字列を数値に変換する機能です。CSVデータ分析や売上集計などを行う場合に役立ちます。
7. 2次元配列とExcel自動化の関係
2次元配列はExcelの表と同じ構造です。Office ScriptsのsetValuesは2次元配列をそのままセル範囲に書き込みます。つまりCSVパースができれば、大量データの自動入力、データ移行、システム連携も可能になります。
Excel自動化、CSV読み込み、データ変換、業務効率化、データ処理スクリプトといったキーワードは、現代のデータ活用で重要です。Office Scriptsを使えば、マクロよりも安全でクラウド対応の自動化が実現できます。
まずはシンプルなCSVパースから始めて、少しずつ改良していきましょう。コードは短くても強力です。自分の手でデータを扱えるようになると、Excel作業が一気に楽になります。
まとめ
今回は、Office Scriptsを使ってCSVを2次元配列に変換する方法について、基礎から丁寧に確認してきました。CSVとはカンマ区切りのテキストデータであり、そのままでは単なる文字列ですが、改行で行に分割し、さらにカンマで列に分割することで、Excelの表構造と同じ2次元配列へと変換できることを学びました。
Office ScriptsでのCSVパースは、splitによる文字列分割が基本です。改行コードで行単位に分け、各行をさらに区切り文字で分解することで、行と列を持つ配列が完成します。この2次元配列をsetValuesメソッドに渡すことで、Excelのセル範囲へ一括書き込みが可能になります。これがExcel自動化における重要なテクニックです。
また、TSVのようなタブ区切りデータにも応用できる点も押さえました。区切り文字を変更するだけで、さまざまなテキストデータ形式に対応できます。さらに、空白行の除外やtrimによる前後空白削除、Numberを使った数値変換など、実務で役立つデータ整形の基本テクニックも理解しました。
CSV読み込み、CSVパース、2次元配列変換、Excel自動化、データ変換、データ整形、業務効率化といった一連の流れは、日常業務の中で非常に重要です。特に大量データ処理や売上集計、顧客データ管理などの場面では、手作業ではなくスクリプトによる自動処理が大きな差を生みます。
Office Scriptsはブラウザ版Excelで動作するため、従来のマクロとは異なり、クラウド環境でも安全に実行できます。これからExcel自動化を学ぶ方にとって、CSVを2次元配列へ変換するスキルは最初の大切な一歩です。文字列操作、配列処理、セル書き込みという基本を確実に理解することで、より高度なデータ分析や自動化処理へと発展させることができます。
サンプルプログラムの振り返り
最後に、CSVを2次元配列へ変換し、空白行を除外してExcelに出力するサンプルをもう一度整理してみましょう。
function main(workbook: ExcelScript.Workbook) {
const csvText = "名前,年齢,部署\n田中,30,営業\n\n佐藤,25,開発";
const rows = csvText
.split("\n")
.filter(row => row.trim() !== "");
const result: string[][] = rows.map(row => row.split(","));
const sheet = workbook.getActiveWorksheet();
sheet.getRange("A1")
.getResizedRange(result.length - 1, result[0].length - 1)
.setValues(result);
}
このように、CSV文字列を行ごとに分割し、不要な空白行を除外し、さらにカンマ区切りで列配列へ変換することで、Excelへそのまま書き込める形式になります。処理の流れを一つ一つ理解することが、Office Scripts習得の近道です。
生徒
「CSVを2次元配列に変換する意味がよく分かりました。改行で行を作って、カンマで列を作るんですね。splitの使い方がポイントだと理解できました。」
先生
「その通りです。CSVパースの基本は文字列分割です。Office Scriptsではその結果を2次元配列として扱い、setValuesでExcelに一括出力します。これがExcel自動化の土台になります。」
生徒
「空白行を除外するfilterや、trimで空白を取り除く処理も実務では重要ですね。データ整形の基礎が分かりました。」
先生
「はい。CSV読み込みとデータ変換は業務効率化の第一歩です。数値変換やエラー対策を組み合わせれば、売上集計や在庫管理などにも応用できます。まずは2次元配列の構造をしっかり理解することが大切です。」
生徒
「これからはExcel作業を手作業ではなく、Office Scriptsで自動化できるように練習していきます。CSV変換と配列操作をもっと深く学びたいです。」
先生
「とても良い姿勢です。CSVから2次元配列への変換、Excelへの一括書き込み、データ処理の流れを繰り返し実践すれば、確実にスキルが身に付きます。自動化の力で日々の業務をより効率的にしていきましょう。」