こんにちは!今回はGoogle Apps Script(GAS)でスプレッドシートのデータを扱ううえで超重要なgetValues()
メソッドについて、詳しく解説していくばい!
このメソッドを使いこなせば、大量のデータを効率よく処理できるようになるけん、しっかり学んでいこうじゃ!
1. getValues()とは?
getValues()
は、スプレッドシートから複数のセルの値を一括取得するメソッドたい。
例えば、A1からC3の範囲を取得するコードはこうなるとよ。
const sheet = SpreadsheetApp.getActiveSheet();
const values = sheet.getRange("A1:C3").getValues();
console.log(values);
取得したデータは二次元配列として返されるっちゃね。
[
["データ1", "データ2", "データ3"],
["データ4", "データ5", "データ6"],
["データ7", "データ8", "データ9"]
]
2. getValue()との違い
メソッド名 | 取得できる範囲 | 戻り値の型 |
---|---|---|
getValue() | 単一セル | プリミティブ型 |
getValues() | 複数セル | 二次元配列 |
例えば100セル分のデータを取得するとき、getValue()
を100回繰り返すとめちゃくちゃ遅くなるとばい! getValues()
を使えば一括で取得できるけん、処理速度が圧倒的に速くなるとよ。
3. getValues()の活用例
3-1. シンプルなデータ取得
const data = sheet.getRange("A1:B10").getValues();
data.forEach(row => console.log(row));
この方法で、A1からB10までのデータをまとめて取得できるとばい。
3-2. 数値データを変換して処理
const data = sheet.getRange("A1:A10").getValues();
const doubled = data.map(row => [row[0] * 2]);
sheet.getRange("B1:B10").setValues(doubled);
A列の数値を2倍してB列に書き込む、って感じの使い方じゃね。
3-3. 大量データを処理する場合の最適化
function processLargeData() {
const sheet = SpreadsheetApp.getActiveSheet();
const lastRow = sheet.getLastRow();
const data = sheet.getRange(1, 1, lastRow, 1).getValues();
const processedData = data.map(row => [row[0] ? row[0] * 1.1 : row[0]]);
sheet.getRange(1, 2, lastRow, 1).setValues(processedData);
}
大量データを扱うときは、getValues()
で一括取得してループ処理すると高速化できるばい!
4. getValues()の注意点
4-1. 取得するデータの型
スプレッドシートの表示形式によって、取得するデータ型が変わることがあるけん要注意!
- 数値 →
Number
- 文字列 →
String
- 日付 →
Date
もし表示形式通りのデータを取得したいなら、getDisplayValues()
を使うとよかよ!
const displayData = sheet.getRange("A1:A10").getDisplayValues();
4-2. メモリ管理に注意
10,000行以上のデータを扱うときは、一度に全て取得するとメモリを圧迫する可能性があるばい。そんなときは、500行ごとに処理するのがおすすめじゃ。
const chunkSize = 500;
for (let i = 0; i < totalRows; i += chunkSize) {
const chunkData = sheet.getRange(i + 1, 1, chunkSize, 1).getValues();
// データ処理
}
まとめ
getValues()
はスプレッドシートのデータを効率よく取得するために必須!getValue()
と比べて大幅にパフォーマンスが良い。getDisplayValues()
を使えば、表示通りの値を取得可能。- 大量データを扱うときは、メモリ負荷を考慮してチャンク処理をする。
GASでスプレッドシートを扱うなら、getValues()
をマスターして快適な開発ライフを送ろうばい!
コメント