GAS PR

[GAS]このセル範囲の移動・コピー・削除を行う方法 -Rangeクラス-

記事内に商品プロモーションを含む場合があります

Google Apps Script (GAS) でこのセル範囲の移動・コピー・削除を行う方法を説明します。

Rangeクラスのメソッドを利用した手順について説明します。

Google Apps Scriptの基本的な使い方については下記をご覧ください。

Contents
  1. GASによるスプレッドシート操作の概要
  2. このセル範囲を移動する
  3. このセル範囲をコピーする
  4. このセル範囲を削除する
  5. まとめ

GASによるスプレッドシート操作の概要

GASでスプレッドシートを操作するための「SpreadSheetサービス」は、主に下記のクラスで構成されています。

クラス説明
SpreadSheetAppSpreadSheetサービスの親クラス
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)

このセル範囲を指定した位置に移動する方法です。書式も値も移動されます。

下記のように実行します。

下記のファイルで実行してみます。

実行結果は下記になります。B2:C2のセルが、E2に移動されます。

移動先に複数セル(E2:G4など)を指定した場合は、左上のセルの値(E2)として動作します。そのため、移動先に複数セルを指定する意味はありません。

このセル範囲をコピーする

このセル範囲をコピーするメソッドを説明します。

このセル範囲を指定した位置にコピーする:copyTo(destination)

このセル範囲を指定した位置にコピーする方法です。書式も値もコピーされます。

下記のように実行します。

下記のファイルで実行してみます。

実行結果は下記になります。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を指定します。

下記のように実行します。

下記のファイルで実行してみます。

実行結果は下記になります。transposedをtrueにしているため、B2:C3のセルが縦横を入れ替えて貼り付けられます。

コピー先に複数セル(E2:G4など)を指定した場合は、左上のセルの値(E2)として動作します。そのため、コピー先に複数セルを指定する意味はありません。

このセル範囲を指定した位置に指定したオプションでコピーする:copyTo(destination, options)

このセル範囲を指定した位置に指定したオプションでコピーする方法です。

optionsは、下記のいずれかを指定できます。何も指定しない場合は、書式も値もコピーされます。

指定する値方向
formatOnly書式のみをコピーする
contentsOnly値のみをコピーする

下記のように実行します。

下記のファイルで実行してみます。

実行結果は下記になります。formatOnlyをtrueにしているため、書式のみがコピーされます。

コピー先に複数セル(E2:G4など)を指定した場合は、左上のセルの値(E2)として動作します。そのため、コピー先に複数セルを指定する意味はありません。

このセル範囲の値を指定したシートの位置にコピーする(シートID指定):copyValuesToRange(gridId, column, columnEnd, row, rowEnd)

このセル範囲の値を指定した位置にコピーする方法です。コピー先のシートをシートIDで指定します。

gridIdにはコピー先のシートのシートIDを指定します。
そして何列目から何列目、何行目から何行目へコピーするかを残りの引数へ指定します。

コピー元よりコピー先のセル範囲の方が大きい場合は、コピー元の値を繰り返すかたちでコピーされます。コピー先の方が小さい場合は、切り捨ててコピーされます。

下記のように実行します。自分自身のシートを指定した例です。

下記のファイルで実行してみます。

実行結果は下記になります。コピー元の値を繰り返すかたちでコピーされます。

このセル範囲の値を指定したシートの位置にコピーする(シートクラス指定):copyValuesToRange(sheet, column, columnEnd, row, rowEnd)

このセル範囲の値を指定した位置にコピーする方法です。コピー先のシートをシートクラスで指定します。

gridIdにはコピー先のシートのシートクラスを指定します。
そして何列目から何列目、何行目から何行目へコピーするかを残りの引数へ指定します。

コピー元よりコピー先のセル範囲の方が大きい場合は、コピー元の値を繰り返すかたちでコピーされます。コピー先の方が小さい場合は、切り捨ててコピーされます。

下記のように実行します。自分自身のシートを指定した例です。

