GAS入門|はじめてのGoogle Apps Script【初心者向け完全ガイド】
GAS(Google Apps Script)は、Googleが提供する無料のプログラミング環境です。プログラミング未経験でも、この記事を読めば今日からGASを始められます。
GAS(Google Apps Script)とは
概要
GAS(Google Apps Script)は、Googleが提供するクラウドベースのスクリプト言語・実行環境です。
JavaScriptをベースにしており、Googleのサービス(スプレッドシート、Gmail、カレンダーなど)を自動化・連携できます。
GASの特徴
| 特徴 | 説明 |
|---|---|
| 無料 | Googleアカウントがあれば誰でも無料で使える |
| 環境構築不要 | ブラウザだけで開発できる(インストール不要) |
| クラウド実行 | スクリプトはGoogleのサーバーで実行される |
| Google連携 | スプレッドシート、Gmail、カレンダーなどと簡単に連携 |
| JavaScript | 世界で最も使われている言語がベース |
GASとExcel VBAの違い
| 項目 | GAS | Excel VBA |
|---|---|---|
| 動作環境 | クラウド(ブラウザ) | ローカル(PC) |
| 対象 | Googleサービス全般 | Excel中心 |
| 言語 | JavaScript | VBA |
| 料金 | 無料 | Office購入が必要 |
| 共有 | URLで簡単共有 | ファイル共有が必要 |
GASでできること5選
1. スプレッドシートの自動化
・データの自動集計・整形
・条件に応じたセルの書式変更
・定期的なレポート自動生成
・フォーム回答の自動処理
2. メール業務の自動化
・定型メールの一括送信
・条件に応じた自動返信
・メールの自動振り分け・ラベル付け
・添付ファイルの自動保存
3. スケジュール・タスク管理
・Googleカレンダーへの予定自動登録
・リマインダーの自動送信
・会議室の空き状況チェック
・定期タスクの自動作成
4. 外部サービスとの連携
・Slack/LINE/Teamsへの通知
・ChatGPT APIとの連携
・外部APIからのデータ取得
・Webスクレイピング
5. Webアプリケーション作成
・簡単なWebフォームの作成
・ダッシュボードの構築
・社内ツールの開発
・APIエンドポイントの公開
開発環境の準備
必要なもの
- Googleアカウント(無料)
- ブラウザ(Chrome推奨)
これだけです。ソフトウェアのインストールは不要。
スクリプトエディタの開き方
GASを書くための「スクリプトエディタ」を開く方法は2つあります。
方法1: スプレッドシートから開く(推奨)
スプレッドシートと連携したスクリプトを作る場合はこちら。
手順:
- Googleスプレッドシートを開く
– https://sheets.google.com にアクセス
– 新しいスプレッドシートを作成(または既存のものを開く)
- メニューから Apps Script を選択
– 上部メニューの拡張機能をクリック
– 「Apps Script」をクリック
- スクリプトエディタが開く
– 新しいタブでスクリプトエディタが表示される
– 初期状態では function myFunction() { } というコードが表示されている
方法2: 直接開く(スタンドアロン)
スプレッドシートに紐づけない独立したスクリプトを作る場合はこちら。
手順:
- https://script.google.com にアクセス
- 「新しいプロジェクト」をクリック
- スクリプトエディタが開く
スクリプトエディタの画面構成
┌─────────────────────────────────────────────────┐
│ [プロジェクト名] [実行▶] [デバッグ🐛] │
├─────────────────────────────────────────────────┤
│ ファイル │ │
│ ─────── │ function myFunction() { │
│ コード.gs │ // ここにコードを書く │
│ │ } │
│ + 新規 │ │
│ │ │
│ サービス │ │
│ ─────── │ │
│ + 追加 │ │
├─────────────────────────────────────────────────┤
│ 実行ログ: │
│ > スクリプトを実行しました │
└─────────────────────────────────────────────────┘
| 要素 | 説明 |
|---|---|
| プロジェクト名 | クリックして変更可能 |
| 実行ボタン(▶) | 選択した関数を実行 |
| デバッグボタン(🐛) | デバッグモードで実行 |
| ファイル一覧 | .gsファイルの管理 |
| コードエディタ | コードを書く場所 |
| 実行ログ | 実行結果やエラーが表示 |
はじめてのスクリプト作成
Hello World
プログラミングの最初の一歩、「Hello World」を表示してみましょう。
コード:
function helloWorld() {
// ログに「Hello World!」と表示
console.log('Hello World!');
// ダイアログで表示(スプレッドシートから開いた場合)
Browser.msgBox('Hello World!');
}
実行方法:
- 上記のコードをスクリプトエディタに貼り付け
- 関数選択で
helloWorldを選択 - 「実行」ボタン(▶)をクリック
- 初回は権限の承認が必要
– 権限を確認をクリック
– Googleアカウントを選択
– 「詳細」→「(プロジェクト名)に移動」
– 許可をクリック
- 実行ログに「Hello World!」と表示される
スプレッドシートにデータを書き込む
次は、スプレッドシートのセルに値を書き込んでみましょう。
コード:
function writeToCell() {
// アクティブなスプレッドシートを取得
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
// A1セルに「こんにちは」と書き込む
sheet.getRange('A1').setValue('こんにちは!');
// B1セルに数値を書き込む
sheet.getRange('B1').setValue(12345);
// C1セルに今日の日付を書き込む
sheet.getRange('C1').setValue(new Date());
console.log('書き込み完了!');
}
実行結果:
| A | B | C |
|---|---|---|
| こんにちは! | 12345 | 2026/02/02 |
スプレッドシートからデータを読み込む
今度は、セルの値を読み取ってみましょう。
コード:
function readFromCell() {
// アクティブなスプレッドシートを取得
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
// A1セルの値を取得
const value = sheet.getRange('A1').getValue();
// ログに表示
console.log('A1の値: ' + value);
// 複数セルを一括取得(A1:C3の範囲)
const values = sheet.getRange('A1:C3').getValues();
console.log('A1:C3の値:');
console.log(values);
}
基本構文チートシート
変数の宣言
// 再代入可能な変数
let name = '山田太郎';
name = '鈴木一郎'; // OK
// 再代入不可の定数
const TAX_RATE = 0.1;
// TAX_RATE = 0.08; // エラー!
// 古い書き方(非推奨)
var oldStyle = '古い';
データ型
// 文字列(String)
const text = 'こんにちは';
// 数値(Number)
const number = 100;
const decimal = 3.14;
// 真偽値(Boolean)
const isActive = true;
const isComplete = false;
// 配列(Array)
const fruits = ['りんご', 'みかん', 'バナナ'];
// オブジェクト(Object)
const person = {
name: '山田太郎',
age: 30,
email: 'yamada@example.com'
};
条件分岐(if文)
function checkScore(score) {
if (score >= 80) {
console.log('合格!優秀です');
} else if (score >= 60) {
console.log('合格です');
} else {
console.log('不合格...');
}
}
checkScore(85); // → 合格!優秀です
checkScore(65); // → 合格です
checkScore(40); // → 不合格...
ループ(繰り返し)
// for文(回数が決まっている場合)
for (let i = 0; i < 5; i++) {
console.log(i + '回目');
}
// → 0回目, 1回目, 2回目, 3回目, 4回目
// 配列のループ
const fruits = ['りんご', 'みかん', 'バナナ'];
for (const fruit of fruits) {
console.log(fruit);
}
// → りんご, みかん, バナナ
// while文(条件が満たされる間)
let count = 0;
while (count < 3) {
console.log(count);
count++;
}
// → 0, 1, 2
関数
// 基本的な関数
function greet(name) {
return 'こんにちは、' + name + 'さん!';
}
const message = greet('山田');
console.log(message); // → こんにちは、山田さん!
// アロー関数(短い書き方)
const add = (a, b) => a + b;
console.log(add(3, 5)); // → 8
// 複数行のアロー関数
const calculate = (price, quantity) => {
const subtotal = price * quantity;
const tax = subtotal * 0.1;
return subtotal + tax;
};
スプレッドシートとの連携基礎
基本オブジェクト
// スプレッドシートを取得
const ss = SpreadsheetApp.getActiveSpreadsheet();
// シートを取得
const sheet = ss.getActiveSheet(); // アクティブなシート
const sheet2 = ss.getSheetByName('シート2'); // 名前で指定
// セル範囲を取得
const cell = sheet.getRange('A1'); // 単一セル
const range = sheet.getRange('A1:C10'); // 範囲
const range2 = sheet.getRange(1, 1, 10, 3); // 行, 列, 行数, 列数
よく使う操作
function spreadsheetBasics() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
// 値の取得・設定
const value = sheet.getRange('A1').getValue(); // 単一セル
const values = sheet.getRange('A1:C3').getValues(); // 複数セル(2次元配列)
sheet.getRange('A1').setValue('Hello'); // 単一セル
sheet.getRange('A1:C1').setValues([['A', 'B', 'C']]); // 複数セル
// 最終行・最終列を取得
const lastRow = sheet.getLastRow();
const lastCol = sheet.getLastColumn();
// 行の追加
sheet.appendRow(['新しい', 'データ', '追加']);
// セルの書式設定
sheet.getRange('A1').setFontWeight('bold'); // 太字
sheet.getRange('A1').setBackground('#ffff00'); // 背景色
sheet.getRange('A1').setFontColor('#ff0000'); // 文字色
// 行・列の操作
sheet.insertRowAfter(1); // 1行目の後に行を挿入
sheet.deleteRow(5); // 5行目を削除
}
実践サンプル:データを一括処理
/**
* A列の数値をすべて2倍にしてB列に出力
*/
function doubleValues() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const lastRow = sheet.getLastRow();
// A列のデータを取得(2行目から最終行まで、1行目はヘッダー想定)
const values = sheet.getRange(2, 1, lastRow - 1, 1).getValues();
// 2倍にした結果を格納する配列
const results = [];
for (const row of values) {
const originalValue = row[0];
const doubledValue = originalValue * 2;
results.push([doubledValue]);
}
// B列に結果を出力
sheet.getRange(2, 2, results.length, 1).setValues(results);
console.log('処理完了!');
}
実行とデバッグの方法
実行方法
- スクリプトエディタから実行
– 関数を選択 → 実行ボタン(▶)
- スプレッドシートのメニューから実行
– カスタムメニューを作成して追加可能
- トリガーで自動実行
– 時間ベース(毎日、毎時など)
– イベントベース(フォーム送信時など)
デバッグ方法
function debugExample() {
const data = ['りんご', 'みかん', 'バナナ'];
// console.log でデータを確認
console.log('データの内容:', data);
console.log('データの長さ:', data.length);
for (let i = 0; i < data.length; i++) {
console.log(`${i}番目: ${data[i]}`);
}
}
よくあるエラーと対処法
| エラー | 原因 | 対処法 |
|---|---|---|
TypeError: Cannot read property |
存在しない値にアクセス | null/undefinedチェックを追加 |
ReferenceError: xxx is not defined |
変数が未定義 | スペルミスを確認、宣言を確認 |
Authorization required |
権限が未承認 | 再度実行して承認 |
Exceeded maximum execution time |
実行時間超過(6分) | 処理を分割 |
エラーハンドリング
function safeExecution() {
try {
// エラーが発生する可能性のある処理
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const value = sheet.getRange('A1').getValue();
console.log('成功:', value);
} catch (error) {
// エラー発生時の処理
console.log('エラーが発生しました:', error.message);
}
}
次のステップ(おすすめ学習順)
ステップ1: スプレッドシート操作をマスター
□ セルの読み書き
□ 範囲操作(getRange, getValues, setValues)
□ 行・列の追加・削除
□ 書式設定
ステップ2: 自動実行を覚える
□ 時間トリガー(毎日、毎時)
□ イベントトリガー(フォーム送信時、編集時)
□ カスタムメニューの作成
ステップ3: 外部サービス連携
□ Gmail連携(メール送信)
□ Googleカレンダー連携
□ Slack/LINE通知
□ 外部API呼び出し
ステップ4: 応用
□ ChatGPT API連携
□ Webアプリケーション作成
□ ライブラリの活用
まとめ
今回のポイント
| 項目 | 内容 |
|---|---|
| GASとは | Googleの無料プログラミング環境、JavaScriptベース |
| できること | スプレッドシート自動化、メール、カレンダー、外部連携など |
| 始め方 | スプレッドシート → 拡張機能 → Apps Script |
| 基本構文 | 変数、条件分岐、ループ、関数 |
| スプレッドシート | getRange, getValue, setValue が基本 |
初心者がつまずきやすいポイント
| つまずきポイント | 解決策 |
|---|---|
| 権限の承認が怖い | 自分のスクリプトなので安全。手順通り承認してOK |
| エラーが出て止まる | console.logでデータを確認、エラーメッセージをGoogle検索 |
| 何から作ればいいかわからない | まずはHello World → セル読み書き → 小さな自動化 |
次に読むべき記事
GASの基礎がわかったら、次は実践的な自動化に挑戦してみましょう。
- GASでスプレッドシートを自動化する方法
- GASとChatGPTを連携させる方法
- GASでGmailを自動送信する方法
コメント