業務効率化に役立つGoogle Apps Script(GAS)活用術:時間削減と自動化の実践ガイド
(初心者でもすぐに使える操作手順)
導入
業務で重複して発生する手作業、時間がかかるデータ処理や定型的なメール送信など、人手に頼る作業は“コスト”になります。こうした作業を自動化することで、残業の削減やミスの防止、さらには業務のスループット向上が期待できます。
Google が提供する「Google Apps Script(GAS)」は、G Suite(現 Google Workspace)内のツールを連携し、簡単にスクリプトを書いて自動化できる JavaScript ベースのプラットフォームです。設定・開発もブラウザ内で完結し、実行はクラウド上で行われるため、PCのスペックに左右されません。
本記事では、これから GAS を始める方を想定し、実際の業務で活用できるサンプルを順を追って紹介します。すべてのサンプルは「Google Apps Script エディタ」で作成し、実行できますので、手順を踏めば初心者でも問題なく導入できます。
GASとは何か?
- JavaScriptベース
既にウェブ開発や Node.js で JavaScript を触った経験がある方は、コード構文に違和感はほぼありません。 - クラウド実行
スクリプトは Google のサーバーで動作します。実行権限(OAuth)を付与した後は、ローカル環境を気にせず何処でも再利用可能です。 - Google Workspaceの API へアクセス
Spreadsheet, Gmail, Calendar, Drive, Docs など、Google の多くのサービスと簡単に連携できます。 - トリガーで自動実行
時間主導型(例えば毎朝 9:00 に実行)やイベント主導型(メール受信時に自動実行)など、細かなスケジューリングが可能です。
1. Gmailの自動返信を実装する
定期的に受信する問い合わせメールには、定型文で自動返信し、返信漏れを防ぎます。
手順
-
新規プロジェクトを作成
- Google Drive → 「新規」→ 「その他」→ 「Google Apps Script」を選択。
- プロジェクト名は「AutoEmailResponder」とします。
-
コードを書き込む
function sendAutoReply() { const labelName = 'autoReply'; // 受信メールに付けるラベル const label = GmailApp.getUserLabelByName(labelName); if (!label) return; // ラベルが無い場合は終了 const threads = label.getThreads(); for (let i = 0; i < threads.length; i++) { const thread = threads[i]; const messages = thread.getMessages(); const lastMessage = messages[messages.length - 1]; // 1件目の返信だけ送信 if (!lastMessage.isDraft() && !lastMessage.isUnread()) continue; const replyMsg = Utilities.formatString( '件名: Re: %s\n\nご連絡ありがとうございます。\n\n自動返信です。\n\n敬具', lastMessage.getSubject() ); thread.reply(replyMsg); // 返信済みフラグとして、別ラベルを付ける thread.addLabel(GmailApp.createLabel('autoReplyDone')); thread.removeLabel(label); } } -
トリガーを設定
- 「時計アイコン」→「トリガーを追加」→
- 関数:
sendAutoReply - イベントソース:時間主導型
- タイプ:分割ごと(5分)
これで毎5分に受信メールをチェックし、未返信メールに自動返信が送られます。
- 関数:
- 「時計アイコン」→「トリガーを追加」→
-
テスト
- 任意のメールアドレスにメールを送り、ラベルを付けて
autoReplyが動作するか確認。
- 任意のメールアドレスにメールを送り、ラベルを付けて
2. Google Drive のファイル自動整理
プロジェクトごとにフォルダを作り、一定条件でファイルを移動・命名するスクリプトです。
手順
-
スクリプトファイルを作成
- Google Drive 上で「新規」→「その他」→「Google Apps Script」。
-
コード
function organizeDrive() { const rootFolder = DriveApp.getRootFolder(); // ルートフォルダ const projectLabel = 'ProjectX'; // フォルダ名やラベルを指定 // フォルダ一覧取得 const folders = rootFolder.getFoldersByName(projectLabel); while (folders.hasNext()) { const folder = folders.next(); // 1週間以上前に作られたファイルを移動 const files = folder.getFiles(); while (files.hasNext()) { const file = files.next(); const date = file.getDateCreated(); const oneWeekAgo = new Date(); oneWeekAgo.setDate(oneWeekAgo.getDate() - 7); if (date < oneWeekAgo) { // 新フォルダへ移動 const targetFolder = DriveApp.createFolder('Archive'); file.moveTo(targetFolder); } } } } -
トリガー
- 月に一度、あるいは1日1回など定期的に実行。
-
テスト
- ルートに「ProjectX」フォルダと数ファイルを作り、スクリプト実行で Archive フォルダへ移動されるか確認。
3. Google スプレッドシートのデータ集計自動化
複数のシートから必要データを集計し、ダッシュボードとして表示する。
手順
-
スプレッドシートを作成
- 「SalesData」シートに日付、商品、売上金額の列。
- 「Dashboard」シートに集計結果を表示。
-
Apps Script コード
function updateDashboard() { const ss = SpreadsheetApp.getActiveSpreadsheet(); const salesSheet = ss.getSheetByName('SalesData'); const dashSheet = ss.getSheetByName('Dashboard'); const data = salesSheet.getDataRange().getValues(); // 先頭行を含む const header = data.shift(); // 列名を取り除く // 商品別合計を計算 const totals = {}; data.forEach(row => { const product = row[1]; const amount = Number(row[2]); if (!totals[product]) totals[product] = 0; totals[product] += amount; }); // ダッシュボードに書き込み dashSheet.clear(); dashSheet.appendRow(['商品', '売上金額(¥)']); for (const [product, total] of Object.entries(totals)) { dashSheet.appendRow([product, total]); } } -
トリガー
- 毎日 9:00 に実行(タイムトリガー)
- またはデータが追加されたら自動実行(編集トリガー)
-
確認
- ダッシュボードシートで値が正しく更新されるか確認。
4. Google Calendar へ定期イベントを自動作成
社内ミーティングやクライアント面談など、定期的に繰り返す予定を自動作成。
手順
-
スクリプトエディタで以下を記述。
function createRecurringEvent() { const calendar = CalendarApp.getDefaultCalendar(); const eventTitle = '週次プロジェクト会議'; const startTime = new Date('2026-04-04T10:00:00+09:00'); // 例: 4/4の10:00 const endTime = new Date('2026-04-04T11:00:00+09:00'); // 1時間 const recurrence = CalendarApp.newRecurrence() .addWeeklyRule() .times(20); // 20回繰り返し calendar.createEventSeries(eventTitle, startTime, endTime, recurrence); } -
権限付与
- 初回実行時にカレンダーへのアクセス権限を認可。
-
結果確認
- カレンダーに「週次プロジェクト会議」が20回連続で追加されていることを確認。
5. GAS の基本構文と便利関数
- 変数宣言
let a = 10; // 可変 const PI = 3.14159; // 不変 - 配列
const arr = [1, 2, 3]; arr.push(4); // 末尾追加 - オブジェクト
const person = {name: 'Taro', age: 30}; - 関数
function add(a, b) { return a + b; } - 非同期(簡易)
GAS は同期的に走るので、複雑な非同期は不要。
Google の API ラッパー
GmailApp,SpreadsheetApp,DriveApp,CalendarApp
それぞれの API を使う際のメソッドは公式リファレンスに豊富な例があります。
6. 開発環境とデバッグのコツ
- エディタ上のコンソール
Logger.log()でログを出力し、View → Logsから確認。 - デバッグ
- スクリプトエディタの ▶︎ アイコン ▶︎
デバッグを選択してステップ実行。
- スクリプトエディタの ▶︎ アイコン ▶︎
- エラー処理
try { // 何らかの処理 } catch (e) { Logger.log('エラー: ' + e.message); } - スプレッドシートのセルにデバッグ用メッセージを書き込む
sheet.getRange('A1').setValue('処理完了'); - バージョン管理
Ctrl + S→ファイル→バージョン管理を使用. 変更前後を保存しておくと、バグが生じた時に簡単にロールバックできます。
7. 成果を共有し、スクリプトを再利用する方法
- 共有プロジェクト設定
スクリプトエディタの「公開」→「ウェブアプリケーションとして導入」を選び、アクセス権を指定。 - パッケージ化
- 1つのスクリプトをライブラリとして登録し、他のプロジェクトで
ScriptApp.getProject()で読み込むことも可能です。
- 1つのスクリプトをライブラリとして登録し、他のプロジェクトで
- 定期メンテナンス
- トリガーが失効していないか、権限が変更されていないかを定期的に確認。
8. 実務での注意点(セキュリティと運用)
- アクセス権限の最小化
必要なサービスだけ権限を付与し、不要な API へのアクセスは避ける。 - 外部に公開しない
スクリプトに機密情報(API キーなど)が入る場合は、Google Secrets Manager などを使用。 - 実行回数の制限
Google Workspace の無料版はトリガー1日の実行回数に上限があります。大量データの処理は別途バッチ化。 - エラーハンドリング
無視している途中で失敗すると、後続の処理も停止。try/catchで安全に。
まとめ
- Google Apps Script は Google Workspace の各ツールをつなげる強力な自動化ツール。
- 初心者でも簡単に始められるよう、サンプルコードを実際の業務に合わせて紹介しました。
- 実行トリガーの設定、権限付与、デバッグ手法を押さえることで、初めての自動化から産業レベルの自動運用までスムーズに移行できます。
ぜひ今回のサンプルスクリプトをベースに、御社独自の業務フローに合わせてカスタマイズし、時間を有効活用してください。
業務効率化の第一歩として、GAS で自動化を始めてみましょう。

コメント