Google Apps Script(GAS)を初めて使う方が、すぐに業務効率化の成果を実感できる自動化ツール3つを、コピペで使えるサンプルコードとともに解説します。
「GASを使ってみたいけど、何から始めればいいかわからない」という方は多いのではないでしょうか。プログラミングの経験が少なくても、GASはGoogleスプレッドシートやGmailと連携できる強力な自動化ツールです。
この記事では、GAS初心者が最初に取り組むべき自動化テーマを3つ厳選しました。どれも実務で即活用できるものばかりで、コードをコピペするだけで動かせます。GASの基礎を学びながら、業務改善の成功体験を積んでいきましょう。
この記事でできること
- GASの基本的なスクリプトエディタの使い方を理解できる
- Googleスプレッドシートのデータを自動処理する仕組みを作れる
- メールの自動送信(Gmailとの連携)を実装できる
- 定期実行(トリガー)の設定方法を習得できる
- 3つの実用的な自動化スクリプトをコピペで使える
事前準備
GASを使うには、Googleアカウントがあればそれだけで十分です。追加のインストールや費用は一切不要です。
- 必要なもの:Googleアカウント(無料)
- 動作環境:Webブラウザのみ(ChromeまたはSafari推奨)
- 開発環境:Googleスプレッドシートのメニューから「拡張機能」→「Apps Script」を開くだけ
スクリプトエディタを開いたら、左側のメニューに「コード.gs」というファイルが表示されます。ここにコードを記述していきます。なお、GASのコードはJavaScriptをベースにしているため、JavaScriptの基礎知識があると理解しやすいですが、なくても本記事のサンプルコードは動作します。
自動化①:スプレッドシートの入力をチェックして通知メールを送る
最初に取り組むテーマとして最適なのが「スプレッドシートの変化を検知してメール通知する」仕組みです。たとえば、申込フォームの回答がスプレッドシートに追加されたタイミングで、担当者に自動でメールを送ることができます。
シナリオ例
Googleフォームでお問い合わせを受け付け、回答がスプレッドシートに記録されるたびに、担当者のGmailに通知メールを自動送信するケースです。
スクリプトの作成手順
Googleフォームに紐づいたスプレッドシートを開き、「拡張機能」→「Apps Script」を選択してスクリプトエディタを開きます。以下のコードを貼り付けてください。
function sendNotificationEmail() {
// スプレッドシートの最新データを取得
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const lastRow = sheet.getLastRow();
const data = sheet.getRange(lastRow, 1, 1, sheet.getLastColumn()).getValues()[0];
// メール送信先(担当者のメールアドレスに変更)
const recipient = "your-email@example.com";
const subject = "【自動通知】新しいお問い合わせが届きました";
// メール本文の作成
const body = "新しいお問い合わせが届きました。
"
+ "受信日時: " + new Date().toLocaleString('ja-JP') + "
"
+ "内容: " + data.join(', ') + "
"
+ "スプレッドシートを確認してください。";
// メール送信
GmailApp.sendEmail(recipient, subject, body);
Logger.log("通知メールを送信しました");
}
コードを貼り付けたら「Ctrl + S」で保存します。次に、トリガーを設定します。左メニューの時計マーク(トリガー)→「トリガーを追加」をクリックし、「実行する関数」に「sendNotificationEmail」、「イベントのソース」に「スプレッドシートから」、「イベントの種類」に「フォーム送信時」を選択して保存します。
これでフォームに回答があるたびに自動でメールが届く仕組みが完成です。
自動化②:毎朝9時にその日のタスク一覧をメールで送る
次は「定期実行トリガー」を活用した自動化です。スプレッドシートで管理しているタスクリストを毎朝メールで受け取ることで、確認漏れや対応忘れを防げます。
シナリオ例
A列に期日、B列にタスク名を記載したスプレッドシートを用意し、毎朝9時に「本日期限のタスク」をまとめたメールが届く仕組みを作ります。
スクリプトの作成手順
スプレッドシートの1行目をヘッダー(「期日」「タスク名」など)にし、2行目以降にデータを入力しておきます。スクリプトエディタに以下のコードを貼り付けます。
function sendDailyTaskReminder() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const data = sheet.getDataRange().getValues();
const today = new Date();
today.setHours(0, 0, 0, 0);
let taskList = [];
// 2行目以降のデータをループ(1行目はヘッダー)
for (let i = 1; i < data.length; i++) {
const dueDate = new Date(data[i][0]);
dueDate.setHours(0, 0, 0, 0);
const taskName = data[i][1];
// 本日期限のタスクを抽出
if (dueDate.getTime() === today.getTime() && taskName) {
taskList.push("・" + taskName);
}
}
// タスクがある場合のみメール送信
if (taskList.length > 0) {
const recipient = Session.getActiveUser().getEmail();
const subject = "【本日のタスク】" + today.toLocaleDateString('ja-JP') + " (" + taskList.length + "件)";
const body = "本日期限のタスクは以下の" + taskList.length + "件です。
"
+ taskList.join('
')
+ '
スプレッドシートで確認・更新してください。';
GmailApp.sendEmail(recipient, subject, body);
Logger.log(taskList.length + "件のタスクをメール送信しました");
} else {
Logger.log("本日期限のタスクはありません");
}
}
保存後、トリガーを設定します。「トリガーを追加」→「実行する関数:sendDailyTaskReminder」「イベントのソース:時間主導型」「時間ベースのトリガーのタイプ:日付ベースのタイマー」「時刻:午前9時〜10時」を選択して保存します。
これで毎朝9時台に自動でタスクリマインダーメールが届くようになります。
自動化③:月次レポートを自動集計してPDF化・メール送信する
少し応用的ですが、最も実務インパクトが大きい自動化です。月初めに先月のデータを集計し、PDF化してメールで送付する仕組みを作ります。月次レポート作成の手間を大幅に削減できます。
シナリオ例
売上データが記録されているスプレッドシートの集計シートを、毎月1日に自動でPDF出力し、上長にメール送付するケースです。
スクリプトの作成手順
スプレッドシートに「月次レポート」というシートを用意し、集計・グラフなどを作成しておきます。スクリプトエディタに以下のコードを貼り付けます。
function sendMonthlyReport() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const reportSheet = ss.getSheetByName("月次レポート");
if (!reportSheet) {
Logger.log("「月次レポート」シートが見つかりません");
return;
}
// 先月の年月を取得
const now = new Date();
const lastMonth = new Date(now.getFullYear(), now.getMonth() - 1, 1);
const yearMonth = lastMonth.getFullYear() + "年" + (lastMonth.getMonth() + 1) + "月";
// スプレッドシートをPDFとしてエクスポート
const ssId = ss.getId();
const sheetId = reportSheet.getSheetId();
const pdfUrl = "https://docs.google.com/spreadsheets/d/" + ssId + "/export"
+ "?format=pdf&gid=" + sheetId + "&size=A4&portrait=true&fitw=true&sheetnames=false&printtitle=false";
const token = ScriptApp.getOAuthToken();
const response = UrlFetchApp.fetch(pdfUrl, {
headers: { 'Authorization': 'Bearer ' + token }
});
const pdfBlob = response.getBlob().setName(yearMonth + "月次レポート.pdf");
// メール送信(添付ファイル付き)
const recipient = "manager@example.com"; // 送信先を変更
const subject = "【月次レポート】" + yearMonth;
const body = "お疲れ様です。
" + yearMonth + "の月次レポートをお送りします。
ご確認のほどよろしくお願いいたします。";
GmailApp.sendEmail(recipient, subject, body, {
attachments: [pdfBlob]
});
Logger.log(yearMonth + "のレポートを送信しました");
}
保存後、トリガーを「毎月1日の午前8時〜9時」に設定すれば、月次レポートの作成・送付が完全自動化されます。
うまくいかないときのチェックリスト
- 「承認が必要です」エラー:初回実行時は必ず権限の承認が必要です。「権限を確認」→「詳細」→「安全でないページに移動」→「許可」の順にクリックしてください
- メールが届かない:スパムフォルダを確認してください。また、GmailApp.sendEmailの送信先メールアドレスが正しいか確認してください
- 「スコープが不足しています」エラー:スクリプトを保存し直して再度実行すると、必要な権限の承認画面が表示されます
- トリガーが実行されない:「実行数」メニューでエラーログを確認してください。トリガーの設定が保存されているかも確認しましょう
- シート名が見つからないエラー:getSheetByName()に渡す文字列が、実際のシート名と完全に一致しているか確認してください(全角・半角スペースの違いに注意)
- 日付の比較がうまくいかない:スプレッドシートの日付セルは「日付形式」に設定されているか確認してください
応用・発展
今回紹介した3つの自動化を土台に、さらに発展させることができます。たとえば、通知メールに「承認ボタン」のリンクを埋め込んでワークフロー化したり、Slackと連携してメールではなくチャットで通知したりすることも可能です。また、GASはGoogleドライブ、Googleカレンダー、Google Meet、さらには外部APIとも連携できるため、活用の幅は非常に広いです。次のステップとして、ChatGPT APIとGASを連携してメール文を自動生成する仕組みや、kintoneとGASを組み合わせた業務システム連携なども検討してみてください。
まとめ
- GASはGoogleアカウントだけで使えるノーコスト・ノーインストールの自動化ツール
- 初心者が最初に作るべき自動化は「通知メール送信」「タスクリマインダー」「月次レポート自動送付」の3つ
- トリガー機能を使えば定期実行・イベント実行の両方に対応できる
- コピペで動かしてみることが、GASを身につける最短ルート
- 1つ成功体験を積むと、応用が広がり業務全体の効率化につながる
