Office Scriptsの基本!Excel自動化で使うgetValues・setValues完全ガイド【初心者向け】
生徒
「Office ScriptsでExcelの値を自動で読み取ったり、まとめて入力したりできますか?」
先生
「できますよ。getValuesとsetValuesという命令を使えば、Excelのセルの値を取得したり設定したりできます。」
生徒
「セルを一つずつ操作するんですか?」
先生
「一つでもできますし、まとめて一気に操作もできます。Excel自動化の基本なので、順番に見ていきましょう。」
1. Office Scriptsとは?
Office Scriptsとは、Excel Onlineで使えるExcel自動化機能です。ブラウザ版のExcelで「自動化」タブからスクリプトを作成し、繰り返し作業を自動実行できます。プログラミング言語はTypeScriptを使いますが、難しく考える必要はありません。Excelの操作を文字で書いているだけです。
たとえば、毎日同じ場所に売上を入力する、データをまとめて集計する、特定のセルを更新する、といった作業を自動化できます。今回解説するgetValuesとsetValuesは、Excelの値の取得と設定を行う最重要命令です。
2. ExcelのセルとRangeの考え方
Office Scriptsでは、セルのかたまりをRangeと呼びます。Rangeとは、ExcelのA1やA1:B3のような範囲のことです。
たとえばA1は一つのセル、A1:B2は四つのセルの集まりです。このRangeから値を取り出すときにgetValuesを使い、値を書き込むときにsetValuesを使います。
イメージとしては、Excelの表を箱だと考えてください。getValuesは箱の中身を見る命令、setValuesは箱の中に物を入れる命令です。
3. setValuesで値を設定する基本
まずはExcelに値を入力する方法です。setValuesは複数セルにまとめて値を設定できます。二重の角かっこで囲むのが特徴です。これは二次元配列と呼ばれる形で、行と列を表しています。
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
const range = sheet.getRange("A1:B2");
range.setValues([
["商品", "価格"],
["りんご", 100]
]);
}
このコードを実行すると、A1からB2に表が作られます。二重の角かっこは、行ごとのまとまりを意味します。Excel自動化では、この形を覚えることが重要です。
4. getValuesで値を取得する方法
次に、Excelの値を読み取る方法です。getValuesはRangeの中身を取得します。取得した値は変数に入れて使います。
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
const range = sheet.getRange("A1:B2");
const values = range.getValues();
console.log(values);
}
console.logは、値を確認するための命令です。ログとは記録という意味です。実行すると次のような結果になります。
[["商品","価格"],["りんご",100]]
このように、二次元配列の形で取得されます。Excelの表がそのまま配列になったと考えると理解しやすいです。
5. 取得した値を使って別のセルへ設定する
Office Scriptsでは、取得した値をそのまま別の場所へコピーできます。これにより、データの移動やバックアップが簡単にできます。
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
const source = sheet.getRange("A1:B2");
const target = sheet.getRange("D1:E2");
const values = source.getValues();
target.setValues(values);
}
このコードはA1:B2の内容をD1:E2にコピーします。Excel操作を自動化する際によく使われるパターンです。毎日の報告書作成やデータ整理に役立ちます。
6. 一つのセルだけ操作する方法
一つのセルだけを扱う場合もあります。その場合でもgetValuesとsetValuesは使えますが、単一セル専用のgetValueとsetValueもあります。ここでは基本に合わせてgetValuesを使います。
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
const cell = sheet.getRange("A1");
cell.setValues([["こんにちは"]]);
const value = cell.getValues();
console.log(value);
}
一つのセルでも二重の角かっこになる点がポイントです。Excel自動化で混乱しやすい部分なので注意してください。
7. 数値をまとめて変更する応用例
取得した数値を計算してから再設定することも可能です。たとえば、価格を一律で二倍にする処理です。
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
const range = sheet.getRange("A1:A3");
const values = range.getValues();
for (let i = 0; i < values.length; i++) {
values[i][0] = values[i][0] * 2;
}
range.setValues(values);
}
for文は繰り返し処理をする命令です。配列の中身を順番に取り出し、計算してから再設定しています。Excelマクロに似ていますが、より分かりやすい形で書けるのがOffice Scriptsの特徴です。
8. getValuesとsetValuesを使うメリット
Office Scriptsで値の取得と設定を覚えると、データ入力の自動化、集計の効率化、報告書の自動生成などが可能になります。Excel作業の時間短縮につながり、業務効率化や作業ミスの防止にも役立ちます。
特に大量データを扱う場合、まとめて取得し、まとめて設定する方法はとても重要です。Excel自動化を本格的に行うなら、getValuesとsetValuesは必須の基礎知識です。
まとめ
今回はOffice Scriptsを使ったExcel自動化の基本として、getValuesとsetValuesの使い方を中心に解説しました。Excel Onlineで動作するOffice Scriptsは、繰り返し行うデータ入力や集計作業を自動化できる非常に便利な機能です。特にRangeというセルの範囲を理解し、その範囲から値を取得するgetValues、そして値をまとめて設定するsetValuesを正しく使えるようになることが、Excel自動化の第一歩になります。
setValuesでは二次元配列という形で値を渡す必要があり、行と列の構造を意識することが重要でした。Excelの表は見た目ではただのマス目ですが、Office Scriptsでは配列として扱われます。この考え方を理解すると、複数セルへの一括入力や、表データのコピー、バックアップ、さらには数値の一括変換なども簡単に実装できます。
また、getValuesで取得したデータは、そのまま別のRangeにsetValuesで設定できるため、データ移動や転記作業の自動化にも活用できます。日々の売上集計、在庫管理、報告書作成など、Excel業務の効率化に直結する知識です。さらにfor文などの繰り返し処理と組み合わせることで、数値の一括変更や条件に応じた処理も実現できます。
Office ScriptsはTypeScriptで記述しますが、基本構造はとてもシンプルです。workbookからWorksheetを取得し、Rangeを指定し、getValuesやsetValuesで値を操作する。この流れを覚えるだけでも、Excel自動化の幅は大きく広がります。初心者の方はまず、小さな表を対象に値の取得と設定を繰り返し練習することで、配列の扱いに慣れていきましょう。
Excelマクロに慣れている方にとっても、Office Scriptsはブラウザ上で動作するという点で大きなメリットがあります。インストール不要で、クラウド環境でも実行できるため、チームでの共有や業務標準化にも向いています。getValuesとsetValuesを理解することは、Excel自動化、業務効率化、作業時間短縮のための基礎力を身につけることにつながります。
総合サンプルプログラム
最後に、値の取得、計算、再設定までをまとめて行うサンプルを確認しましょう。Excel自動化の流れを一つのスクリプトで理解できます。
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
const inputRange = sheet.getRange("A1:A3");
const outputRange = sheet.getRange("B1:B3");
const values = inputRange.getValues();
for (let i = 0; i < values.length; i++) {
values[i][0] = values[i][0] * 1.1;
}
outputRange.setValues(values);
}
このスクリプトでは、A1からA3の数値を取得し、百分率を加算した結果をB列に出力しています。getValuesで取得した二次元配列を加工し、そのままsetValuesで設定するという基本パターンです。この流れをしっかり理解することが、Office ScriptsによるExcel自動化の核心です。
生徒
「Office ScriptsでExcel自動化をするには、まずRangeの考え方を理解することが大切なんですね。」
先生
「その通りです。Rangeはセルのかたまりです。そしてgetValuesで値を取得し、setValuesで値を設定する。この流れが基本です。」
生徒
「二次元配列で扱うのが最初は難しそうでしたが、Excelの表がそのまま配列になると考えれば分かりやすいですね。」
先生
「はい。配列の行と列を意識できれば、データの一括入力や一括計算も簡単にできます。これがExcel自動化の強みです。」
生徒
「取得した値をそのまま別の場所に設定できるのも便利ですね。報告書作成やデータ転記が楽になりそうです。」
先生
「まさにそこが重要です。Office ScriptsのgetValuesとsetValuesを使いこなせば、Excel業務の効率化や作業時間短縮が実現できます。まずは小さな自動化から始めて、徐々に応用へ広げていきましょう。」