earthpg:GAS専門のプログラミングスクール

GAS初心者必見!getRangeでスプレッドシートの操作を極めよう

GASでスプレッドシートのセルを操作したいんだけど、「getRange」の使い方が覚えられなくて…。
猫男
猫男
catman
catman
よし、catmanが「GASのgetRange」を解説しよう。スプレッドシートの操作が楽になるからな。

GASでgetRangeをマスターしよう

GASのgetRangeメソッドは、スプレッドシートの指定範囲を操作するための基本中の基本。

これを使って、セルやセル範囲を指定するんだ。まずは基本を確認しよう。

getRangeの基本構文

 var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
 var range = sheet.getRange("A1:B2");

✅ これで、シートのA1からB2のセル範囲を取得している。

getRangeの引数を理解する

引数としてこのように指定することもできる。

 var range = sheet.getRange(1, 1, 2, 2);

✅ 行・列・行数・列数の順に指定する。上の例では、1行目1列目から2行2列の範囲を指定している。

なるほど!引数を変えると範囲の指定方法が変わるんですね。
猫男
猫男

列全体を指定してみよう

列全体を取得したいときはこのようにする。

 var range = sheet.getRange("A:A");

✅ これはA列全体を指しているんだ。

変数でgetRangeの範囲を動的に指定

変動する行や列を指定したいときは、変数を活用しよう。

 var startRow = 1;
 var numRows = 5;
 var range = sheet.getRange(startRow, 1, numRows, 2);

✅ 変数を使えば、動的に変わる範囲を指定可能。

GASでgetRangeから値を取得しよう

setValueでセルに値を入力

getRangeで指定したセルに値を入れるには、setValueを使う。

 range.setValue("Hello, World!");

✅ 指定したセル範囲に「Hello, World!」という文字を入れた。

配列を使って複数の値を入れる

複数のセルに値をセットしたい場合、配列を使うと便利だ。

 var values = [
  ["名前", "年齢"],
  ["catman", 100]
];
sheet.getRange(1, 1, 2, 2).setValues(values);

✅ カラムに指定された値の配列がそれぞれセルに入る。

getValuesでセルの値を取得

逆に、セルから値を取り出すときはgetValuesを使う。

 var data = range.getValues();
 Logger.log(data);

✅ 指定範囲のデータを配列として取得してログに出力。

データの取得と設定、どっちもgetRangeでスムーズにできるんですね!
猫男
猫男

最終行をゲットする

最終行を取得する方法もある。

 var lastRow = sheet.getLastRow();
 Logger.log("最終行は: " + lastRow);

✅ getLastRowを使って最終行の番号を取得。

離れたセルを同時に操作する

離れた範囲を同時に操作したい場合は工夫が必要だ。

 var ranges = [sheet.getRange("A1"), sheet.getRange("C1")];
ranges.forEach(function(range) {
  range.setValue("Hello");
});

✅ 複数のセル範囲を配列に入れて、それぞれに値をセット。

catman
catman
これでgetRangeをマスターできたな。すべての冒険はここからはじまる

練習問題

次のスクリプトを書いてみましょう。

  1. シートの2行目1列目から4行目2列目にまで、ランダムな整数値を配置するスクリプトを作成しましょう。
  2. 作成したスクリプトで埋めた範囲を取得し、データをログに出力しましょう。

解答・解説

 function fillRandomValuesAndLog() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var range = sheet.getRange(2, 1, 3, 2);
  var values = [];
  
  // ランダムな整数を値にセットする
  for (var i = 0; i < 3; i++) {
    values[i] = [];
    for (var j = 0; j < 2; j++) {
      values[i][j] = Math.floor(Math.random() * 100);
    }
  }
  range.setValues(values);
  
  // セルから値を取得してログに出力する
  var data = range.getValues();
  Logger.log(data);
}

解説:

  • まず、シートを取得しgetRangeを使って特定の範囲を設定。
  • ランダムな整数を生成して配列にセットし、setValuesを使ってセルに配置。
  • その後、getValuesでデータを取得し、Logger.logで表示。
これでgetRangeを使ったセル操作がしっかり理解できました!ありがとうございます、catman!
猫男
猫男
catman
catman
良いんだ。何かあったらまた聞くといいさ。