GAS初心者が最初に作るべき業務自動化3選【コピペで使えるサンプルコード付き】

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つ成功体験を積むと、応用が広がり業務全体の効率化につながる