カテゴリ: Office Scripts 更新日: 2026/03/26

Office Scriptsの基本!Excel自動化で学ぶ関数の分割と再利用で読みやすさを向上させる方法

関数の分割・再利用で読みやすさ向上
関数の分割・再利用で読みやすさ向上

先生と生徒の会話形式で理解しよう

生徒

「Office ScriptsでExcel自動化のコードを書いてみたんですが、だんだん長くなって読みにくくなってきました…」

先生

「それは関数を分割していないのが原因かもしれません。処理ごとに関数を分けると、とても読みやすくなりますよ。」

生徒

「関数を分けるって、同じコードを何度も書かなくてよくなるってことですか?」

先生

「その通りです。今日は、Office Scriptsでの関数の分割と再利用を、初心者向けにやさしく説明します。」

1. Office Scriptsとは?

1. Office Scriptsとは?
1. Office Scriptsとは?

Office Scriptsは、Excel Onlineで使える自動化スクリプト機能です。Excelの「自動化」タブからスクリプトを実行でき、セルの値変更、計算、シート操作などをコードでまとめて実行できます。プログラミング未経験の方でも、Excelの操作をそのままコードに置き換える感覚で学べるのが特徴です。

Office ScriptsではTypeScriptという言語を使いますが、難しい理論よりも「読みやすさ」「分かりやすさ」がとても大切になります。

2. 関数とは何かをやさしく説明

2. 関数とは何かをやさしく説明
2. 関数とは何かをやさしく説明

関数とは、「決まった作業をひとまとめにしたもの」です。たとえば料理で言うと、「ご飯を炊く」「野菜を切る」といった作業を、それぞれ役割ごとに分けるイメージです。

プログラムでも同じで、Excelに文字を書く処理、数値を計算する処理などを関数として分けておくと、全体の流れがとても見やすくなります。

3. 関数を分割しないコードの例

3. 関数を分割しないコードの例
3. 関数を分割しないコードの例

まずは、関数を分けずにすべてをmain関数の中に書いた例を見てみましょう。一見シンプルですが、処理が増えると読みにくくなります。


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(80);
}

このコードは短いですが、処理が増えていくと「どこで何をしているのか」が分かりにくくなります。

4. 関数を分割して読みやすくする

4. 関数を分割して読みやすくする
4. 関数を分割して読みやすくする

次に、処理ごとに関数を分割した例を見てみましょう。ここでは「見出しを書く処理」と「データを書く処理」を分けています。


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(80);
}

関数名を見るだけで、何をしているコードなのかが分かります。これが関数分割の大きなメリットです。

5. 関数を再利用できるメリット

5. 関数を再利用できるメリット
5. 関数を再利用できるメリット

関数を分けておくと、同じ処理を何度も使い回せます。たとえば、別のシートでも同じ見出しを書きたい場合、同じ関数を呼ぶだけで済みます。

これは「コピー&ペーストを減らす」という意味でも重要です。同じコードを何か所にも書くと、修正が必要になったときに大変になります。

6. 再利用を意識した別パターンの例

6. 再利用を意識した別パターンの例
6. 再利用を意識した別パターンの例

次は、セルにメッセージを書く処理を関数にした例です。引数という仕組みを使って、内容を自由に変えられます。


function main(workbook: ExcelScript.Workbook) {
  const sheet = workbook.getActiveWorksheet();
  writeMessage(sheet, "A1", "処理開始");
  writeMessage(sheet, "A2", "処理完了");
}

function writeMessage(
  sheet: ExcelScript.Worksheet,
  address: string,
  message: string
) {
  sheet.getRange(address).setValue(message);
}

このように関数を作っておくと、Excel自動化の幅が広がります。

7. 初心者が関数分割で意識するポイント

7. 初心者が関数分割で意識するポイント
7. 初心者が関数分割で意識するポイント

初心者の方は、「長くなってきたら関数に分ける」という意識を持つだけで十分です。最初から完璧に分ける必要はありません。

Office Scriptsでは、「main関数は全体の流れを書く場所」「細かい処理は関数に任せる」と考えると、コードが自然と整理されていきます。

8. 関数の分割と再利用はExcel自動化の基本

8. 関数の分割と再利用はExcel自動化の基本
8. 関数の分割と再利用はExcel自動化の基本

関数の分割と再利用は、Office ScriptsでExcel自動化を続けていくうえで欠かせない考え方です。コードが読みやすくなり、ミスも減り、後から見返したときにも安心できます。

難しいテクニックではなく、「作業を役割ごとに分ける」というシンプルな発想です。まずは小さな関数から始めて、少しずつ慣れていきましょう。

まとめ

まとめ
まとめ

Office Scriptsを使ったExcel自動化において、関数の分割と再利用は非常に重要な考え方です。最初は一つの関数の中にすべての処理を書いてしまいがちですが、処理が増えてくるとコードはどんどん長くなり、どこで何をしているのか分かりにくくなってしまいます。このような状態では、修正や追加作業が発生したときに時間がかかるだけでなく、ミスの原因にもなります。

