GoogleAppsScriptでスプレッドシートのセルを結合する方法(mergeメソッド)

2020年11月14日

Google Apps Script(GAS)を使い、スプレッドシートのセルを結合することができます。

選択した範囲のセルを結合して1つのセルとして扱うことをGASで実装する方法について解説します。

GASでスプレッドシートのセル結合はmergeメソッド

Google Apps Script(GAS)でスプレッドシートのセルを結合するにはmergeメソッドを使用します。

Range.merge()

予め結合したいセル範囲をgetRangeメソッドで選択したRangeオブジェクトで、mergeメソッドを実装することで、セルの結合ができます。

結合範囲を指定する必要があるため、getRangeメソッドで複数範囲のセルを指定する必要があります。

GASでのgetRangeで指定したセル範囲を結合する方法

Google Apps Script(GAS)を使ったセル範囲を結合する方法をサンプルコードを解説します。

Google Apps Script(GAS)でスプレッドシートのセル結合を実行するサンプルコードを解説

function mergeCell() {
//スクリプトに紐付いたスプレッドシートのアクティブなシートを読み込む
let mySheet = SpreadsheetApp.getActiveSheet()
//シートから結合したい範囲(B2:E6)のセルを取得
let mergeRange = mySheet.getRange(2, 2, 5, 4);
//取得したセル範囲に対しセルの結合を実行
mergeRange.merge();
}

サンプルコードを実行すると、getRangeメソッドで指定した範囲のセルが結合されるようになります。

Google Apps Script(GAS)のmergeメソッドでセルの結合を実行した結果、スプレッドシートも反映

上図のようにスプレッドシート上でも指定範囲がセル結合されていることが確認できます。

シート上選択されたセルをGASで結合する方法

続いてgetRangeメソッドで結合範囲を選択するのではなく、あらかじめスプレッドシート上で選択したセルを結合するGASコードを紹介します。

あらかじめスプレッドシート上で結合したいセル範囲を選択しておく

スプレッドシートのシート上のセル選択範囲を、コンテナバインド型のGASスクリプトで取得するにはgetActiveRangeメソッドを使用します。

Google Apps Script(GAS)でスプレッドシートで選択しているセル範囲をgetActiveRangeで取得し、セル結合を実行するサンプルコード

function mergeSelectedCell() {
//スクリプトに紐付いたスプレッドシートのアクティブなシートを読み込む
let mySheet = SpreadsheetApp.getActiveSheet()
//シート上で選択されているアクティブなセル範囲を取得
let mergeRange = mySheet.getActiveRange();
//取得したセル範囲に対しセルの結合を実行
mergeRange.merge();
}

上記のサンプルコードを実行すると、選択されたセルが結合されるようになります。

Google Apps Script(GAS)でスプレッドシート上で選択した範囲のセルを結合するコードを実行した結果

今回のコードは、コンテナバインド型のGASスクリプトのみ有効です。

スプレッドシートのセル選択範囲を取得不可能なスタンドアロン型では実行できません。

水平・垂直方向のセル結合もGASで可能

なお、セル結合に関するメソッドとして、水平(列方向)に結合するmergeAcrossメソッドと垂直(行方向)に結合するmergeVerticallyメソッドが用意されています。

Range.mergeAcross()

Range.mergeVertically()

GASのmergeAcrossメソッドとmergeVerticallyメソッドのサンプルコード

function mergeAcrossCell() {
//スクリプトに紐付いたスプレッドシートのアクティブなシートを読み込む
let mySheet = SpreadsheetApp.getActiveSheet()
//シートから結合したい範囲(B2:E6)のセルを取得
let mergeRange = mySheet.getRange(2, 2, 5, 4);
//取得したセル範囲に対しセルの結合を実行
mergeRange.mergeAcross();
}
function mergeVerticallyCell() {
//スクリプトに紐付いたスプレッドシートのアクティブなシートを読み込む
let mySheet = SpreadsheetApp.getActiveSheet()
//シートから結合したい範囲(B8:E12)のセルを取得
let mergeRange = mySheet.getRange(8, 2, 5, 4);
//取得したセル範囲に対しセルの結合を実行
mergeRange.mergeVertically();
}

サンプルコードを実行すると、それぞれ選択範囲のセルが列方向と行方向に結合されるようになります。

Google Apps Script(GAS)のmergeAcrossとmergeVerticallyを実行したスプレッドシート結果

なお、結合する際の注意点として、行方向に結合しているセルに対し、mergeAccrossメソッドを実行するとエラーします。

同様に列方向に結合しているセルに対し、mergeVerticallyメソッドを実行してもエラーになるので、注意が必要です。

まとめ・終わりに

今回、スプレッドシートの複数のセルを、Google Apps Script(GAS)で結合させる方法を紹介しました。

getRangeやgetActiveCellで結合したいセル範囲を選択した上で、mergeメソッドを実行すると、GASでセル結合ができます。

その他にも、列方向に結合するmergeAccrossメソッドや、行方向に結合するmergeVerticallyメソッドもあります。

スプレッドシートの自動化でセル結合が必要な場合は、今回紹介した3種類のメソッドを駆使して実装しましょう。