Google Apps Script (GAS) でこのセル範囲のセルを結合・分割したり、存在する結合セルを取得する方法を説明します。
Rangeクラスのメソッドを利用した手順について説明します。
Google Apps Scriptの基本的な使い方については下記をご覧ください。
GASによるスプレッドシート操作の概要
GASでスプレッドシートを操作するための「SpreadSheetサービス」は、主に下記のクラスで構成されています。
クラス | 説明 |
---|---|
SpreadSheetApp | SpreadSheetサービスの親クラス |
Spreadsheet | スプレッドシートを操作するクラス |
Sheet | シートを操作するクラス |
Range | セル範囲を操作するクラス |
それぞれ下記のような位置付けになります。
「SpreadSheetApp」→「SpreadSheet」→「Sheet」→「Range」という順の階層構造になっています。操作対象に応じて、下の階層にたどってオブジェクトを取得して利用します。
このページでは、上記の中のRangeクラスの下記のメソッドについて説明します。
メソッド | 戻り値 | 説明 |
---|---|---|
merge() | Range | このセル範囲のセルを結合する |
mergeAcross() | Range | このセル範囲のセルを横方向で結合する |
mergeVertically() | Range | このセル範囲のセルを縦方向で結合する |
breakApart() | Range | このセル範囲のセルを分割する |
getMergedRanges() | Range[] | このセル範囲に存在する結合されたセルを取得する |
isPartOfMerge() | Boolean | このセル範囲に結合されたセルが存在するかどうかを取得する |
このセル範囲のセルを結合・分割する
このセル範囲のセルを結合・分割するメソッドを説明します。
このセル範囲のセルを結合する:merge()
このセル範囲のセルを結合する方法です。
下記のように実行します。
1 2 3 4 5 6 |
function myFunction() { const testSpreadSheet = SpreadsheetApp.getActiveSpreadsheet(); const testSheet = testSpreadSheet.getSheetByName("シート1"); const testRange = testSheet.getRange("B2:C3"); testRange.merge(); } |
下記のファイルで実行してみます。
下記のような実行結果になります。セル範囲が結合されます。
このセル範囲のセルを横方向で結合する:mergeAcross()
このセル範囲のセルを横方向で結合する方法です。
下記のように実行します。
1 2 3 4 5 6 |
function myFunction() { const testSpreadSheet = SpreadsheetApp.getActiveSpreadsheet(); const testSheet = testSpreadSheet.getSheetByName("シート1"); const testRange = testSheet.getRange("B2:C3"); testRange.mergeAcross(); } |
下記のファイルで実行してみます。
下記のような実行結果になります。セル範囲が横方向で結合されます。
このセル範囲のセルを縦方向で結合する:mergeVertically()
このセル範囲のセルを縦方向で結合する方法です。
下記のように実行します。
1 2 3 4 5 6 |
function myFunction() { const testSpreadSheet = SpreadsheetApp.getActiveSpreadsheet(); const testSheet = testSpreadSheet.getSheetByName("シート1"); const testRange = testSheet.getRange("B2:C3"); testRange.mergeVertically(); } |
下記のファイルで実行してみます。
下記のような実行結果になります。セル範囲が縦方向で結合されます。
このセル範囲のセルを分割する:breakApart()
このセル範囲のセルを分割する方法です。
結合されたセルをすべて含んでいる必要があります。結合されたセルの一部のみを含んでいる場合はエラーになります。
下記のように実行します。
1 2 3 4 5 6 |
function myFunction() { const testSpreadSheet = SpreadsheetApp.getActiveSpreadsheet(); const testSheet = testSpreadSheet.getSheetByName("シート1"); const testRange = testSheet.getRange("B2:D4"); testRange.breakApart(); } |
下記のファイルで実行してみます。
下記のような実行結果になります。セル範囲に存在する結合されたセルが分割されます。
このセル範囲に結合されたセルが存在するかや、結合されたセル範囲を取得する
このセル範囲に結合されたセルが存在するかどうかを取得したり、結合されたセル範囲をRangeクラスの配列で取得するメソッドを説明します。
このセル範囲に結合されたセルが存在するかどうかを取得する:isPartOfMerge()
このセル範囲に、結合されたセルが存在するかどうかを取得する方法です。結合されたセルの一部でも含んでいれば取得の対象になります。
結合されたセルが1つでも存在する場合はtrue、1つも存在しない場合はfalseを返します。
下記のように実行します。
1 2 3 4 5 6 |
function myFunction() { const testSpreadSheet = SpreadsheetApp.getActiveSpreadsheet(); const testSheet = testSpreadSheet.getSheetByName("シート1"); const testRange = testSheet.getRange("C2:D2"); console.log(testRange.isPartOfMerge()); } |
下記のファイルで実行してみます。指定されたセル範囲はC2:D2のため”B2セル”と記載された結合セルは一部のみ含んでいる状態です。
下記のような実行結果になります。一部のセルのみ含んでいる結合セルも含め、結合されたセルが存在するかどうかを取得できます。
1 |
true |
このセル範囲に存在する結合されたセルを取得する:getMergedRanges()
このセル範囲の結合されたセルを取得する方法です。結合されたセルの一部でも含んでいれば取得の対象になります。
Rangeクラスの配列で返します。
下記のように実行します。
1 2 3 4 5 6 7 8 9 |
function myFunction() { const testSpreadSheet = SpreadsheetApp.getActiveSpreadsheet(); const testSheet = testSpreadSheet.getSheetByName("シート1"); const testRange = testSheet.getRange("B2:D3"); const testMergedRanges = testRange.getMergedRanges(); for (const range of testMergedRanges) { console.log(range.getA1Notation()); } } |
下記のファイルで実行してみます。指定されたセル範囲はB2:D3のため”D3セル”と記載された結合セルは一部のみ含んでいる状態です。
下記のような実行結果になります。一部のセルのみ含んでいる結合セルも含め、取得できます。
1 2 |
B2:C3 D3:D5 |
まとめ
Google Apps Script (GAS) でこのセル範囲のセルを結合・分割したり、存在する結合セルを取得する方法を説明しました。
GASは無料で利用できてとても便利なツールです。
Googleスプレッドシート等のGoogleアプリケーションを利用されている方は、GASを習得することで作業を大きく効率化できます。
GASの基本構文を知りたい方は、下記もご覧ください。