そこで役立つのが、関数を役割ごとに分けるという考え方です。たとえば、見出しを書く処理、データを入力する処理、メッセージを表示する処理など、それぞれの目的ごとに関数を作ることで、コード全体の見通しが一気によくなります。関数名を見ただけで処理の内容が分かるようになるため、読みやすさが大きく向上します。

また、関数を分割することで再利用が可能になります。同じ処理を複数の場所で使いたい場合でも、一度作った関数を呼び出すだけで対応できるため、無駄な重複を減らすことができます。これはコードの保守性を高めるうえでも非常に重要です。もし仕様変更があった場合でも、関数の中身を一か所修正するだけで、すべての呼び出し箇所に反映されるため、効率的に対応できます。

特にOffice Scriptsでは、Excelの操作をそのままコードにするケースが多いため、処理が増えるほど関数分割の重要性が増していきます。main関数には全体の流れだけを書き、細かい処理は別の関数に任せるというスタイルを意識することで、自然と整理されたコードになります。

初心者の方は「コードが長くなってきたら分ける」というシンプルなルールを意識するだけで十分です。最初から完璧に設計しようとする必要はありません。少しずつ関数に分けていくことで、読みやすく扱いやすいコードへと成長していきます。

サンプルプログラム(関数分割と再利用)


function main(workbook: ExcelScript.Workbook) {
  const sheet = workbook.getActiveWorksheet();

  initializeSheet(sheet);
  writeHeader(sheet);
  writeScore(sheet, "田中", 80);
  writeScore(sheet, "佐藤", 90);
}

function initializeSheet(sheet: ExcelScript.Worksheet) {
  sheet.getRange("A1:B10").clear();
}

function writeHeader(sheet: ExcelScript.Worksheet) {
  sheet.getRange("A1").setValue("名前");
  sheet.getRange("B1").setValue("点数");
}

function writeScore(
  sheet: ExcelScript.Worksheet,
  name: string,
  score: number
) {
  const lastRow = sheet.getUsedRange()?.getRowCount() || 1;
  sheet.getRange("A" + (lastRow + 1)).setValue(name);
  sheet.getRange("B" + (lastRow + 1)).setValue(score);
}

このように関数を分割することで、それぞれの役割が明確になり、コードの読みやすさと再利用性が大きく向上します。実務でもこのような構造で書くことが多いため、早い段階で慣れておくことが大切です。

先生と生徒の振り返り会話

生徒

「今回の内容で、コードが長くなる理由がよく分かりました。一つの場所に全部書くと見にくくなるんですね。」

先生

「その通りです。特にExcel自動化では処理が増えやすいので、関数分割はとても重要です。」

生徒

「関数に分けることで、どんな処理をしているのかが名前だけで分かるのが便利だと思いました。」

先生

「それが読みやすさにつながります。チーム開発でも非常に重要なポイントです。」

生徒

「あと、同じ処理を何度も書かなくていいのも助かりますね。」

先生

「はい。再利用できるというのは大きなメリットです。修正も一か所で済みます。」

生徒

「これからは、コードが長くなってきたら関数に分けるように意識してみます。」

先生

「それで十分です。少しずつ慣れていけば、自然ときれいなコードが書けるようになりますよ。」

カテゴリの一覧へ
新着記事
New1
Office Scripts
Office Scriptsの基本!企業環境で安全にExcel自動化を使うための利用制限と管理者設定
New2
Office Scripts
Office Scriptsの基本!TypeScriptの型注釈を理解してExcel自動化を安全に書く方法
New3
Office Scripts
Office Scriptsの基本!Excel自動化で使うgetValues・setValues完全ガイド【初心者向け】
New4
Office Scripts
Office Scriptsの基本!エラー表示とログ確認でExcel自動化を安全に進める方法
人気記事
No.1
Java&Spring記事人気No1
Excel VBA
Excel VBAモジュール共有術!複数のブックでマクロを使い回す最適構成
No.2
Java&Spring記事人気No2
Excel VBA
Excel VBAのプロジェクト構成とモジュール管理!標準・シート・ThisWorkbookの違い
No.3
Java&Spring記事人気No3
Excel VBA
個人用マクロブック(PERSONAL.XLSB)で作る最強の共通ライブラリ化ガイド
No.4
Java&Spring記事人気No4
Excel VBA
VBAモジュールを安全にエクスポート・インポートする方法と注意点
No.5
Java&Spring記事人気No5
Excel VBA
ThisWorkbookに書くべき処理とは?VBAプロジェクトの正しい構成方法
No.6
Java&Spring記事人気No6
Excel VBA
Excel VBAのループ処理を徹底解説!For文とDo Loopで繰り返しを自動化
No.7
Java&Spring記事人気No7
Excel VBA
Excel VBAのブレークポイント設定と使い方!初心者でも理解できるデバッグの基本
No.8
Java&Spring記事人気No8
Office Scripts
Office Scriptsの基本!関数分割で読みやすいExcel自動化コードを設計する方法