Google Apps Script でのスプレッドシート操作特集

Google Apps Script(GAS)を使うと、Google スプレッドシート内の操作を自動化することができます。この記事では、初心者向けにスプレッドシート操作に焦点を当て、基本的な機能から実用的なスクリプトまでを特集します。


1. スプレッドシートの基本操作

スプレッドシートを取得する

まずは、スプレッドシート全体や特定のシートにアクセスする方法を確認しましょう。

function getSpreadsheet() {
  // 現在のスプレッドシートを取得
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();

  // シート名を取得
  Logger.log(spreadsheet.getName());

  // アクティブなシート(現在開いているシート)を取得
  var sheet = spreadsheet.getActiveSheet();
  Logger.log(sheet.getName());
}

上記のスクリプトでは、現在開いているスプレッドシートとシートの名前を取得します。Logger.log()はスクリプトエディタで実行結果を確認するための関数です。

新しいシートを追加する

既存のスプレッドシートに新しいシートを追加する方法です。

function addNewSheet() {
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();

  // "New Sheet" という名前の新しいシートを追加
  spreadsheet.insertSheet('New Sheet');
}

新しいシートが作成され、指定した名前がそのシートに設定されます。

2. セルの操作

スプレッドシートのセルにアクセスしてデータを読み書きする方法を見ていきましょう。

セルにデータを書き込む

function writeDataToCell() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  // A1セルにデータを書き込む
  sheet.getRange('A1').setValue('Hello, World!');
}

このスクリプトは、アクティブなシートのA1セルに「Hello, World!」というテキストを入力します。

セルからデータを読み込む

セルに既に入力されているデータを取得することもできます。

function readDataFromCell() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  // A1セルのデータを読み込む
  var value = sheet.getRange('A1').getValue();
  Logger.log(value);
}

このスクリプトは、A1セルにあるデータを取得し、ログに表示します。

複数のセルにデータを書き込む

範囲を指定して、複数のセルに一度にデータを書き込むことも可能です。

function writeMultipleCells() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  // A1からB2までの範囲にデータを書き込む
  sheet.getRange('A1:B2').setValues([
    ['Name', 'Age'],
    ['John', 25]
  ]);
}

このスクリプトでは、A1からB2の範囲に「Name」「Age」「John」「25」というデータが書き込まれます。

3. 行や列の操作

スプレッドシートでは、行や列の挿入や削除といった操作も自動化できます。

行を挿入する

例えば、シートの上部に新しい行を挿入するには以下のようにします。

function insertRow() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  // 1行目に新しい行を挿入
  sheet.insertRowBefore(1);
}

列を削除する

不要な列を削除することも可能です。

function deleteColumn() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  // 1列目を削除
  sheet.deleteColumn(1);
}

4. 条件付き書式の設定

条件に応じてセルの書式を自動的に設定することもできます。たとえば、特定の条件を満たすデータに色をつける場合の例を紹介します。

function setConditionalFormatting() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  // 範囲A1:A10に対して条件付き書式を設定
  var range = sheet.getRange('A1:A10');

  // 10より大きい値を持つセルを赤くする
  var rule = SpreadsheetApp.newConditionalFormatRule()
    .whenNumberGreaterThan(10)
    .setBackground('#FF0000')  // 背景色を赤に設定
    .setRanges([range])
    .build();

  var rules = sheet.getConditionalFormatRules();
  rules.push(rule);
  sheet.setConditionalFormatRules(rules);
}

このスクリプトは、範囲A1:A10のセルに対し、値が10より大きい場合にセルの背景色を赤に設定します。

5. フィルターと並び替え

スプレッドシート内のデータを自動的に並び替えたり、フィルターを適用したりすることができます。

データを並び替える

function sortData() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  // 範囲A1:B10のデータをA列(1列目)の昇順で並び替え
  sheet.getRange('A1:B10').sort({column: 1, ascending: true});
}

このスクリプトは、A列のデータに基づいて範囲A1:B10を昇順で並び替えます。

フィルターを適用する

フィルター機能を使って、データの中から特定の条件に合致するものだけを表示することもできます。

function applyFilter() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  // 1行目にフィルターを適用
  sheet.getRange(1, 1, sheet.getMaxRows(), sheet.getMaxColumns()).createFilter();

  // フィルター条件を設定(A列が"John"の行だけ表示)
  var filter = sheet.getFilter();
  filter.setColumnFilterCriteria(1, SpreadsheetApp.newFilterCriteria().whenTextContains('John'));
}

6. 実用的なシート操作の例

スプレッドシートに毎日のデータを追加

毎日、新しい行にデータを追加するスクリプトを作成してみましょう。

function addDailyData() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  // 最終行の次の行に日付とデータを追加
  var lastRow = sheet.getLastRow();
  sheet.getRange(lastRow + 1, 1).setValue(new Date());  // A列に日付を追加
  sheet.getRange(lastRow + 1, 2).setValue('自動データ');  // B列にデータを追加
}

このスクリプトは、スプレッドシートの最終行の次に日付と指定したデータを自動的に追加します。

まとめ

Google Apps Script を使うと、スプレッドシートの操作を自動化して効率的に管理できます。データの読み書き、行や列の操作、条件付き書式やフィルターの設定など、多くの機能があり、手作業を大幅に削減できます。まずは簡単なスクリプトから始め、少しずつ複雑な処理に挑戦してみてください。
「A script a day grows your productivity!」

この記事が気に入ったらサポートをしてみませんか?