GoogleAppsScript

スプレッドシートでよく使うGAS関数一覧!具体例でわかる使い方

スプレッドシートを使ってデータ管理や計算をしていると、時には複雑な処理を行いたいと思うことがあるかもしれませんね。

そんなときに便利なのが「Google Apps Script(GAS)」です!

本記事では、初心者でも理解しやすいように、スプレッドシートでよく使う便利なGAS関数を一覧にして紹介しています。

それぞれの関数については具体的なスクリプトやテーブルを交えて解説しますので、ぜひご覧ください!

既に調べたい関数がある方は、下記の目次より見出しをクリックすれば解説までスキップできます

シート操作関数

スプレッドシートを操作する際に、シートの追加・削除、特定のシートを取得したりコピーしたりする必要があります。

ここでは、初心者でも理解しやすいように、具体的なスクリプトを交えてそれぞれの関数を解説します。

getSheetByName関数:シート名からシートを取得

getSheetByName関数は、指定したシート名に対応するシートを取得する際に使います。

これは、スプレッドシート内の特定のシートを操作したいときに非常に便利です。

具体的な例として、シート名が「データ」というシートを取得するスクリプトを紹介します。

  let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('データ');

getActiveSheet関数:アクティブなシートを取得

getActiveSheet関数は、現在アクティブになっているシートを取得するのに使います。

アクティブなシートとは、現在ユーザーが表示しているシートのことを指します。

具体的な例として、アクティブなシートの名前を取得するスクリプトを紹介します。

 let sheet = SpreadsheetApp.getActiveSheet();

insertSheet関数:新しいシートを挿入

insertSheet関数は、新しいシートを指定した位置に挿入する際に使用します。

これにより、スプレッドシートに新しいシートを作成できます。

具体的な例として、新しいシートをスプレッドシートの末尾に挿入するスクリプトを紹介します。

  let ss = SpreadsheetApp.getActiveSpreadsheet();
  ss.insertSheet(); // スプレッドシートの末尾に新しいシートを挿入

この例では、getActiveSpreadsheet()でアクティブなスプレッドシートを取得し、insertSheet()で新しいシートを末尾に挿入しています。

deleteSheet関数:シートを削除

deleteSheet関数は、指定したシートを削除する際に使用します。注意が必要であり、一度削除すると元に戻すことはできないので注意してください。

具体的な例として、シート名が「古いデータ」というシートを削除するスクリプトを紹介します。

  let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('古いデータ');
  if (sheet) {
    SpreadsheetApp.getActiveSpreadsheet().deleteSheet(sheet); // シートを削除
  } else {
    Logger.log("シートが見つかりませんでした。");
  }

この例では、getSheetByName(‘古いデータ’)で「古いデータ」という名前のシートを取得し、シートが存在すればdeleteSheet(sheet)でそのシートを削除しています。

copyTo関数:シートのコピーを作成

copyTo関数は、指定したシートを別のスプレッドシートにコピーする際に使用します。

これにより、同じ内容のシートを別のスプレッドシートに簡単に作成できます。

具体的な例として、現在のシートを新しいスプレッドシートにコピーするスクリプトを紹介します。

  let sourceSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  let newSpreadsheet = SpreadsheetApp.create('新しいスプレッドシート');
  sourceSheet.copyTo(newSpreadsheet);

この例では、getActiveSheet()でアクティブなシートを取得し、create(‘新しいスプレッドシート’)で新しいスプレッドシートを作成し、copyTo(newSpreadsheet)でアクティブなシートを新しいスプレッドシートにコピーしています。

セル操作関数

スプレッドシートのセルを操作する際によく使われるセル操作関数について、初心者でも理解しやすいように具体的なスクリプトを交えて解説します。

これらの関数を使うことで、スプレッドシート内のデータを簡単に取得・設定・クリア・装飾することができます。

テーブル情報

以下のようなテーブル情報を想定します。スプレッドシートのシート名は「SampleSheet」とします。セル範囲はA1からD5までのセルに配置されています。