下記のファイルで実行してみます。

実行結果は下記になります。コピー元の値を繰り返すかたちでコピーされます。

このセル範囲の書式を指定したシートの位置にコピーする(シートID指定):copyFormatToRange(gridId, column, columnEnd, row, rowEnd)

このセル範囲の書式を指定した位置にコピーする方法です。コピー先のシートをシートIDで指定します。

gridIdにはコピー先のシートのシートIDを指定します。
そして何列目から何列目、何行目から何行目へコピーするかを残りの引数へ指定します。

コピー元よりコピー先のセル範囲の方が大きい場合は、コピー元の書式を繰り返すかたちでコピーされます。コピー先の方が小さい場合は、切り捨ててコピーされます。

下記のように実行します。自分自身のシートを指定した例です。

下記のファイルで実行してみます。

実行結果は下記になります。コピー元の書式を繰り返すかたちでコピーされます。

このセル範囲の書式を指定したシートの位置にコピーする(シートクラス指定):copyFormatToRange(sheet, column, columnEnd, row, rowEnd)

このセル範囲の書式を指定した位置にコピーする方法です。コピー先のシートをシートクラスで指定します。

sheetにはコピー先のシートのシートクラスを指定します。
そして何列目から何列目、何行目から何行目へコピーするかを残りの引数へ指定します。

コピー元よりコピー先のセル範囲の方が大きい場合は、コピー元の書式を繰り返すかたちでコピーされます。コピー先の方が小さい場合は、切り捨ててコピーされます。

下記のように実行します。自分自身のシートを指定した例です。

下記のファイルで実行してみます。

実行結果は下記になります。コピー元の書式を繰り返すかたちでコピーされます。

このセル範囲を削除する

このセル範囲を削除するメソッドを説明します。

このセル範囲の書式と値を削除する:clear()

このセル範囲の書式と値を削除する方法です。

下記のように実行します。

下記のファイルで実行してみます。

実行結果は下記になります。B2:C2のセルが削除されます。

このセル範囲を指定したオプションで削除する:clear(options)

このセル範囲を指定したオプションで削除する方法です。

optionsは、下記を指定できます。何も指定しない場合は、すべてのデータが削除されます。

指定する値方向
commentsOnlyコメントのみを削除する
contentsOnly値のみを削除する
formatOnly書式のみを削除する。
validationsOnlyデータの入力規則のみを削除する
skipFilteredRowsフィルタされた行を削除しない

下記のように実行します。

下記のファイルで実行してみます。

実行結果は下記になります。B2:C2のセルの書式のみが削除されます。

このセル範囲の値を削除する:clearContent()

このセル範囲の値を削除する方法です。

下記のように実行します。

下記のファイルで実行してみます。

実行結果は下記になります。B2:C2のセルの値が削除されます。

このセル範囲の書式を削除する:clearFormat()

このセル範囲の書式を削除する方法です。

下記のように実行します。

下記のファイルで実行してみます。

実行結果は下記になります。B2:C2のセルの書式が削除されます。

このセル範囲のメモを削除する:clearNote()

このセル範囲のメモを削除する方法です。

下記のように実行します。

下記のファイルで実行してみます。B2とC3にメモが挿入されています。

実行結果は下記になります。B2:C2のセルのメモが削除されます。

このセル範囲のデータの入力規則を削除する:clearDataValidations()

このセル範囲のデータの入力規則を削除する方法です。

下記のように実行します。

下記のファイルで実行してみます。下記のように、B2にはデータの入力規則が設定されています。

実行結果は下記になります。B2のデータの入力規則が削除されます。

まとめ

Google Apps Script (GAS) でこのセル範囲の移動・コピー・削除を行う方法を説明しました。

GASは無料で利用できてとても便利なツールです。

Googleスプレッドシート等のGoogleアプリケーションを利用されている方は、GASを習得することで作業を大きく効率化できます

GASの基本構文を知りたい方は、下記もご覧ください。