【OfficeScripts】セルの基本操作〜値の取得・代入・フォーマット変更〜

こんにちは、ほしです。
本日も、記事を読んでいただきありがとうございます。
こんにちは、今回はOfficeScriptでセルを操作する方法について紹介していきます。
本記事で学べることは以下のような内容になります。
- セルの値を操作する
- セルの書式設定
- セル範囲の操作
- 実践に使えるセル操作のサンプルコード
セルの値を操作するといっても、セルの値を取り出したり設定する機能を紹介します。
セルの値を取得する
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
// セルA1の値を取得
const value = sheet.getRange("A1").getValue();
console.log(value);
// 複数セルの値を一度に取得
const values = sheet.getRange("A1:B5").getValues();
console.log(values);
}
- getValue()とgetValues()の違い
-
比較項目 getValue() getValues() 基本機能 単一のセルから値を取得 セル範囲(複数セル)から値を取得 対象範囲 単一セルのみ 複数セルの範囲(例: “A1″) 戻り値の型 プリミティブ型( string
,number
,boolean
など)2次元配列 any[][]
戻り値の例 "テキスト"
や42
など単一の値[["A1の値", "B1の値"], ["A2の値", "B2の値"]]
など2次元配列後処理 そのまま利用可能 配列を操作するためにループが必要 使用ケース 特定の1セルの値だけが必要な場合 複数セルのデータを処理する場合 値の設定対応 setValue() setValues()
セルに値を設定する
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
// 単一セルに値を設定
sheet.getRange("A1").setValue(100);
// 複数のセルに同じ値を設定
sheet.getRange("A2:A5").setValue("同じ値");
// 複数のセルに異なる値を設定
const values = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
];
sheet.getRange("C1:E3").setValues(values);
}
- setValue()とsetValues()の違い
-
比較項目 getValue() getValues() 基本機能 単一のセルから値を取得 セル範囲(複数セル)から値を取得 対象範囲 単一セルのみ 複数セルの範囲(例: “A1″) 戻り値の型 プリミティブ型( string
,number
,boolean
など)2次元配列 any[][]
戻り値の例 "テキスト"
や42
など単一の値[["A1の値", "B1の値"], ["A2の値", "B2の値"]]
など2次元配列後処理 そのまま利用可能 配列を操作するためにループが必要 使用ケース 特定の1セルの値だけが必要な場合 複数セルのデータを処理する場合 値の設定対応 setValue() setValues()
もっと詳しく知りたいという方は、こちらの記事を参考にしてください

セルの書式設定では、セルのフォントや背景色を設定することができます。
これを使えば、セルの値に応じて、書式を変更することなどができるようになります。
フォントの設定
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
const range = sheet.getRange("A1:B5");
// フォントサイズを変更
range.getFormat().getFont().setSize(14);
// フォントを太字に
range.getFormat().getFont().setBold(true);
// フォントの色を変更
range.getFormat().getFont().setColor("#FF0000");
}
フォントの色を変更する際にカラーコードを設定する必要があります。
今回は「#FF0000」で赤色を設定しています。
以下を参考にするとよいと思います。
https://www.colordic.org/#google_vignette
背景色の設定
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
// セルの背景色を設定
sheet.getRange("A1:A5").getFormat().getFill().setColor("#FFFF00");
}
さらにセルのフォントの操作や背景の操作についてさらに詳しく知りたいという方は、こちらの記事を参照ください。

セルを操作する際には、単一のセルを操作する場合だけでなく複数セルを操作することも多いと思います。
複数のセルを効率的に操作する方法を解説します。
セル範囲の選択方法
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
// 特定のセル範囲を選択
const range1 = sheet.getRange("A1:C5");
// 使用されているセル範囲を選択
const usedRange = sheet.getUsedRange(false);
}
・getRangeについて
引数には範囲のアドレスまたは名前を表す文字列。 たとえば、”A1:B2″ です。 指定されていない場合は、ワークシート全体の範囲が返されます。
R1C1形式での記載も可能ですが」、一般的ではないので
A1形式の「”A1:B2″」が良いでしょう。
引数 | address (”A1:B2″ など) |
戻り値 | Rangeオブジェクト |
・getUsedRangeについて
指定した範囲オブジェクトのうち使用されている範囲を返します。
使用されているセルがない場合、このメソッドは undefined
を返します。
値の設定されているセルのみを取得したい場合は、引数にtrueを設定してください。
引数 | boolean(true,false) |
戻り値 | Rangeオブジェクト |
OfficeScriptsで最終行や最終列を選択する方法は以下の記事で紹介しています。

まだ読んだことない方は、是非参考にしてください。
セル範囲の操作
選択したセルの範囲に値を設定したり、削除したりする方法を説明してきます。
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
// セル範囲をクリア
sheet.getRange("A1:C5").clear();
// セル範囲内の空白セルをチェック
const values = sheet.getRange("A1:C5").getValues();
for (let i = 0; i < values.length; i++) {
for (let j = 0; j < values[i].length; j++) {
if (values[i][j] === "") {
console.log(`セル (${i+1}, ${j+1}) は空白です`);
}
}
}
}
実際にセルの操作を用いた実際にありそうなケースを紹介します。
そのままコピペすることもできると思いますので、ぜひ利用してください。
