Google Apps Script(GAS)を触ってると、必ず出てくるのがgetValue()
メソッドばい!スプレッドシートのデータを取得するための基本中の基本じゃけど、意外と落とし穴があるっちゃね。今回は、このgetValue()
の基本から応用まで、わかりやすく解説していくばい!
getValue()って何するメソッド?
簡単に言うと、指定したセルの値を取得するメソッドたい。例えば、スプレッドシートのA1セルの値を取ってくるコードはこんな感じさ。
const sheet = SpreadsheetApp.getActiveSheet();
const value = sheet.getRange("A1").getValue();
Logger.log(value);
めっちゃシンプルじゃろ?でも、シンプルだからこそ、使い方を間違うとエラーやパフォーマンスの問題にハマるとよ。
getValue()の基本的な使い方
単一セルの値を取得
function getSingleValue() {
const sheet = SpreadsheetApp.getActiveSheet();
const value = sheet.getRange("B5").getValue();
Logger.log("B5の値: " + value);
}
このコードで、B5セルの値を取得してログに出力するばい。特に難しいことはないけど、実際に使うときはデータ型に気をつけんといかんさ!
取得するデータ型に注意!
getValue()
は、セルの内容に応じて返すデータ型が変わるとよ。
セルの内容 | 返されるデータ型 |
---|---|
数値(123) | Number型 |
文字列(”Hello”) | String型 |
TRUE/FALSE | Boolean型 |
日付(2024/12/01) | Dateオブジェクト |
例えば、セルが「2025/03/05」みたいな日付の時、getValue()
はDate
オブジェクトを返すばい。これを文字列として使いたいなら、Utilities.formatDate()
を使うと良かけ。
const dateValue = sheet.getRange("C3").getValue();
const formattedDate = Utilities.formatDate(dateValue, Session.getScriptTimeZone(), "yyyy/MM/dd");
Logger.log("フォーマット後の日付: " + formattedDate);
getValue()の応用編
複数セルの値を取得したい?
getValue()
は1セルしか取れんばい。複数セルをまとめて取るときは、getValues()
を使うのがオススメ!
function getMultipleValues() {
const sheet = SpreadsheetApp.getActiveSheet();
const values = sheet.getRange("A1:A10").getValues();
Logger.log(values);
}
この方法なら、A1からA10の値を一気に取れるばい。ループ処理を使うときも、この方法のほうが高速じゃけ。
条件付きでセルの色を変更!
取得した値を使って、条件を満たしたセルに色を付けることもできるばい。
function highlightCells() {
const sheet = SpreadsheetApp.getActiveSheet();
const values = sheet.getRange("A1:C10").getValues();
values.forEach((row, rowIndex) => {
row.forEach((cellValue, colIndex) => {
if(cellValue > 100) {
sheet.getRange(rowIndex + 1, colIndex + 1).setBackground("#FF0000");
}
});
});
}
このコードを使えば、100以上の値が入ってるセルに赤色を付けられるばい!
getValue()の落とし穴と対策
1. getValue()をループで使うのはNG!
こんなコードを書いてないかい?
for (let i = 1; i <= 100; i++) {
let value = sheet.getRange("A" + i).getValue();
Logger.log(value);
}
この方法、めちゃくちゃ遅いばい!getValues()
を使えば、一気に取得できて処理が速くなるさ。
const values = sheet.getRange("A1:A100").getValues();
values.forEach(value => Logger.log(value));
2. 存在しないセルを取得しようとするとエラー!
指定した範囲が無効だと、getValue()
はエラーを出すばい。エラーを防ぐには、例外処理を入れるのがオススメさ。
try {
const value = sheet.getRange("Z1000").getValue();
Logger.log(value);
} catch (e) {
Logger.log("エラー発生: " + e.message);
}
まとめ
getValue()
はシンプルだけど、データ型やパフォーマンスを意識せんと意外とハマるメソッドばい。以下のポイントを押さえれば、スマートに使いこなせるさ。
getValue()
は1セル専用、複数セルならgetValues()
を使う!- 取得するデータ型を意識する!
- ループで
getValue()
を使わず、まとめて取得して高速化する! - 例外処理を入れてエラー対策をする!
GASを使いこなして、効率よくスプレッドシートを操作しようばい!



コメント