スキップしてメイン コンテンツに移動

GAS範囲操作と結合解除

GAS範囲操作と結合解除

GAS基礎

Google Apps Script(GAS)は、Google Workspace のサービスを自動化するための JavaScript ベースのスクリプト言語です。まずは GAS の基本的な構文と、スプレッドシートを操作するための SpreadsheetApp クラスを紹介します。以下のコードは、現在開いているスプレッドシートのアクティブシートを取得し、A1 セルに「Hello, GAS!」と書き込む最小限の例です。

function helloGAS() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  sheet.getRange('A1').setValue('Hello, GAS!');
}

このように、GAS では SpreadsheetApp を通じてスプレッドシートにアクセスし、getRange でセル範囲を指定します。次章では、範囲を動的に操作するテクニックを掘り下げます。

範囲操作応用

範囲操作の応用では、offsetgetRanges を組み合わせて、複数のセルを一括で取得・更新する方法を学びます。offset は現在の範囲から相対的に位置をずらした新しい範囲を返します。例えば、A1 のセルから右に 2 列、下に 3 行ずれた範囲を取得するには次のようにします。

const base = sheet.getRange('A1');
const target = base.offset(3, 2); // D4 から始まる範囲
target.setBackground('#ffeb3b');

さらに、getRanges を使うと、複数の非連続範囲を一度に取得できます。以下は、A1 と C1 の 2 つのセルを同時に取得し、値を設定する例です。

const ranges = sheet.getRanges(['A1', 'C1']);
ranges.forEach(r => r.setValue('複数取得'));

これらのテクニックを組み合わせることで、データの抽出や書き込みを効率化できます。

NamedRangeと名前付き範囲

名前付き範囲(NamedRange)は、スプレッドシート内の特定のセルや範囲に意味のある名前を付けることで、スクリプトや数式で参照しやすくする機能です。GAS からは SpreadsheetApp.getActiveSpreadsheet().getRangeByName(name) で取得できます。

const named = sheet.getRangeByName('売上データ');
named.setFontWeight('bold');

名前付き範囲を作成するには、スプレッドシートのメニューから「データ」→「名前付き範囲」を選択し、範囲と名前を設定します。スクリプト側では NamedRange オブジェクトを取得し、getRange() で実際のセル範囲を取得できます。

const namedRange = SpreadsheetApp.getActiveSpreadsheet().getNamedRanges()
  .find(r => r.getName() === '売上データ');
const actualRange = namedRange.getRange();

名前付き範囲を活用すると、シート構造が変わってもスクリプトが壊れにくくなります。

セル結合と枠線

セル結合(merge)は、複数のセルを一つにまとめる操作です。GAS では merge() メソッドで結合し、breakApart() で解除します。以下は、A1 から B2 までの 4 セルを結合し、背景色を設定した後、結合解除する例です。

const mergeRange = sheet.getRange('A1:B2');
mergeRange.merge();
mergeRange.setBackground('#c8e6c9');

// 何らかの処理後に結合解除
mergeRange.breakApart();

結合解除時に breakApart() を呼び出すと、元のセル構造に戻ります。結合したセルに枠線(border)を設定するには、setBorder を使います。

mergeRange.setBorder(true, true, true, true, true, true, '#000000', SpreadsheetApp.BorderStyle.SOLID);

枠線を細かく制御したい場合は、setBorder の引数を個別に指定し、上下左右の枠線を個別に設定できます。これにより、レポートやダッシュボードの見た目を整えることが可能です。

この記事はAIによって作成されました。

コメント