※本ページはプロモーション(広告)を含みます。
ITスキル・業務自動化GASでスプレッドシートの定型作業を自動化する手順|エディタ起動からトリガー設定まで
Google Apps Script(GAS)を使い、スプレッドシートの定型作業を自動化する手順をゼロから解説。エディタの開き方、基本構文、承認プロセスの進め方、実用的なコード例、タイマー実行のトリガー設定までよくわかります。
Google スプレッドシートを使った毎日の集計作業やデータ転記、定型データの作成など、手作業で行うルーティンワークに時間を取られていないでしょうか。
こうした業務を自動化する最も身近で強力なツールが、Googleが提供する「Google Apps Script(通称:GAS)」です。特別な開発環境の構築が不要で、ブラウザとGoogleアカウントさえあれば今すぐ無料で使い始められます。
この記事では、GASを使ってスプレッドシートの作業を自動化する基本的な手順をわかりやすく解説します。エディタの開き方から、コードの基本的なルール、初回実行時に必要な「承認手続き」、実用的なサンプルコード、そして自動実行を実現する「トリガー設定」までを網羅しています。
なお、業務自動化の全体像やスキルの習得計画については、社会人のための学び直し全体ガイドも参考にしてください。他ツールとの使い分けに迷う場合は、ノーコード自動化ツールの選び方や非エンジニアのためのPython業務自動化入門で詳しく比較・解説しています。
1. Google Apps Script(GAS)の基本と自動化のメリット
Google Apps Script(GAS)とは、Googleが提供しているJavaScriptベースのプログラミング環境です。Google スプレッドシートをはじめ、Google ドキュメント、Gmail、Google ドライブなどのGoogle Workspace各種サービスと連携して操作できます。
GASを使う3つのメリット
- 環境構築が不要(無料・ブラウザで完結) プログラミングを始める際に障壁となる「開発環境のインストール」が一切不要です。Google アカウント(2026年時点でも基本無料)があれば、ブラウザ上でエディタを開いてすぐにプログラムを書き始められます。
- Google Workspace連携が容易 スプレッドシートのデータを読み取り、条件に合致したものだけをGmailで自動送信する、といった複数サービスを跨いだ連携が数行のコードで実現できます。
- サーバー不要で「全自動実行」ができる 自分のパソコンの電源を切っていても、Googleのサーバー上で指定した時間(「毎朝9時」など)にプログラムを自動起動させることができます。
2. Apps Scriptエディタの開き方と画面構成
GASのプログラムは、Google スプレッドシートに紐づく「コンテナバインドスクリプト」として作成するのが最も簡単です。
エディタの開き方(3ステップ)
- 対象のスプレッドシートを開く 自動化したいスプレッドシート(または新規作成したシート)をGoogle Chrome等のブラウザで開きます。
- メニューからApps Scriptを起動する 上部メニューの「拡張機能」>「Apps Script」をクリックします。
- エディタ画面が表示される 新しいタブで「無題のプロジェクト」というタイトルのGASエディタ画面が開きます。
画面の主な構成要素
エディタ画面は以下のような配置になっています。
| 画面エリア | 位置 | 主な機能・役割 |
|---|---|---|
| 左側メニューバー | 左端の縦アイコン | エディタ画面、実行数(ログ)、トリガー(自動実行設定)、プロジェクト設定の切り替え |
| ファイル一覧 | メニューのすぐ右 | プロジェクト内のコードファイル(コード.gs)やHTMLファイルを管理する |
| コードエディタ | 中央の広大な領域 | 実際のプログラム(スクリプト)を入力・編集する場所 |
| 実行コントロール | 画面上部 | 実行する関数(処理)の選択、「デバッグ」「実行」ボタンの配置 |
| 実行ログ | 下部(実行時表示) | プログラムの実行結果やエラー内容を表示する領域 |
まずはプロジェクト名を分かりやすい名称(例:「売上データ自動集計」など)に変更しておきましょう。画面左上の「無題のプロジェクト」をクリックすると名前を変更できます。
3. GASの基本構文とスプレッドシート操作のルール
GASはJavaScriptというプログラミング言語をベースにしています。基本の書き方と、スプレッドシートを操作するための独特のルール(オブジェクト構造)を押さえましょう。
プログラムの最小単位「関数(function)」
GASでは、処理のまとまりを「function 関数名() { ... }」という形式で記述します。
function myFirstFunction() {
// ここに行わせたい処理を書きます
}
//の後ろに書いた文字は「コメント」となり、処理として実行されません。メモ書きとして活用します。- 処理の最後には文末を表すセミコロン
;をつけるのが基本のルールです。
スプレッドシートを操作する4ステップの階層構造
スプレッドシート上のデータを読み書きするには、以下の階層順にアクセスする必要があります。
- アプリ全体(
SpreadsheetApp) - ファイル(ファイル=スプレッドシート:
Spreadsheet) - シート(タブ=ワークシート:
Sheet) - セル範囲(セル=レンジ:
Range)
これをコードで表現すると、次のようになります。
function readCellExample() {
// 1. 現在開いているスプレッドシートを取得
var ss = SpreadsheetApp.getActiveSpreadsheet();
// 2. アクティブな(開いている)シートを取得
var sheet = ss.getActiveSheet();
// 3. A1セルを指定(Rangeの取得)
var range = sheet.getRange("A1");
// 4. セルの値(Value)を取得
var value = range.getValue();
// ログ出力(確認用)
Logger.log(value);
}
ポイント:セルの指定方法(2通りの書き方)
セルを指定する getRange() には、主に2つの書き方があります。
- A1表記で指定する場合:
sheet.getRange("A1")やsheet.getRange("B2:C10") - 行・列の番号で指定する場合:
sheet.getRange(row, column)- 例:
sheet.getRange(1, 1)→ 1行目・1列目(A1セル) - 例:
sheet.getRange(2, 3)→ 2行目・3列目(C2セル)
- 例:
繰り返し処理を行う場合は、数値で指定できる行・列番号形式が非常に便利です。
4. 【実践】最初の自動化コードを作成して実行する手順
ここでは「A1セルに今日の日付と実行完了メッセージを書き込む」という簡単なスクリプトを作成し、実行する手順を解説します。
ステップ1:エディタにコードを貼り付ける
既存の function myFunction() {} を消去し、以下のコードを貼り付けてください。
function writeTodayMessage() {
// スプレッドシートとシートを取得
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
// 本日の日付を取得してフォーマットを整える
var today = new Date();
// A1セルにテキストを入力
sheet.getRange("A1").setValue("処理実行日時:" + today);
// B1セルに完了メッセージを入力
sheet.getRange("B1").setValue("自動化スクリプトの実行に成功しました");
}
コードを入力したら、上部の「保存アイコン(フロッピーディスクのマーク)」を押すか、キーボードの Ctrl + S(Macは Cmd + S)で保存します。
ステップ2:「実行」ボタンを押す
- 画面上部の「実行する関数を選択」ドロップダウンで
writeTodayMessageが選ばれていることを確認します。 - その左横にある「実行」ボタンをクリックします。
ステップ3:初回実行時の「承認手続き(アクセス権の許可)」
スクリプトを初めて実行する際、Googleアカウントのセキュリティ保護のため「承認が必要です」というポップアップが表示されます。故障やエラーではないので、以下の順序でアクセスを許可してください。
- ポップアップ画面の「権限を確認」をクリックします。
- アカウント選択画面が出るので、使用中のGoogleアカウントをクリックします。
- 「このアプリは Google によって確認されていません」という警告画面が表示されます。
- 画面左下にある「詳細」テキストリンクをクリックします。
- 最下部に表示される「無題のプロジェクト(安全ではないページ)に移動」をクリックします。
- アクセスリクエスト画面が表示されるので、内容を確認して右下の「許可」をクリックします。
これで初回のみ必要な承認手続きが完了し、プログラムが実行されます。
ステップ4:実行結果の確認
元のスプレッドシート画面のタブに戻り、A1セルに日時、B1セルに「自動化スクリプトの実行に成功しました」と入力されているか確認してください。
5. スプレッドシートの定型作業を自動化する実用例
ここからは、実務で頻出する2つの定型作業パターンを自動化するサンプルコードを紹介します。
例1:売上や問い合わせデータを「最終行に自動追記」する
既存データの一番下の行(最終行)を見つけ出し、新しいデータを追加していく作業の自動化です。appendRow() メソッドを使用します。
function appendNewRecord() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
// 追加したいデータを配列( [ ] )形式で準備する
var date = new Date();
var item = "Webセミナー参加申し込み";
var name = "山田 太郎";
var status = "未対応";
// 最終行の次に1行まとめてデータを追記
sheet.appendRow([date, item, name, status]);
Logger.log("データを最終行に追加しました");
}
- 解説:
appendRow([値1, 値2, 値3...])を使うと、指定したデータがシートの最終行の次の行に、A列・B列・C列…と順番に自動で流し込まれます。フォームからのデータ蓄積やログ記録に最適です。
例2:条件に合うセルを検索して「背景色を変更する」
データ一覧の中から特定の条件を満たす行(例:ステータスが「未対応」のセル)を探し、背景色を変えて強調する作業です。if文と繰り返し処理(for文)を組み合わせます。
function highlightUnprocessed() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
// データが存在する最後の行番号を取得
var lastRow = sheet.getLastRow();
// 2行目から最終行まで順番にチェック(1行目はヘッダーと仮定)
for (var i = 2; i <= lastRow; i++) {
// D列(4列目)のセル値を取得
var status = sheet.getRange(i, 4).getValue();
// 値が「未対応」だった場合の処理
if (status === "未対応") {
// その行のD列の背景色を薄い赤色に変更
sheet.getRange(i, 4).setBackground("#fce8e6");
} else if (status === "対応完了") {
// 「対応完了」なら背景色を無色(白)に戻す
sheet.getRange(i, 4).setBackground(null);
}
}
}
- 解説:
getLastRow()でデータの最終行を取得し、forループ処理で上から下へ1行ずつ検証します。背景色の変更には.setBackground("カラーコード")を利用します。
6. 自動化を完成させる「トリガー設定」の手順
手動で「実行」ボタンを押さなくても、指定した時間や条件で自動的にスクリプトを動かす仕組みが「トリガー」です。
トリガーの種類
主なトリガーには以下のタイプがあります。
- 時間駆動型(タイマー):毎朝9時、毎週月曜日、5分ごとなど、決まった日時に自動実行。
- イベント駆動型:スプレッドシートを開いたとき(
onOpen)、編集したとき(onEdit)、Googleフォーム送信時(onFormSubmit)に連動して自動実行。
時間駆動型(タイマー実行)の設定手順(5ステップ)
ここでは「毎日午前9時〜10時の間に自動でスクリプトを実行する」設定手順を解説します。
- トリガー画面を開く GASエディタの左側メニューバーにある「時計アイコン(トリガー)」をクリックします。
- トリガーの追加 画面右下にある青色の「+ トリガーを追加」ボタンをクリックします。
- 実行設定の選択 設定画面が表示されるので、以下のように項目を選択します。
| 設定項目 | 選択する値(例) | 概要 |
|---|---|---|
| 実行する関数を選択 | highlightUnprocessed など |
自動で動かしたい関数名を選択 |
| 実行するデプロイを選択 | Head |
通常はそのままで問題ありません |
| イベントのソースを選択 | 時間駆動型 | 日時ベースで動かす場合に選択 |
| 時間型トリガーのタイプを選択 | 日付ベースのタイマー | 「特定の日時」か「毎日/毎週」かを指定 |
| 時刻の選択 | 午前9時〜10時 | 実行させたい時間帯を指定 |
- 保存する 右下の「保存」ボタンをクリックします。
- 完了の確認 トリガー一覧画面に作成した設定が表示されていれば、完了です。パソコンを閉じていても、指定の時間になればGoogleサーバー上でスクリプトが自動実行されます。
7. エラー対処と安全運用のポイント
プログラムが動かない場合やエラーが出た際の対処法、継続運用のためのコツをまとめました。
つまずいたときのチェックリスト
- スペルミスがないか:JavaScriptは「大文字と小文字」を厳格に区別します(例:
getValueは動きますがGetvalueはエラーになります)。 - カッコの閉じ忘れがないか:
{と}、(と)の数が合っているか確認します。 - ログを確認する:処理の途中で
Logger.log(変数名)を挟むと、実行ログ画面で変数の中に期待通りの値が入っているか確認できます。
生成AIを活用したコード記述とエラー解消
コードの書き方が分からない場合やエラー文が出たときは、生成AIを活用するのが非常に効果的です。
「Google Apps Scriptで、スプレッドシートのA列にある空欄の行を削除するコードを書いてください」といった具体的なプロンプトを入力することで、下書きコードを作成してもらえます。
事務作業での生成AIの具体的なプロンプト作成テクニックについては、事務作業での生成AIの使い方をご覧ください。
学習の継続と運用の注意点
社内で共有しているスプレッドシートにGASを組み込む際は、誤って重要なデータを上書き・削除しないよう、必ず「テスト用のコピーシート」で動作検証を行ってから本番運用へ移行しましょう。
また、日々の仕事の中で学習時間を確保しながらスキルを身につけていく方法については、社会人のための学習時間確保と習慣化の手順が役立ちます。
まとめ:GASを活用して定型業務を全自動化しよう
Google Apps Script(GAS)を導入することで、これまで手作業で行っていたスプレッドシートのコピペ、データ整形、集計作業などの時間を大幅に削減できます。
最後にもう一度、導入の手順を振り返りましょう。
- エディタを開く:「拡張機能」>「Apps Script」を選択
- コードを書く:
SpreadsheetApp.getActiveSpreadsheet()でシートやセルを取得・操作 - 承認を行う:初回実行時は「詳細」リンクからアクセス権を許可
- トリガーを仕込む:時計アイコンから「時間駆動型」を設定し、全自動化を完了させる
まずは「1箇所のセルに文字を入力する」小さなスクリプトから試してみてください。一歩ずつ自動化できる範囲を広げていき、本来集中すべき重要な業務へと時間を投資していきましょう。
確認先
- Google Workspace Developer Documentation(Google Apps Script 公式ドキュメント)
あわせて読みたい
- ITスキル・業務自動化
Power Queryの使い方解説|データの取り込み・整形・ファイル結合を自動化する手順
ExcelのPower Queryを使ってデータの取り込み、列の整形、複数ファイルの結合、自動更新を行う手順をわかりやすく解説します。プログラミング不要で毎月のデータ加工業務を効率化できます。
- ITスキル・業務自動化
ExcelのXLOOKUP関数の使い方とVLOOKUPからの移行手順|構文・エラー対処法まで解説
ExcelのXLOOKUP関数の基本的な使い方から、VLOOKUP関数との違い、書き換え方法、エラー発生時の対処法まで具体的に解説します。表検索の効率化とトラブル防止に役立つ知識が身につきます。
- ITスキル・業務自動化
Looker Studioの使い方入門|データ接続からグラフ作成・共有まで解説
Looker Studio(旧Googleデータポータル)でレポートを作成する手順を解説。スプレッドシートなどのデータ接続、表・グラフの作成、フィルタ設定、社内共有のやり方まで網羅しています。
- ITスキル・業務自動化
ビジネス統計の基礎|平均・中央値・ばらつきの読み方と実務での注意点
ビジネスでデータを正しく読み解くための統計基礎を解説。平均値・中央値・最頻値といった代表値の違いや、標準偏差などばらつきの指標、実務で陥りがちな数値の読み違いを回避するポイントが分かります。