Office Scriptsの基本!配列・オブジェクト操作でExcel自動化をやさしく理解しよう
生徒
「Office Scriptsでたくさんのデータをまとめて処理したいんですが、どうやって扱えばいいんですか?」
先生
「その場合は、配列やオブジェクトを使うと、Excelのデータを整理しながら自動化できます。」
生徒
「配列とかオブジェクトって、聞いたことはありますが難しそうです……。」
先生
「Excelで表を扱う感覚と同じです。行や列をまとめて考えると、とても分かりやすくなりますよ。」
1. Office Scriptsとは?
Office Scriptsは、Excel Onlineで使えるExcel自動化の仕組みです。 手作業で行っているコピー、集計、入力作業を、TypeScriptというプログラミング言語でまとめて実行できます。
Excelのセルや行、表をまとめて扱う場面では、 配列やオブジェクトという考え方が自然に登場します。
2. 配列とは何かをやさしく理解する
配列とは、「同じ種類のものを順番に並べた箱」です。 Excelで言うと、1行分のデータや、1列分の数値をまとめたイメージです。
例えば、今日の売上金額を横に並べた行は、プログラムでは配列として扱えます。 番号順にデータが入っているのが特徴です。
3. 配列の基本的な書き方
Office Scriptsでは、配列を使って複数の値をまとめて扱えます。 数字や文字を並べるだけで簡単に作れます。
function main(workbook: ExcelScript.Workbook) {
const numbers: number[] = [10, 20, 30];
const sheet = workbook.getActiveWorksheet();
sheet.getRange("A1").setValue(numbers[0]);
}
numbers[0]は、配列の一番最初の値を意味します。 Excelのセル番号のように、順番でデータを取り出せます。
4. 配列はExcelの行・列操作と相性が良い
Excelでは、行や列に同じ種類のデータが並びます。 そのため、配列はExcel自動化ととても相性が良い仕組みです。
セルを1つずつ操作するよりも、配列でまとめて考えることで、 コードが短くなり、読みやすくなります。
5. オブジェクトとは何かをイメージで理解する
オブジェクトは、「名前付きの箱が集まったもの」です。 Excelで言うと、1行の中に「名前」「数量」「金額」といった項目がある状態です。
配列が番号で管理するのに対して、 オブジェクトは「項目名」でデータを管理します。
6. オブジェクトの基本的な書き方
Office Scriptsでは、オブジェクトを使うことで、 データの意味がとても分かりやすくなります。
function main(workbook: ExcelScript.Workbook) {
const item = {
name: "りんご",
price: 120
};
const sheet = workbook.getActiveWorksheet();
sheet.getRange("B1").setValue(item.name);
}
item.nameのように、 名前を指定して値を取り出せるのがオブジェクトの特徴です。
7. 配列とオブジェクトを組み合わせる
実際のExcel自動化では、 「オブジェクトの配列」を使う場面が多くなります。 これは、表データそのものを表現する形です。
function main(workbook: ExcelScript.Workbook) {
const items = [
{ name: "りんご", price: 120 },
{ name: "みかん", price: 80 }
];
const sheet = workbook.getActiveWorksheet();
sheet.getRange("C1").setValue(items[1].name);
}
行ごとのデータを1つのオブジェクトとして扱えるため、 Excelの表構造ととても近い考え方になります。
8. 初心者が配列・オブジェクトを学ぶ意味
配列とオブジェクトは、最初は難しく感じますが、 Excelの「行」「列」「項目」をプログラムで表現するための基本です。
Office ScriptsでのExcel自動化では、 この2つを理解することで、複雑な処理も整理して書けるようになります。 焦らず、Excelの画面を思い浮かべながら覚えるのがコツです。
まとめ
今回の記事では、Excel Onlineの自動化ツールであるOffice Scripts(オフィススクリプト)において、避けては通れない最重要概念である「配列」と「オブジェクト」について詳しく解説してきました。これらは、一見するとプログラミング特有の難しい用語に聞こえるかもしれません。しかし、その実態は私たちが普段Excelのシート上で目にしている「行」や「列」、そして「見出し付きのデータ」そのものをプログラムの世界で表現したものです。
配列とオブジェクトを使いこなすメリット
なぜ配列やオブジェクトを学ぶ必要があるのでしょうか。それは、Excelのセルを一つひとつ「A1セルを書き換える」「B1セルを読み込む」といった個別の操作で処理しようとすると、プログラムが非常に長くなり、実行速度も遅くなってしまうからです。Office Scriptsの真価は、大量のデータを一括でメモリ上に読み込み、プログラム内で高速に加工してから、最後にまとめてシートへ書き戻す手法にあります。この「一括処理」を支える器こそが、配列とオブジェクトなのです。
配列の操作:データの列や行を丸ごと扱う
配列は、同じ性質のデータを一列に並べたものです。例えば、1ヶ月分の売上リストや、社員名の名簿などがこれに該当します。Office Scripts(TypeScript)では、[ ](角括弧)を使ってデータを囲むことで配列を定義します。
function main(workbook: ExcelScript.Workbook) {
// 文字列の配列を作成
const fruits: string[] = ["りんご", "バナナ", "メロン", "ぶどう"];
// 配列の3番目(インデックスは2)を取り出す
const favorite = fruits[2];
// シートのセルに出力
const sheet = workbook.getActiveWorksheet();
sheet.getRange("A1").setValue(favorite);
}
上記のコードでは、「メロン」がA1セルに入力されます。プログラミングの世界では、順番を数える時に「0」から始めるというルール(ゼロベースインデックス)があるため、fruits[2]が3番目の要素を指す点に注目しましょう。
オブジェクトの操作:意味のあるデータの塊を作る
一方で、オブジェクトは「名前」と「値」をペアにして管理する仕組みです。Excelの1行分のレコードを想像してください。「商品名:りんご」「単価:150円」「在庫:10個」といった、項目名(キー)とその中身(値)をセットで扱うのに最適です。
function main(workbook: ExcelScript.Workbook) {
// 商品情報をオブジェクトで定義
const product = {
id: "P001",
name: "高級メロン",
price: 3000
};
// ドット記法で特定の項目を取り出す
const message = product.name + "の価格は" + product.price + "円です。";
const sheet = workbook.getActiveWorksheet();
sheet.getRange("B1").setValue(message);
}
このように、product.nameと書くだけで中身にアクセスできるため、コードを読んだ時に「何のデータを扱っているのか」が一目で分かるようになります。これは、大規模なExcel自動化ツールを開発する際に、ミスを防ぐための非常に重要なテクニックです。
実践的な活用例:VBAとの比較
これまでVBA(Visual Basic for Applications)を使っていた方にとって、Office Scriptsの配列操作は少し独特かもしれません。しかし、モダンなJavaScript/TypeScriptの書き方を採用しているため、データの抽出や並び替えが非常にスマートに行えます。以下のサンプルは、複数のオブジェクトを配列に格納し、条件に合うものだけを処理するイメージです。
function main(workbook: ExcelScript.Workbook) {
// オブジェクトの配列(表データ)
const salesData = [
{ target: "東京支店", amount: 500000 },
{ target: "大阪支店", amount: 350000 },
{ target: "名古屋支店", amount: 420000 }
];
const sheet = workbook.getActiveWorksheet();
// ループ処理で配列の中身をセルに書き出す例
salesData.forEach((data, index) => {
sheet.getRange(index + 1, 0).setValue(data.target); // A列に支店名
sheet.getRange(index + 1, 1).setValue(data.amount); // B列に売上額
});
}
このように、Office Scriptsを学ぶことは、最新のWeb標準技術に触れることでもあります。Excel Onlineというブラウザ環境で動作するため、場所を選ばず、共同編集時にも威力を発揮します。まずは小さな配列操作から始めて、徐々に複雑なオブジェクト構造に慣れていきましょう。それが、効率的なExcel業務自動化への最短ルートとなります。
生徒
「先生、まとめありがとうございました!配列とオブジェクト、なんとなくイメージが掴めてきました。配列は『列』、オブジェクトは『1行分の名札付きデータ』って考えると分かりやすいですね。」
先生
「その通りです。素晴らしい理解ですね。Excelのシートを眺める時に、『ここは配列にできそうだな』とか『この表の1行はオブジェクトにまとめられるな』と意識するだけで、プログラミング的な思考が身につきますよ。」
生徒
「でも、配列の番号が『0』から始まるのは、ついつい間違えてしまいそうです。1番目が0番目になるんですよね?」
先生
「そうですね、そこは初心者の方が一番最初につまずくポイントです。でも大丈夫。Office Scriptsを書いていくうちに、自然と手が覚えていきます。最初はエラーが出ても、デバッグしながら修正していけば良いんです。」
生徒
「オブジェクトの『ドット記法』も便利ですね。item.priceみたいに書くと、中身が何なのか分かりやすくて、後から読み返した時に混乱しなさそうです。」
先生
「まさにそこがオブジェクトの利点です。VBAを使っていた頃よりも、より人間にとって分かりやすい言葉でコードが書けるようになるのがOffice Scriptsの魅力の一つですね。次は、この配列を使ってフィルタリング(抽出)したり、計算したりする方法にも挑戦してみましょう!」
生徒
「はい!どんどん自動化できる範囲を広げていきたいです。明日から職場のExcel作業を少しずつスクリプトに置き換えてみますね!」