Office Scriptsの基本!関数分割で読みやすいExcel自動化コードを設計する方法
生徒
「Office Scriptsでコードを書いてみたんですが、長くなってきて自分でも何をしているのかわからなくなりました……」
先生
「それはよくある悩みですね。そんなときに役立つのが、関数分割という考え方です。」
生徒
「関数分割って、プログラミング初心者でもできますか?」
先生
「もちろんです。Excel作業を小さな作業に分ける感覚と同じなので、順番に理解すれば大丈夫ですよ。」
1. Office Scriptsとは?
Office Scriptsは、Excel Onlineで使える自動化の仕組みです。マウスで何度も同じ操作をしなくても、あらかじめ書いたコードを実行するだけで、Excelの作業を一瞬で終わらせることができます。セルに文字を書く、表を整える、計算をするなど、普段人が行っている操作をプログラムに任せるのが特徴です。
Office ScriptsではTypeScriptという言語を使いますが、難しい計算や専門知識がなくても、Excelの操作をそのまま文章にしたような感覚で書けるため、プログラミング初心者にも向いています。
2. なぜ関数分割が必要なのか
コードを一つの場所に全部書いてしまうと、後から見たときに「何をしているコードなのか」が分かりにくくなります。これは、説明書が一行でぎっしり書かれているような状態と同じです。
関数分割とは、作業ごとにコードを分ける考え方です。たとえば「文字を書く作業」「色を変える作業」「計算する作業」をそれぞれ別の関数にします。こうすると、どこで何をしているのかが一目で分かり、ミスも減らせます。
3. 関数とは何かをやさしく理解しよう
関数とは「決まった作業をまとめたもの」です。料理で例えると、「ご飯を炊く」「野菜を切る」といった作業を一つずつ分けて考えるイメージです。Office Scriptsでも同じで、Excelに文字を書く処理だけを一つの関数にまとめられます。
関数に名前をつけておくと、「この関数は何をするのか」が名前を見るだけで分かるようになります。これが読みやすいコード設計の第一歩です。
4. 関数を使わない場合のコード例
まずは、関数を分けずに全部まとめて書いた例を見てみましょう。初心者の方が最初に書きがちな形です。
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
sheet.getRange("A1").setValue("商品名");
sheet.getRange("B1").setValue("価格");
sheet.getRange("A2").setValue("りんご");
sheet.getRange("B2").setValue(100);
}
このコードでも動きますが、行が増えると「何の処理なのか」を毎回読み直す必要があります。
5. 関数分割した読みやすいコード例
次に、同じ内容を関数分割して書いてみます。処理の意味が分かりやすくなります。
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
writeHeader(sheet);
writeData(sheet);
}
function writeHeader(sheet: ExcelScript.Worksheet) {
sheet.getRange("A1").setValue("商品名");
sheet.getRange("B1").setValue("価格");
}
function writeData(sheet: ExcelScript.Worksheet) {
sheet.getRange("A2").setValue("りんご");
sheet.getRange("B2").setValue(100);
}
「見出しを書く」「データを書く」と分かれているので、コードの意味がすぐ理解できます。
6. 処理ごとに関数を分ける考え方
関数分割をするときは、「人が説明するときに区切る場所」を意識します。たとえば「最初に準備する」「次に入力する」「最後に整える」といった流れです。
Office Scriptsでは、セル操作、書式設定、計算処理などを分けると、初心者でも安心してコードを読めるようになります。
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
setTitle(sheet);
setColor(sheet);
}
function setTitle(sheet: ExcelScript.Worksheet) {
sheet.getRange("A1").setValue("売上表");
}
function setColor(sheet: ExcelScript.Worksheet) {
sheet.getRange("A1").getFormat().getFill().setColor("#FFFFCC");
}
7. 関数分割でミスを減らすメリット
関数ごとに分けておくと、間違いが起きたときに直す場所がすぐ分かります。一つの大きなコードだと、どこを直せばいいのか探すだけで疲れてしまいます。
また、同じ処理を何度も使い回せるのも大きなメリットです。これはOffice Scriptsのコード管理でも重要な考え方です。
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
writeMessage(sheet, "完了しました");
}
function writeMessage(sheet: ExcelScript.Worksheet, message: string) {
sheet.getRange("C1").setValue(message);
}
8. 初心者でも続けやすいコード設計のコツ
関数名は日本語の意味が分かる英単語を使い、短くシンプルにします。完璧な英語でなくても問題ありません。大切なのは、自分が後から見て理解できることです。
Office Scriptsでの関数分割は、Excel自動化を長く続けるための大切な基礎です。最初は少し手間に感じても、慣れてくると自然に書けるようになります。