GASでスプレッドシートの複数セルからデータを高速で一括取得する方法完全ガイド

こんにちは!今回は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()をマスターして快適な開発ライフを送ろうばい!

コメント

タイトルとURLをコピーしました