ABCD
Apple100RedJapan
Banana150YellowBrazil
Orange120OrangeSpain
Grape200PurpleItaly
Peach180PinkFrance

getRange関数:セル範囲を取得

getRange関数は、指定したセル範囲を取得するための関数です。

例えば、A1セルからB5セルまでの範囲を取得したい場合は次のようなスクリプトを使います。

サンプルスクリプト

  let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('SampleSheet');
  let range = sheet.getRange('A1:B5');
  Logger.log(range.getValues()); // 取得したセル範囲の値をログに表示

実行結果

[  [ 'Apple', 100 ],
  [ 'Banana', 150 ],
  [ 'Orange', 120 ],
  [ 'Grape', 200 ],
  [ 'Peach', 180 ]
]

getValue関数:セルの値を取得

getValues関数は、指定した複数のセルの値を一度に取得するための関数です。

例えば、A1セルからB5セルまでの値を一度に取得したい場合は次のようになります。

サンプルスクリプト

  let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('SampleSheet');
  let range = sheet.getRange('A1:B5');
  let cellValues = range.getValues();
  Logger.log(cellValues); // A1セルからB5セルまでの値をログに表示

実行結果

[  [ 'Apple', 100 ],
  [ 'Banana', 150 ],
  [ 'Orange', 120 ],
  [ 'Grape', 200 ],
  [ 'Peach', 180 ]
]

setValue関数:セルに値を設定

setValues関数は、指定した複数のセルに一度に値を設定するための関数です。

例えば、A6セルからB7セルまでに2次元配列の値を一度に設定したい場合は次のようになります。

サンプルスクリプト

  let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('SampleSheet');
  sheet.getRange('C3').setValue('Hello, World!');

実行結果

C3セルに「Hello, World!」が設定されます。

setValues関数:複数セルに値を設定

setValues関数は、指定した複数のセルに一度に値を設定するための関数です。

例えば、A6セルからB7セルまでに2次元配列の値を一度に設定したい場合は次のようになります。

サンプルスクリプト

  let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('SampleSheet');
  let valuesToSet = [
    ['Cherry', 130, 'Red', 'USA'],
    ['Lemon', 90, 'Yellow', 'Mexico']
  ];
  let range = sheet.getRange('A6:D7');
  range.setValues(valuesToSet);

実行結果

A6セルからB7セルまでに2次元配列の値が設定されます。

clearContent関数:セルの内容をクリア

clearContent関数は、指定したセルの値や書式をクリアするための関数です。

例えば、E1セルの内容をクリアしたい場合は次のようになります。

サンプルスクリプト

  let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('SampleSheet');
  sheet.getRange('E1').clearContent();

実行結果

E1セルの内容がクリアされます。

setBackground関数:セルの背景色を変更

setBackground関数は、指定したセルの背景色を変更するための関数です。

例えば、A1からB2までのセルの背景色を青に変更したい場合は次のようになります。

スクリプト

  let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('SampleSheet');
  let range = sheet.getRange('A1:B2');
  range.setBackground('blue');

実行結果

A1からB2までのセルの背景

データ操作関数

テーブル情報

以下のようなテーブル情報を想定します。スプレッドシートのシート名は「SalesData」とします。セル範囲はA1からC5までのセルに配置されています。

ABC
ProductQuantityPrice
Apple10100
Orange15120
Banana20150
Grapes12200

appendRow関数:行を最後に追加

appendRow関数は、指定した行を最後に追加するための関数です。

例えば、新しい行として”Mango”、25、180のデータを追加したい場合は次のようになります

スクリプト

  let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('SalesData');
  sheet.appendRow(['Mango', 25, 180]);

実行結果

|   A       |   B        |   C       |
|-----------|-----------|-----------|
|  Product  |  Quantity |  Price    |
| Apple     |    10     |   100     |
| Orange    |    15     |   120     |
| Banana    |    20     |   150     |
| Grapes    |    12     |   200     |
| Mango     |    25     |   180     |

insertRowBefore関数:指定した行の前に行を挿入

