Google Apps Script (GAS) でこのセル範囲の移動・コピー・削除を行う方法を説明します。
Rangeクラスのメソッドを利用した手順について説明します。
Google Apps Scriptの基本的な使い方については下記をご覧ください。
- GASによるスプレッドシート操作の概要
- このセル範囲を移動する
- このセル範囲をコピーする
- このセル範囲を指定した位置にコピーする:copyTo(destination)
- このセル範囲を指定した位置に指定した貼り付けタイプでコピーする:copyTo(destination, copyPasteType, transposed)
- このセル範囲を指定した位置に指定したオプションでコピーする:copyTo(destination, options)
- このセル範囲の値を指定したシートの位置にコピーする(シートID指定):copyValuesToRange(gridId, column, columnEnd, row, rowEnd)
- このセル範囲の値を指定したシートの位置にコピーする(シートクラス指定):copyValuesToRange(sheet, column, columnEnd, row, rowEnd)
- このセル範囲の書式を指定したシートの位置にコピーする(シートID指定):copyFormatToRange(gridId, column, columnEnd, row, rowEnd)
- このセル範囲の書式を指定したシートの位置にコピーする(シートクラス指定):copyFormatToRange(sheet, column, columnEnd, row, rowEnd)
- このセル範囲を削除する
- まとめ
GASによるスプレッドシート操作の概要
GASでスプレッドシートを操作するための「SpreadSheetサービス」は、主に下記のクラスで構成されています。
クラス | 説明 |
---|---|
SpreadSheetApp | SpreadSheetサービスの親クラス |
Spreadsheet | スプレッドシートを操作するクラス |
Sheet | シートを操作するクラス |
Range | セル範囲を操作するクラス |
それぞれ下記のような位置付けになります。
「SpreadSheetApp」→「SpreadSheet」→「Sheet」→「Range」という順の階層構造になっています。操作対象に応じて、下の階層にたどってオブジェクトを取得して利用します。
このページでは、上記の中のRangeクラスの下記のメソッドについて説明します。
メソッド | 戻り値 | 説明 |
---|---|---|
moveTo(target) | void | このセル範囲を指定した位置に移動する |
copyTo(destination) | void | このセル範囲を指定した位置にコピーする |
copyTo(destination, copyPasteType, transposed) | void | このセル範囲を指定した位置に指定した貼り付けタイプでコピーする |
copyTo(destination, options) | void | このセル範囲を指定した位置に指定したオプションでコピーする |
copyValuesToRange(gridId, column, columnEnd, row, rowEnd) | void | このセル範囲の値を指定したシートの位置にコピーする(シートID指定) |
copyValuesToRange(sheet, column, columnEnd, row, rowEnd) | void | このセル範囲の値を指定したシートの位置にコピーする(シートクラス指定) |
copyFormatToRange(gridId, column, columnEnd, row, rowEnd) | void | このセル範囲の書式を指定したシートの位置にコピーする(シートID指定) |
copyFormatToRange(sheet, column, columnEnd, row, rowEnd) | void | このセル範囲の書式を指定したシートの位置にコピーする(シートクラス指定) |
clear() | Range | このセル範囲の書式と値を削除する |
clear(options) | Range | このセル範囲を指定したオプションで削除する |
clearContent() | Range | このセル範囲の値を削除する |
clearFormat() | Range | このセル範囲の書式を削除する |
clearNote() | Range | このセル範囲のメモを削除する |
clearDataValidations() | Range | このセル範囲のデータの入力規則を削除する |
このセル範囲を移動する
このセル範囲を移動するメソッドを説明します。
このセル範囲を指定した位置に移動する:moveTo(target)
このセル範囲を指定した位置に移動する方法です。書式も値も移動されます。
下記のように実行します。
1 2 3 4 5 6 |
function myFunction() { const testSpreadSheet = SpreadsheetApp.getActiveSpreadsheet(); const testSheet = testSpreadSheet.getSheetByName("シート1"); const testRange = testSheet.getRange("B2:C2"); testRange.moveTo(testSheet.getRange("E2")); } |
下記のファイルで実行してみます。
実行結果は下記になります。B2:C2のセルが、E2に移動されます。
移動先に複数セル(E2:G4など)を指定した場合は、左上のセルの値(E2)として動作します。そのため、移動先に複数セルを指定する意味はありません。
このセル範囲をコピーする
このセル範囲をコピーするメソッドを説明します。
このセル範囲を指定した位置にコピーする:copyTo(destination)
このセル範囲を指定した位置にコピーする方法です。書式も値もコピーされます。
下記のように実行します。
1 2 3 4 5 6 |
function myFunction() { const testSpreadSheet = SpreadsheetApp.getActiveSpreadsheet(); const testSheet = testSpreadSheet.getSheetByName("シート1"); const testRange = testSheet.getRange("B2:C2"); testRange.copyTo(testSheet.getRange("E2")); } |
下記のファイルで実行してみます。
実行結果は下記になります。B2:C2のセルが、E2にコピーされます。
コピー先に複数セル(E2:G4など)を指定した場合は、左上のセルの値(E2)として動作します。そのため、コピー先に複数セルを指定する意味はありません。
このセル範囲を指定した位置に指定した貼り付けタイプでコピーする:copyTo(destination, copyPasteType, transposed)
このセル範囲を指定した位置に指定した貼り付けタイプでコピーする方法です。
貼り付けタイプcopyPasteTypeは、下記のいずれかを指定します。
指定する値 | 方向 |
---|---|
SpreadsheetApp.CopyPasteType.PASTE_NORMAL | 値、数式、書式、結合を貼り付けます。 |
SpreadsheetApp.CopyPasteType.PASTE_NO_BORDERS | 値、数式、書式、結合を貼り付けます。ただし、枠線は付けない。 |
SpreadsheetApp.CopyPasteType.PASTE_FORMAT | 書式のみを貼り付ける |
SpreadsheetApp.CopyPasteType.PASTE_FORMULA | 数式のみを貼り付ける |
SpreadsheetApp.CopyPasteType.PASTE_DATA_VALIDATION | データの入力規則のみを貼り付ける |
SpreadsheetApp.CopyPasteType.PASTE_VALUES | 書式、数式、結合を使用せずに、値のみを貼り付ける |
SpreadsheetApp.CopyPasteType.PASTE_CONDITIONAL_FORMATTING | 条件付き書式のみを貼り付ける |
SpreadsheetApp.CopyPasteType.PASTE_COLUMN_WIDTHS | 列の幅のみを貼り付ける |
transposedは、縦横を入れ替えて貼り付けたい場合にtrueを指定します。
下記のように実行します。
1 2 3 4 5 6 |
function myFunction() { const testSpreadSheet = SpreadsheetApp.getActiveSpreadsheet(); const testSheet = testSpreadSheet.getSheetByName("シート1"); const testRange = testSheet.getRange("B2:C3"); testRange.copyTo(testSheet.getRange("E2"), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, true); } |
下記のファイルで実行してみます。
実行結果は下記になります。transposedをtrueにしているため、B2:C3のセルが縦横を入れ替えて貼り付けられます。
コピー先に複数セル(E2:G4など)を指定した場合は、左上のセルの値(E2)として動作します。そのため、コピー先に複数セルを指定する意味はありません。
このセル範囲を指定した位置に指定したオプションでコピーする:copyTo(destination, options)
このセル範囲を指定した位置に指定したオプションでコピーする方法です。
optionsは、下記のいずれかを指定できます。何も指定しない場合は、書式も値もコピーされます。
指定する値 | 方向 |
---|---|
formatOnly | 書式のみをコピーする |
contentsOnly | 値のみをコピーする |
下記のように実行します。
1 2 3 4 5 6 |
function myFunction() { const testSpreadSheet = SpreadsheetApp.getActiveSpreadsheet(); const testSheet = testSpreadSheet.getSheetByName("シート1"); const testRange = testSheet.getRange("B2:C2"); testRange.copyTo(testSheet.getRange("E2"), { formatOnly: true }); } |
下記のファイルで実行してみます。
実行結果は下記になります。formatOnlyをtrueにしているため、書式のみがコピーされます。
コピー先に複数セル(E2:G4など)を指定した場合は、左上のセルの値(E2)として動作します。そのため、コピー先に複数セルを指定する意味はありません。
このセル範囲の値を指定したシートの位置にコピーする(シートID指定):copyValuesToRange(gridId, column, columnEnd, row, rowEnd)
このセル範囲の値を指定した位置にコピーする方法です。コピー先のシートをシートIDで指定します。
gridIdにはコピー先のシートのシートIDを指定します。
そして何列目から何列目、何行目から何行目へコピーするかを残りの引数へ指定します。
コピー元よりコピー先のセル範囲の方が大きい場合は、コピー元の値を繰り返すかたちでコピーされます。コピー先の方が小さい場合は、切り捨ててコピーされます。
下記のように実行します。自分自身のシートを指定した例です。
1 2 3 4 5 6 |
function myFunction() { const testSpreadSheet = SpreadsheetApp.getActiveSpreadsheet(); const testSheet = testSpreadSheet.getSheetByName("シート1"); const testRange = testSheet.getRange("B2:C2"); testRange.copyValuesToRange(testRange.getGridId(), 5, 8, 2, 6); } |
下記のファイルで実行してみます。
実行結果は下記になります。コピー元の値を繰り返すかたちでコピーされます。
このセル範囲の値を指定したシートの位置にコピーする(シートクラス指定):copyValuesToRange(sheet, column, columnEnd, row, rowEnd)
このセル範囲の値を指定した位置にコピーする方法です。コピー先のシートをシートクラスで指定します。
gridIdにはコピー先のシートのシートクラスを指定します。
そして何列目から何列目、何行目から何行目へコピーするかを残りの引数へ指定します。
コピー元よりコピー先のセル範囲の方が大きい場合は、コピー元の値を繰り返すかたちでコピーされます。コピー先の方が小さい場合は、切り捨ててコピーされます。
下記のように実行します。自分自身のシートを指定した例です。
1 2 3 4 5 6 |
function myFunction() { const testSpreadSheet = SpreadsheetApp.getActiveSpreadsheet(); const testSheet = testSpreadSheet.getSheetByName("シート1"); const testRange = testSheet.getRange("B2:C2"); testRange.copyValuesToRange(testSheet, 5, 8, 2, 6); } |
下記のファイルで実行してみます。
実行結果は下記になります。コピー元の値を繰り返すかたちでコピーされます。
このセル範囲の書式を指定したシートの位置にコピーする(シートID指定):copyFormatToRange(gridId, column, columnEnd, row, rowEnd)
このセル範囲の書式を指定した位置にコピーする方法です。コピー先のシートをシートIDで指定します。
gridIdにはコピー先のシートのシートIDを指定します。
そして何列目から何列目、何行目から何行目へコピーするかを残りの引数へ指定します。
コピー元よりコピー先のセル範囲の方が大きい場合は、コピー元の書式を繰り返すかたちでコピーされます。コピー先の方が小さい場合は、切り捨ててコピーされます。
下記のように実行します。自分自身のシートを指定した例です。
1 2 3 4 5 6 |
function myFunction() { const testSpreadSheet = SpreadsheetApp.getActiveSpreadsheet(); const testSheet = testSpreadSheet.getSheetByName("シート1"); const testRange = testSheet.getRange("B2:C2"); testRange.copyFormatToRange(testRange.getGridId(), 5, 8, 2, 6); } |
下記のファイルで実行してみます。
実行結果は下記になります。コピー元の書式を繰り返すかたちでコピーされます。
このセル範囲の書式を指定したシートの位置にコピーする(シートクラス指定):copyFormatToRange(sheet, column, columnEnd, row, rowEnd)
このセル範囲の書式を指定した位置にコピーする方法です。コピー先のシートをシートクラスで指定します。
sheetにはコピー先のシートのシートクラスを指定します。
そして何列目から何列目、何行目から何行目へコピーするかを残りの引数へ指定します。
コピー元よりコピー先のセル範囲の方が大きい場合は、コピー元の書式を繰り返すかたちでコピーされます。コピー先の方が小さい場合は、切り捨ててコピーされます。
下記のように実行します。自分自身のシートを指定した例です。
1 2 3 4 5 6 |
function myFunction() { const testSpreadSheet = SpreadsheetApp.getActiveSpreadsheet(); const testSheet = testSpreadSheet.getSheetByName("シート1"); const testRange = testSheet.getRange("B2:C2"); testRange.copyFormatToRange(testSheet, 5, 8, 2, 6); } |
下記のファイルで実行してみます。
実行結果は下記になります。コピー元の書式を繰り返すかたちでコピーされます。
このセル範囲を削除する
このセル範囲を削除するメソッドを説明します。
このセル範囲の書式と値を削除する:clear()
このセル範囲の書式と値を削除する方法です。
下記のように実行します。
1 2 3 4 5 6 |
function myFunction() { const testSpreadSheet = SpreadsheetApp.getActiveSpreadsheet(); const testSheet = testSpreadSheet.getSheetByName("シート1"); const testRange = testSheet.getRange("B2:C2"); testRange.clear(); } |
下記のファイルで実行してみます。
実行結果は下記になります。B2:C2のセルが削除されます。
このセル範囲を指定したオプションで削除する:clear(options)
このセル範囲を指定したオプションで削除する方法です。
optionsは、下記を指定できます。何も指定しない場合は、すべてのデータが削除されます。
指定する値 | 方向 |
---|---|
commentsOnly | コメントのみを削除する |
contentsOnly | 値のみを削除する |
formatOnly | 書式のみを削除する。 |
validationsOnly | データの入力規則のみを削除する |
skipFilteredRows | フィルタされた行を削除しない |
下記のように実行します。
1 2 3 4 5 6 |
function myFunction() { const testSpreadSheet = SpreadsheetApp.getActiveSpreadsheet(); const testSheet = testSpreadSheet.getSheetByName("シート1"); const testRange = testSheet.getRange("B2:C2"); testRange.clear({ formatOnly: true }); } |
下記のファイルで実行してみます。
実行結果は下記になります。B2:C2のセルの書式のみが削除されます。
このセル範囲の値を削除する:clearContent()
このセル範囲の値を削除する方法です。
下記のように実行します。
1 2 3 4 5 6 |
function myFunction() { const testSpreadSheet = SpreadsheetApp.getActiveSpreadsheet(); const testSheet = testSpreadSheet.getSheetByName("シート1"); const testRange = testSheet.getRange("B2:C2"); testRange.clearContent(); } |
下記のファイルで実行してみます。
実行結果は下記になります。B2:C2のセルの値が削除されます。
このセル範囲の書式を削除する:clearFormat()
このセル範囲の書式を削除する方法です。
下記のように実行します。
1 2 3 4 5 6 |
function myFunction() { const testSpreadSheet = SpreadsheetApp.getActiveSpreadsheet(); const testSheet = testSpreadSheet.getSheetByName("シート1"); const testRange = testSheet.getRange("B2:C2"); testRange.clearFormat(); } |
下記のファイルで実行してみます。
実行結果は下記になります。B2:C2のセルの書式が削除されます。
このセル範囲のメモを削除する:clearNote()
このセル範囲のメモを削除する方法です。
下記のように実行します。
1 2 3 4 5 6 |
function myFunction() { const testSpreadSheet = SpreadsheetApp.getActiveSpreadsheet(); const testSheet = testSpreadSheet.getSheetByName("シート1"); const testRange = testSheet.getRange("B2:C2"); testRange.clearNote(); } |
下記のファイルで実行してみます。B2とC3にメモが挿入されています。
実行結果は下記になります。B2:C2のセルのメモが削除されます。
このセル範囲のデータの入力規則を削除する:clearDataValidations()
このセル範囲のデータの入力規則を削除する方法です。
下記のように実行します。
1 2 3 4 5 6 |
function myFunction() { const testSpreadSheet = SpreadsheetApp.getActiveSpreadsheet(); const testSheet = testSpreadSheet.getSheetByName("シート1"); const testRange = testSheet.getRange("B2:C2"); testRange.clearDataValidations(); } |
下記のファイルで実行してみます。下記のように、B2にはデータの入力規則が設定されています。
実行結果は下記になります。B2のデータの入力規則が削除されます。
まとめ
Google Apps Script (GAS) でこのセル範囲の移動・コピー・削除を行う方法を説明しました。
GASは無料で利用できてとても便利なツールです。
Googleスプレッドシート等のGoogleアプリケーションを利用されている方は、GASを習得することで作業を大きく効率化できます。
GASの基本構文を知りたい方は、下記もご覧ください。