PR

GASで複数範囲のセルを操作!スプレッドシートの離れたセルを一括設定する方法

GASで複数範囲のセルを操作!スプレッドシートの離れたセルを一括設定する方法 GAS
記事内に広告が含まれています。

Google Apps Script(GAS)を使ってGoogleスプレッドシートを操作する際、複数の離れた範囲のセルを一度に設定したいことがありますよね。

しかし、getRangeメソッドだけでは、この操作を直接行うことができません。

本記事では、GASで複数の離れた範囲のセルを操作する、効果的な方法を紹介します。

getRangeメソッドの制限

getRangeメソッドは、GASでスプレッドシートの特定の範囲を取得するための基本的なメソッドです。

このメソッドを使用すると、指定したセルの範囲(例:A1:B4)に対してアクセスし、その範囲の値を読み取ったり、書き込んだりすることができます。

var range = sheet.getRange("A1:B4");


しかし、このメソッドには制限があります

getRangeメソッドは、1回の呼び出しで1つの連続した範囲しか取得できません。

つまり、下記のようにA1:B4とD1:E6のような離れた範囲を一度に取得することはできないのです。

var range = sheet.getRange("A1:B4, D1:E6"); // これは動作しません


この制限は、複数の離れた範囲を同時に操作したい場合に課題となります。

複数範囲を操作する2つの方法

では、どうすれば複数の離れた範囲を効率的に操作できるでしょうか?

ここでは、2つの有効な方法をご紹介します。

1. 複数のgetRange呼び出し

一番シンプルな方法は、離れた範囲ごとに個別にgetRangeを呼び出す方法です。

var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var range1 = sheet.getRange("A1:B4");
var range2 = sheet.getRange("D1:E6");

var values1 = range1.getValues();
var values2 = range2.getValues();

この方法では、それぞれの範囲に対して別々にgetRangeを使用し、必要な値を取得します。

シンプルで直感的に使える方法ですが、範囲が多くなるほどコードが長くなり、全体の処理時間を増加させる可能性があります。

扱う範囲の数が少ない場合や、簡単な操作を行う場合に、こちらの方法を使うことをおすすめします。

2. getRangeListの使用

より効率的に複数の範囲を扱いたい場合は、getRangeListメソッドを使用することをおすすめします。

var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var rangeList = sheet.getRangeList(["A1:B4", "D1:E6"]);

var ranges = rangeList.getRanges();
var values = ranges.map(range => range.getValues());

getRangeListを使用すると、複数の範囲をリストとして扱うことができます。

getRangeListを使う方法は、大規模なスプレッドシートや多数の範囲を扱う場合におすすめです。

getRangeList:使用上の注意

  1. getRangeListの基本
    • getRangeList()を使用した場合、直接値を取得することはできません
    • getRangesメソッドを使用して個々のRangeオブジェクトにアクセスする必要があります
  2. getRangeListで取得した範囲の処理
    • getRangeListで取得した複数の範囲を処理する際は、必ずループ処理が必要です。

【ループ処理の例】

var ranges = rangeList.getRanges();
var values = ranges.map(range => range.getValues());

for (var i = 0; i < ranges.length; i++) {
  var range = ranges[i];
  var rangeValues = values[i];
  // ここで各範囲に対する処理を行う
}
  • 各ループ処理で、現在の範囲(range)とその値(rangeValues)を個別に取得し処理します。

これらの点に注意することで、getRangeListを使用した複数範囲の処理が可能になります。

まとめ

GASでスプレッドシートの複数の離れた範囲のセルを操作する場合、getRangeメソッド単体ではこの操作を実現することはできません。

今回ご紹介した、複数回のgetRange呼び出しやgetRangeListの使用により、この課題を簡単に解決することができます。

ぜひ、ご自分のプロジェクトでも活用してみてください!

コメント

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