insertRowBefore関数は、指定した行の前に新しい行を挿入するための関数です。

例えば、3行目の前に新しい行を挿入したい場合は次のようになります。

サンプルスクリプト

  let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('SalesData');
  sheet.insertRowBefore(3); // 3行目の前に新しい行が挿入される

実行結果

3行目の前に新しい行が挿入されます。

|   A       |   B        |   C       |
|-----------|-----------|-----------|
|  Product  |  Quantity |  Price    |
| Apple     |    10     |   100     |
|           |           |           |  ← 新しい行
| Orange    |    15     |   120     |
| Banana    |    20     |   150     |
| Grapes    |    12     |   200     |

deleteRow関数:指定した行を削除

deleteRow関数は、指定した行を削除するための関数です。

例えば、2行目を削除したい場合は次のようになります。

スクリプト

  let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('SalesData');
  sheet.deleteRow(2); // 2行目が削除される

実行結果

2行目が削除されます。

|   A       |   B        |   C       |
|-----------|-----------|-----------|
|  Product  |  Quantity |  Price    |
| Orange    |    15     |   120     |
| Banana    |    20     |   150     |
| Grapes    |    12     |   200     |

appendColumn関数:列を最後に追加

appendColumn関数は、指定した列を最後に追加するための関数です。

例えば、新しい列として”Total”のデータを追加したい場合は次のようになります。

スクリプト

  let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('SalesData');
  sheet.appendColumn([1000, 1800, 3000, 2400]);

実行結果

最終列に新しい列が追加されます。

|   A       |   B        |   C       |   D   |
|-----------|-----------|-----------|-------|
|  Product  |  Quantity |  Price    | Total |
| Apple     |    10     |   100     | 1000  |
| Orange    |    15     |   120     | 1800  |
| Banana    |    20     |   150     | 3000  |
| Grapes    |    12     |   200     | 2400  |

deleteColumn関数:指定した列を削除

deleteColumn関数は、指定した列を削除するための関数です。

例えば、2列目を削除したい場合は次のようになります。

スクリプト

  let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('SalesData');
  sheet.deleteColumn(2); // 2列目が削除される

実行結果

2列目が削除されます。

|   A       |   C       |   D   |
|-----------|-----------|-------|
|  Product  |  Price    | Total |
| Apple     |   100     | 1200  |
| Orange    |   120     | 1800  |
| Banana    |   150     | 3000 |

データの取得・検索関数

テーブル情報

以下のようなテーブル情報を想定します。スプレッドシートのシート名は「SalesData」とします。セル範囲はA1からC7までのセルに配置されています。

ABC
ProductQuantityPrice
Apple10100
Orange15120
Banana20150
Grapes12200
Apple895
Peach5180

getDataRange関数:データの範囲を取得

getDataRange関数は、データが入力されている範囲を取得するための関数です。

例えば、SalesDataシートに入力されているデータの範囲を取得したい場合は次のようなスクリプトを使います。

スクリプト

  let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('SalesData');
  let dataRange = sheet.getDataRange();
  Logger.log(dataRange.getValues()); // データの範囲をログに表示

実行結果

[  [ 'Product', 'Quantity', 'Price' ],
  [ 'Apple', 10, 100 ],
  [ 'Orange', 15, 120 ],
  [ 'Banana', 20, 150 ],
  [ 'Grapes', 12, 200 ],
  [ 'Apple', 8, 95 ],
  [ 'Peach', 5, 180 ]
]

createTextFinder関数:テキスト検索を行う

createTextFinder関数は、指定したテキストを検索するための検索オブジェクトを作成する関数です。

例えば、SalesDataシートに「Apple」というテキストを検索したい場合は次のようなスクリプトを使います。

サンプルスクリプト

  let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('SalesData');
  let textFinder = sheet.createTextFinder('Apple');
  let matches = textFinder.findAll();
  Logger.log(matches.map(function(match) { return match.getValue(); })); // 検索結果をログに表示

実行結果

[ 'Apple', 10, 100 ]
[ 'Apple', 8, 95 ]

