GASでスプレッドシートの手作業を自動化する最初の一歩
この記事で得られること
「毎回同じ作業をスプレッドシートで手動でやっている」
そんな状況をGoogle Apps Script(GAS)で自動化する方法を、最小限のコードで解説します。
プログラミング経験がある方ならこの記事の内容は30分もあれば試せます。
GASを触ったことがなくても大丈夫です。
この記事では以下の3つだけに絞って説明します。
スプレッドシートのデータを読み書きする基本コード
ワンクリックで実行できるカスタムメニューの作り方
毎日・毎週の自動実行を設定するトリガー
この3つが使えるだけで、日常の手作業はかなり減ります。
そもそもGASって何?
Google Apps Script(GAS)は、Googleが提供しているスクリプト環境です。
スプレッドシート、Gmail、Googleドライブなど、Googleのサービスをプログラムから操作できます。
エンジニアにとっての嬉しいポイントは以下の通りです。
環境構築が不要。ブラウザだけで書いて動かせる
JavaScriptベース。新しい言語を覚える必要がほぼない
無料。Googleアカウントがあれば誰でも使える
外部APIも叩ける。`UrlFetchApp`でHTTPリクエストを投げられる
特に最後の「外部APIを叩ける」のが強力で、スプレッドシートを簡易的なダッシュボードやデータ収集ツールに変えることができます。
準備:スクリプトエディタを開く
Googleスプレッドシートを開く(新規でも既存でもOK)
メニューバーの「拡張機能」→「Apps Script」をクリック
スクリプトエディタが別タブで開く
これだけです。IDEのインストールも、パッケージマネージャーも要りません。
基本① シートのデータを読み書きする
データを読む
まずスプレッドシートからデータを取得する基本形です。
function readData() {
// アクティブなスプレッドシートを取得
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
// A1セルの値を取得
const singleValue = sheet.getRange('A1').getValue();
Logger.log('A1の値: ' + singleValue);
// A1:C10の範囲を二次元配列で取得
const rangeValues = sheet.getRange('A1:C10').getValues();
Logger.log('取得した行数: ' + rangeValues.length);
// 各行をループ処理
rangeValues.forEach((row, index) => {
Logger.log(`行${index + 1}: ${row[0]}, ${row[1]}, ${row[2]}`);
});
}ポイントはgetValues()が二次元配列を返すことです。row[0]がA列、row[1]がB列に対応します。
データを書く
function writeData() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
// 単一セルに書き込み
sheet.getRange('A1').setValue('こんにちは');
// 複数セルに一括書き込み(二次元配列で渡す)
const data = [
['商品A', 1000, '在庫あり'],
['商品B', 2500, '在庫なし'],
['商品C', 800, '在庫あり']
];
sheet.getRange(2, 1, data.length, data[0].length).setValues(data);
}setValues()で一括書き込みするのが大事です。
1セルずつsetValue()を呼ぶとセルの数だけAPIコールが走って非常に遅くなります。
読み書きはなるべくまとめてやる
これはGAS開発で最初に覚えるべき鉄則です。
基本② カスタムメニューを作る
スクリプトを毎回エディタから実行するのは面倒です。
スプレッドシートのメニューバーに自分用のメニューを追加しましょう。
function onOpen() {
const ui = SpreadsheetApp.getUi();
ui.createMenu('自動化ツール')
.addItem('データを読み込む', 'readData')
.addItem('データを書き込む', 'writeData')
.addSeparator()
.addItem('シートをクリア', 'clearSheet')
.addToUi();
}
function clearSheet() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const lastRow = sheet.getLastRow();
if (lastRow > 1) {
sheet.getRange(2, 1, lastRow - 1, sheet.getLastColumn()).clearContent();
}
}onOpen()はGASの特殊関数でスプレッドシートを開いたときに自動実行されます。
この中でcreateMenu()を呼べば、メニューバーに「自動化ツール」という項目が表示されます。
clearSheet()のように、1行目(ヘッダー)を残して中身だけクリアする関数を用意しておくと、繰り返し使うツールとして便利です。

基本③ トリガーで自動実行する
「毎朝9時にデータを更新したい」「毎週月曜にレポートを生成したい」
こうした定期実行はGASのトリガーで実現できます。
GUIから設定する方法
スクリプトエディタの左メニュー「トリガー」(時計アイコン)をクリック
「トリガーを追加」をクリック
実行する関数・実行タイミングを選ぶ

コードから設定する方法
/**
* トリガーをコードで設定する(初回1回だけ実行すればOK)
*/
function createDailyTrigger() {
// 既存の同名トリガーを削除(重複防止)
const triggers = ScriptApp.getProjectTriggers();
triggers.forEach(trigger => {
if (trigger.getHandlerFunction() === 'readData') {
ScriptApp.deleteTrigger(trigger);
}
});
// 毎日午前9時に実行
ScriptApp.newTrigger('readData')
.timeBased()
.everyDays(1)
.atHour(9)
.create();
Logger.log('トリガーを設定しました');
}注意点としてGASのトリガーには実行時間の上限があります。
無料のGoogleアカウントでは1回の実行が6分まで。
大量データを処理する場合は、処理を分割する工夫が必要です。
実践例:データ整形の自動化
ここまでの基本を組み合わせたちょっとした実践例です。
「B列に入っている金額データに通貨記号が混ざっていて、数値として扱えない」
こんな状況をGASで一括クリーニングします。
/**
* B列の金額データから通貨記号を除去して数値に変換
*/
function cleanPriceColumn() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const lastRow = sheet.getLastRow();
if (lastRow < 2) return; // データがなければ終了
// B2:B列のデータを一括取得
const range = sheet.getRange(2, 2, lastRow - 1, 1);
const values = range.getValues();
// クリーニング処理
const cleaned = values.map(row => {
const raw = String(row[0]);
// ¥, $, €, カンマ, スペースを除去して数値化
const num = parseFloat(raw.replace(/[¥$€,\s]/g, ''));
return [isNaN(num) ? row[0] : num]; // 変換失敗時は元の値を残す
});
// 一括書き戻し
range.setValues(cleaned);
Logger.log(`${cleaned.length}行のデータをクリーニングしました`);
}ポイントはisNaN()でのガード処理です。
想定外のデータが混ざっていても元の値を保持するので安心して実行できます。
まとめ
この記事で紹介した3つの基本
データの読み書き
カスタムメニュー
トリガー
だけで日常的なスプレッドシート作業のかなりの部分を自動化できます。
特に覚えておきたいのは以下の点です。
getValues() / setValues()で一括処理する(1セルずつの操作は遅い)
onOpen()でカスタムメニューを作ればエディタを開かずに実行できる
トリガーを使えば完全自動化も可能
次のステップとしてGASの本当に強力な部分は外部APIとの連携です。UrlFetchAppを使えばスプレッドシートを起点にしてあらゆる外部サービスのデータを取得・操作できるようになります。
次の記事ではGASから外部APIを叩く基本パターンと認証の考え方を解説しています!
このnoteでは副業・自動化の実践過程を発信しています。
外部API連携の実践例としてeBay APIとGASを組み合わせたリサーチ自動化ツールの作り方も公開しています。
