Office Scriptsの基本!共通処理を再利用するためのモジュール化でExcel自動化を効率化する方法
生徒
「Office Scriptsで似たような処理を何度も書いているんですが、もっと楽な方法はないですか?」
先生
「ありますよ。同じ処理をまとめて再利用できる“モジュール化”という考え方を使います。」
生徒
「モジュールって難しそうですが、初心者でも大丈夫でしょうか?」
先生
「大丈夫です。Excelでよく使う作業をテンプレート化する感覚で考えると、とてもわかりやすいですよ。」
1. Office Scriptsとは?
Office Scriptsは、Excel Onlineで使えるExcel自動化のための仕組みです。毎日同じ操作を繰り返す作業を、プログラムとして保存し、ボタン一つで実行できます。セルに文字を書く、色を変える、表を整えるなど、人がマウスで行っている操作をコードで再現します。
プログラミング未経験でも、Excelの操作を順番に書くだけで動かせるため、業務効率化や作業時間の短縮にとても役立ちます。
2. 共通処理とは何か
共通処理とは、何度も同じ内容を行う作業のことです。たとえば「見出しを入力する」「完了メッセージを表示する」「セルの色を変える」といった処理は、別のスクリプトでも何度も使います。
これを毎回書き直すと、時間がかかるだけでなく、修正が必要になったときに全部直さなければならなくなります。そこで、同じ処理をまとめて再利用できる形にするのが重要になります。
3. モジュール化をやさしく理解しよう
モジュール化とは、共通処理を「部品」としてまとめる考え方です。料理で例えると、下ごしらえを先に済ませておき、必要なときに使うイメージです。
Office Scriptsでは、複数ファイルを使った本格的なモジュール分割はできませんが、同じスクリプト内で関数として整理することで、十分にモジュール化の考え方を取り入れられます。
4. 共通処理をまとめていないコード例
まずは、共通処理をそのまま何度も書いている例を見てみます。
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
sheet.getRange("A1").setValue("完了");
sheet.getRange("A1").getFormat().getFill().setColor("#CCFFCC");
sheet.getRange("A2").setValue("完了");
sheet.getRange("A2").getFormat().getFill().setColor("#CCFFCC");
}
同じ処理が何度も出てきており、後から見たときに分かりづらくなります。
5. 関数としてまとめたモジュール化の例
次に、共通処理を関数としてまとめた例です。この関数が「モジュールの代わり」になります。
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
setComplete(sheet, "A1");
setComplete(sheet, "A2");
}
function setComplete(sheet: ExcelScript.Worksheet, address: string) {
sheet.getRange(address).setValue("完了");
sheet.getRange(address).getFormat().getFill().setColor("#CCFFCC");
}
処理内容が一か所にまとまり、修正も簡単になります。
6. 別の処理でも再利用できるメリット
モジュール化した関数は、別のセルや別のシートでもそのまま使えます。これはOffice Scriptsのコード管理においてとても大切な考え方です。
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
writeTitle(sheet, "売上表");
}
function writeTitle(sheet: ExcelScript.Worksheet, title: string) {
sheet.getRange("A1").setValue(title);
}
同じ関数を使い回すことで、スクリプト全体が整理されます。
7. 初心者が意識したいモジュール化のコツ
最初から完璧に分ける必要はありません。「同じ処理を2回以上書いたらまとめる」というルールだけで十分です。関数名は、自分が見てすぐ分かる名前を付けましょう。
Office Scriptsでのモジュール化は、難しい技術ではなく、読みやすく、直しやすいコードを書くための工夫です。Excel自動化を続けるほど、その便利さを実感できます。
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
showMessage(sheet, "処理が終了しました");
}
function showMessage(sheet: ExcelScript.Worksheet, text: string) {
sheet.getRange("C1").setValue(text);
}