GAS入門 2025.11.08

GASでスプレッドシートを自動化する
基本的な方法

1. はじめに

Googleスプレッドシートは、多くの人が日常的に使っているツールです。 しかし、毎日同じような作業を繰り返していませんか? GASを使えば、そんな単純作業を自動化できます。

この記事では、GASでスプレッドシートを操作する基本的な方法を解説します。 データの読み取りから書き込み、ループ処理まで、実践的なコード例とともに紹介します。

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

まず、操作対象のスプレッドシートを取得する方法を覚えましょう。 GASでは、いくつかの方法でスプレッドシートにアクセスできます。

方法1: アクティブなスプレッドシートを取得

スプレッドシートに紐づいたスクリプト(コンテナバインドスクリプト)の場合、 以下のコードで現在のスプレッドシートを取得できます。

function getActiveSpreadsheet() {
  // アクティブなスプレッドシートを取得
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  
  // アクティブなシートを取得
  const sheet = ss.getActiveSheet();
  
  console.log('スプレッドシート名: ' + ss.getName());
  console.log('シート名: ' + sheet.getName());
}

方法2: IDを指定して取得

スタンドアロンスクリプトの場合や、別のスプレッドシートを操作したい場合は、 スプレッドシートのIDを指定して取得します。

function getSpreadsheetById() {
  // スプレッドシートのIDを指定して取得
  // IDはURLの「/d/」と「/edit」の間の文字列です
  const ss = SpreadsheetApp.openById('ここにスプレッドシートIDを入力');
  const sheet = ss.getSheetByName('シート1');
  
  console.log('シート名: ' + sheet.getName());
}

3. データを読み取る

スプレッドシートからデータを読み取る方法を解説します。

単一セルの値を取得

function readSingleCell() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  
  // A1セルの値を取得
  const value = sheet.getRange('A1').getValue();
  console.log('A1の値: ' + value);
  
  // 行・列番号で指定(1行目、1列目)
  const value2 = sheet.getRange(1, 1).getValue();
  console.log('1行1列の値: ' + value2);
}

範囲のデータを取得

function readMultipleCells() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  
  // A1:C3の範囲を取得(2次元配列で返される)
  const values = sheet.getRange('A1:C3').getValues();
  
  // 取得したデータをログ出力
  for (let i = 0; i < values.length; i++) {
    console.log('行' + (i + 1) + ': ' + values[i].join(', '));
  }
}

4. データを書き込む

データの書き込み方法を解説します。

単一セルに書き込む

function writeSingleCell() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  
  // A1セルに値を書き込む
  sheet.getRange('A1').setValue('Hello, GAS!');
  
  // 行・列番号で指定して書き込む
  sheet.getRange(2, 1).setValue('2行目のデータ');
}

複数セルに一括書き込み

function writeMultipleCells() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  
  // 書き込むデータ(2次元配列)
  const data = [
    ['名前', '年齢', '都市'],
    ['田中', 25, '東京'],
    ['佐藤', 30, '大阪'],
    ['鈴木', 28, '名古屋']
  ];
  
  // A1から始まる範囲に一括書き込み
  sheet.getRange(1, 1, data.length, data[0].length).setValues(data);
}

5. ループ処理で複数行を処理する

実務では、大量のデータを処理することが多いです。 ループ処理を使って、効率的にデータを処理しましょう。

function processAllRows() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  
  // データがある最終行を取得
  const lastRow = sheet.getLastRow();
  
  // A列のデータを取得(2行目から最終行まで、1行目はヘッダーと想定)
  const data = sheet.getRange(2, 1, lastRow - 1, 3).getValues();
  
  // 各行を処理
  for (let i = 0; i < data.length; i++) {
    const name = data[i][0];
    const age = data[i][1];
    const city = data[i][2];
    
    console.log(name + 'さんは' + age + '歳、' + city + '在住です。');
  }
}

6. 実践例:データ集計スクリプト

最後に、実践的な例として、売上データを集計するスクリプトを作成してみましょう。

function calculateSales() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const lastRow = sheet.getLastRow();
  
  // B列(売上金額)のデータを取得
  const salesData = sheet.getRange(2, 2, lastRow - 1, 1).getValues();
  
  // 合計を計算
  let total = 0;
  for (let i = 0; i < salesData.length; i++) {
    total += salesData[i][0];
  }
  
  // 結果を出力
  console.log('売上合計: ' + total + '円');
  
  // 集計結果をシートに書き込む
  sheet.getRange(lastRow + 2, 1).setValue('合計');
  sheet.getRange(lastRow + 2, 2).setValue(total);
}

この記事で紹介した基本操作を組み合わせれば、 様々な業務の自動化が可能になります。 ぜひ、日々の作業で活用してみてください。

Seaside Lab

Seaside Lab

AIとWeb技術を活用したサービス開発を行っています。

ブログ一覧へ戻る