getRowByKeyValue関数:特定のキーと値に一致する行を取得

getRowByKeyValue関数は、特定のキーと値に一致する行を取得するための関数です。

例えば、SalesDataシートから「Product」列が「Peach」という値に一致する行を取得したい場合は次のようなスクリプトを使います。

サンプルスクリプト

  let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('SalesData');
  let data = sheet.getDataRange().getValues();
  let keyColumnIndex = 0; // Product列が0番目の列(A列)にあると仮定
  let searchValue = 'Peach';
  
  for (let i = 1; i < data.length; i++) {
    if (data[i][keyColumnIndex] === searchValue) {
      Logger.log(data[i]);
    }
  }

実行結果

[ 'Peach', 5, 180 ]

データのソートとフィルタリング関数

テーブル情報

以下のようなテーブル情報を想定します。スプレッドシートのシート名は「SalesData」とします。セル範囲はA1からC8までのセルに配置されています。

ABC
ProductQuantityPrice
Apple10100
Orange15120
Banana20150
Grapes12200
Apple895
Peach5180
Orange18110

sort関数:データをソートする

sort関数は、指定した列を基準にデータをソートするための関数です。

例えば、Product列を昇順にソートしたい場合は次のようなスクリプトを使います。

サンプルスクリプト

  let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('SalesData');
  sheet.getRange('A2:C8').sort(1); // 1列目(Product列)を昇順でソート

実行結果

|   A       |   B        |   C       |
|-----------|-----------|-----------|
|  Product  |  Quantity |  Price    |
|  Apple    |    10     |   100     |
|  Apple    |    8      |   95      |
|  Banana   |    20     |   150     |
|  Grapes   |    12     |   200     |
|  Orange   |    15     |   120     |
|  Orange   |    18     |   110     |
|  Peach    |    5      |   180     |

sortRange関数:特定範囲内のデータをソートする

sortRange関数は、指定した範囲内のデータをソートするための関数です。

例えば、Quantity列を降順にソートしたい場合は次のようなスクリプトを使います。

サンプルスクリプト

  let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('SalesData');
  let textFinder = sheet.createTextFinder('Apple');
  let matches = textFinder.findAll();
  Logger.log(matches.map(function(match) { return match.getValue(); })); // 検索結果をログに表示

実行結果

|   A       |   B        |   C       |
|-----------|-----------|-----------|
|  Product  |  Quantity |  Price    |
|  Banana   |    20     |   150     |
|  Orange   |    18     |   110     |
|  Orange   |    15     |   120     |
|  Grapes   |    12     |   200     |
|  Apple    |    10     |   100     |
|  Apple    |    8      |   95      |
|  Peach    |    5      |   180     |

setColumnFilterCriteria関数:列のフィルタリングを設定

setColumnFilterCriteria関数は、指定した列にフィルタリングを設定するための関数です。

例えば、Price列に100より大きい値のフィルターをかけたい場合は次のようなスクリプトを使います。

サンプルスクリプト

  let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('SalesData');
  let range = sheet.getRange('A1:C8');
  let columnIndex = 2; // Price列が2番目の列(C列)にあると仮定
  let filterCriteria = SpreadsheetApp.newFilterCriteria().whenNumberGreaterThan(100).build();
  sheet.getFilter().setColumnFilterCriteria(columnIndex, filterCriteria);

実行結果

Price列に100より大きい値のフィルターがかかります。

|   A       |   B        |   C       |
|-----------|-----------|-----------|
|  Product  |  Quantity |  Price    |
| Banana    |    20     |   150     |
| Grapes    |    12     |   200     |
| Orange    |    18     |   110     |
| Peach     |    5      |   180     |

最後に

いかがでしたでしょうか?スプレッドシートのGAS関数を使って、データの取得・設定・クリア・ソートなど、さまざまな操作が可能になることをご理解いただけたでしょうか。

GASは非常にパワフルで、さまざまな使い方があります。

ぜひこれらの基本的な関数をマスターして、自分のスプレッドシートをより便利に、効率的に活用してみてください!