About Services Blog News 運営者
GAS 2026年4月9日

GASでスプレッドシートからメールを自動送信する方法【実演スクショ付き】

この記事について

私はGAIDEというGAS自動化ツールを開発しています。ユーザーからの要望で最も多いのが「スプレッドシートからメールを自動で送りたい」です。この記事では、GAIDE開発の中で検証してきたメール送信の実装パターンと、初心者がハマりやすいポイントを実際の画面スクリーンショット付きで解説します。

完成イメージ

最初に完成形を見せます。スプレッドシートにこのような送信リストがあるとします。

b1

A列に名前、B列にメールアドレス、C列に件名、D列に本文が入っています。GASを実行すると、各行の宛先にGmailが自動送信されます。送信済みのメールはGmailの「送信済み」フォルダに入ります。

b2

ステップ1:スプレッドシートを準備する

まず、Googleスプレッドシートを新規作成し、以下の構成でデータを入力してください。

A1に「名前」、B1に「メールアドレス」、C1に「件名」、D1に「本文」と入力し、2行目以降に送信先のデータを入れます。

テスト段階では、B列に自分のメールアドレスを入れて動作確認するのがおすすめです。

ステップ2:GASエディタでコードを書く

スプレッドシートのメニュー「拡張機能」→「Apps Script」を開き、以下のコードを貼り付けてください。

function sendEmailsFromSheet() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const data = sheet.getDataRange().getValues();
  let sentCount = 0;

  // 1行目はヘッダーなのでスキップ
  for (let i = 1; i < data.length; i++) {
    const name = data[i][0];
    const email = data[i][1];
    const subject = data[i][2];
    const body = data[i][3];

    // メールアドレスが空の行はスキップ
    if (!email || email.toString().trim() === '') continue;

    try {
      GmailApp.sendEmail(email, subject, body, {
        name: 'あなたの名前'
      });
      sentCount++;
      // 送信済みフラグをE列に記録
      sheet.getRange(i + 1, 5).setValue('送信済み');
      sheet.getRange(i + 1, 6).setValue(new Date());
    } catch (error) {
      sheet.getRange(i + 1, 5).setValue('エラー: ' + error.message);
    }
  }

  Logger.log(sentCount + '件のメールを送信しました');
}
b3

コードのポイント解説

このコードで重要なのは3つです。

1つ目は GmailApp.sendEmail() を使っている点です。GASにはメール送信用のクラスとして MailAppGmailApp の2種類があります。MailApp はシンプルな送信のみ、GmailApp は送信者名の指定・CC/BCC・HTML形式のメール・下書き作成など高度な機能が使えます。実務では GmailApp を使うのがおすすめです。

2つ目は try-catch でエラーハンドリングをしている点です。メールアドレスが不正だったり、送信上限に達した場合にスクリプト全体が止まるのを防ぎます。エラーが起きた行にはE列に「エラー」と記録されるので、後から確認できます。

3つ目はE列に「送信済み」フラグを記録している点です。これがないと、スクリプトを誤って2回実行した場合に二重送信が発生します。本番運用では、送信前にE列が空かどうかをチェックする条件を追加するとより安全です。

ステップ3:実行と承認

「▶ 実行」ボタンを押すと、初回は承認ダイアログが表示されます。GASがGmailにアクセスする許可を求めているので、「許可」をクリックしてください。承認の詳しい手順はGAS入門ガイドに記載しています。

実行が完了したら、Gmailの「送信済み」フォルダを確認してください。スプレッドシートの各行に対応するメールが送信されているはずです。

b2

ステップ4:トリガーで定期実行する

「毎朝8時に自動送信したい」場合は、GASのトリガー機能を使います。

GASエディタの左メニューにある時計アイコン(トリガー)をクリックし、「トリガーを追加」を押します。

b4

設定項目は以下の通りです。実行する関数として sendEmailsFromSheet を選択し、イベントのソースを「時間主導型」にし、時間ベースのトリガーのタイプを「日付ベースのタイマー」、時刻を「午前8時〜9時」に設定して保存します。

これで、毎朝8時台にスクリプトが自動実行されます。

知っておくべき送信上限

無料のGoogleアカウント(@gmail.com)は1日100通、Google Workspaceアカウントは1日1,500通が上限です。この上限はGmailの通常送信と合算でカウントされるので注意してください。

上限を超えると Service invoked too many times for one day: email というエラーが出ます。大量送信が必要な場合は、処理を複数日に分割するか、専用のメール配信サービスの利用を検討してください。

GAIDEでやるとどうなるか

ここまでの手順を、GAIDEを使って実現すると以下のようになります。

GAIDEの入力欄に「スプレッドシートのA列に名前、B列にメールアドレス、C列に件名、D列に本文が入っています。各行のメールアドレスにGmailを送信して、E列に送信済みフラグを立ててください」と入力します。

要件が不明な場合はさらにヒアリングをしてくれます。ヒアリングに返信するとすぐにAIがコードを生成されました。

b5

コードの内容を自分で理解しなくても動かせますが、上で解説した送信上限やエラーハンドリングの知識は持っておくと安心です。

GAIDEを無料で試す →

まとめ

GASでスプレッドシートからメールを自動送信するには、GmailApp.sendEmail() を使います。送信済みフラグの記録とエラーハンドリングを入れることで、実務で安全に使える仕組みになります。トリガーを設定すれば毎朝の定期送信も自動化できます。無料アカウントは1日100通の上限があるので、大量送信の場合は注意してください。

GAIDE

この自動化、GAIDEなら3分で実現できます

AIに話しかけるだけでGASコードを自動生成。プログラミング知識は不要です。

ログイン不要・クレジットカード不要

Seaside Lab

Seaside Lab

AIとWebで、もっと便利に