スプレッドシートのメールアドレスにGASでメールを一斉送信する方法【Google Apps Script】

スプレッドシートで一括管理したメールアドレスに、一斉送信したい!さらに、件名や本文で「○○様」等にカスタムしたい!そんな時はありませんか?

GAS(Google Apps Script)を使うことによって、Googleスプレッドシートにまとめた、メールアドレスに対して、一斉にメールを送信することができます。

送信するだけでなく、件名や本文に相手のそれぞれの人の名前を入れるなど、自由にカスタマイズすることができます!本記事では、Googleスプレッドシートにまとめてあるメールアドレスに対して、同じメールを一斉送信する方法を解説しています。

また、名前をタイトルに入れるなど、個別にカスタムしたメールを送ることもできるやり方も解説しているので、最後までご覧ください。

目次

スプレッドシートにまとめたメールアドレスにメールを一括送信する

それでは、スプレッドシートに一覧化したメールアドレスに、メールを一括送信する方法を見ていきましょう。

スプレッドシートにメールアドレスの情報を入力する

まずは、適当な方法でスプレッドシートを作成しましょう。

下の図は、画面右上のGoogleアプリからスプレッドシートを作成しています。

スプレッドシートを作成したら、メールアドレスを一覧にまとめます。

メールを送るだけであれば、メールアドレスのみを一覧にするだけで十分ですが、

今回は、アドレス管理を簡単にするために、番号、苗字、名前、メールアドレスを情報としてまとめました。

このリストををもとにプログラムを作成していきます。

コンテナバインド型でスクリプトを作成する

スプレッドシートが完成したら、次にコンテナバインド型でスクリプトを作成します。

コンテナバインド型についてわからない人はこちらの記事もご覧ください。

あわせて読みたい
【基礎】GASの「スタンドアロン型」と「コンテナバインド型」って何?2種類のファイル作成方法について... GAS(Google App Script)は、Googleが開発したアプリケーションプラットフォームです。GASを使えば様々な作業、そしてGoogleスプレッドシートやドキュメントと連携した...

今回の例では、スプレッドシートのD列に一覧化したからメールアドレスを取得し、メールを送ります。

件名と本文は、スクリプト中に入力して、スクリプトからGmailに作成することになります。

件名と本文を入力する

GAS(Google Apps Script)を用いて、件名と本文を入力していきます。

function sendEmails() {    
    // メール本文の組み立てる
    let subject = "ここに件名を入力";
    let message = "ここに本文を入力";//※改行は「\n」
}

subjectに件名を入力、messageに本文を入力します。

本文を入力する際の注意点として、プログラム中の改行は、メール本文の改行にはなりません。

「\n」を入力することで、改行できます。

件名と本文が入力出来たら、早速メールを送ってみましょう。

2行目以降のアドレスにメールを一括送信する

それでは、メールを送信してみましょう。

今回は、4列目の文字が入っている最後の行を取得し、2行目から文字の入っている最後の行まですべてのメールアドレスにメールを一斉送信します。

function sendEmails() {
  // スプレッドシートのアクティブなシートを取得する
  let sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  
  // データの最終行を取得する
  let lastRow = sheet.getLastRow();
  
  // シートからデータを読み取る
  let data = sheet.getRange(2, 1, lastRow - 1, 4).getValues(); // 2行目から最終行までのデータを取得
  
  // GmailAppを使用してメール送信
  let emailAddressColumn = 4; // メールアドレスが入っている列を取得する(4列目)
  
  for (let i = 0; i < data.length; i++) {
    // 各行のデータ
    let row = data[i];
    
    // メール本文の組み立てる
    let subject = "ここに件名を入力";
    let message = "ここに本文を入力";//※改行は「\n」

    // メール送信
    let emailAddress = row[emailAddressColumn - 1]; // 列番号は1から始まるため
    MailApp.sendEmail({
      to: emailAddress,
      subject: subject,
      body: message
    });
  }
}

このコードを使うと、スプレッドシートに入力されたメールアドレスの全員に、同じメッセージを一括で送ることができます。

このプログラムについて説明してきます。

スプレッドシートのアクティブなシートを取得する

let sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

この行は、今開いているGoogleスプレッドシートの「アクティブなシート」、つまり今操作しているシートを取得します。変数sheetにこのシートの情報を保存します。

データの最終行を取得する

let lastRow = sheet.getLastRow();

ここで、シートの最後の行の番号を取得します。これにより、どこまでデータが入力されているかがわかります。この番号は後でデータを読み取る時に使います。

シートからデータを読み取る

let data = sheet.getRange(2, 1, lastRow - 1, 4).getValues();

この行は、シートの2行目から最終行まで、1列目から4列目までの範囲のデータを読み取ります。getRangeメソッドは読み取る範囲を指定し、getValuesメソッドはその範囲のデータを実際に取得します。これで、メールを送るのに必要な情報が変数dataに格納されます。

メールアドレスが入っている列を取得する

let emailAddressColumn = 4; // メールアドレスが入っている列を取得する(4列目)

この行は、メールアドレスがどの列にあるかを指定しています。この例では、4列目にメールアドレスがあると設定しています。

ループ処理で、複数のメールを送信する

for (let i = 0; i < data.length; i++) {
  let row = data[i];
  
  let subject = "ここに件名を入力";
  let message = "ここに本文を入力";//※改行は「\n」
  
  let emailAddress = row[emailAddressColumn - 1]; // 列番号は1から始まるため
  MailApp.sendEmail({
    to: emailAddress,
    subject: subject,
    body: message
  });
}

この部分では、先ほど読み取ったデータdataを一行ずつ処理しています。

各行からメールアドレスを取り出し(emailAddressColumn - 1で列を指定)、そのアドレスにメールを送信します。

MailApp.sendEmailメソッドを使って、宛先(to)、件名(subject)、そしてメール本文(body)を設定しています。

件名と本文は、実際にメールを送る前に適切な内容に変更する必要があります。

データへのアクセスを承認し送信する

初回実行時には、「承認が必要です」と画面が表示されると思います。

これは、GASが、スプレッドシートとGmailの連携をするための許可を求めている状態です。流れに従って、承認権限を付与(許可)をしたら実行されます。

具体的な操作については、こちらの記事をご覧ください。

あわせて読みたい
【GASあるある】初回実行時「承認が必要です」の対処法とアクセス権限の承認について GAS実行時、「承認が必要です」と注意ダイアログが表示された経験はありませんか? GASに触れている人であれば、見たことある方もいるかと思います。 今回はその「承認...

アクセス承認後、実際にプログラムが動作して問題なく実行できる事が確認できるかと思います。

初めは、自分のメールアドレスをスプレッドシートに入力して、実行してみてください。実行後、自分のGmailを確認することで、実行結果を確認することができます。

※送信ではなく下書き保存をしたい場合は、MailApp.sendEmailを、GmailApp.createDraftにすることで、下書き保存ができます。

件名と本文を個別にカスタムする

件名と本文に、「○○様」と入れる方法をご説明します。(カスタムメッセージ)

件名と本文にそれぞれの「氏名」を入れる

i行のB列に入力された、「氏名+様」が件名と本文の一行目に入力されます。

以下の書き方をもとに、いろいろとカスタマイズしてみてください。

function sendEmails() {
  // スプレッドシートのアクティブなシートを取得する
  let sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  
  // データの最終行を取得する
  let lastRow = sheet.getLastRow();
  
  // シートからデータを読み取る
  let data = sheet.getRange(2, 1, lastRow - 1, 4).getValues(); // 2行目から最終行までのデータを取得
  
  // GmailAppを使用してメール送信
  let emailAddressColumn = 4; // メールアドレスが入っている列を取得する(4列目)
  
  for (let i = 0; i < data.length; i++) {
    // 各行のデータ
    let row = data[i];
    
    // メール本文の組み立てる
    let subject = row[1] + "様";
    let message = subject + "\n\n" + "ご拝読ありがとうございます。";
    
    // メール送信
    let emailAddress = row[emailAddressColumn - 1]; // 列番号は1から始まるため
    MailApp.sendEmail({
      to: emailAddress,
      subject: subject,
      body: message
    });
  }
}

forループの中で行は選択できているので、列を自分でアレンジすることで様々なメールを作成することができます。

まとめ

今回は、GASを活用して、スプレッドシートに一覧化したメールアドレスに、Gmailを自動で一斉送信する方法を解説しましたがいかがだったでしょうか。

社内メールや定期配信のメールなど、リスト化した対象にメールを一斉送信する機会があるかと思います。

是非、本記事を活用して時間のかかる作業を自動化してみてください!

記事をシェアする
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

日々のタスクや業務でGASを用いて業務効率化・自動化を推進するプロフェッショナル集団。ノンプログラマやプログラムの専門家を含むメンバで構成されており、プログラミング初心者・初学者にもわかりやすいコンテンツを執筆することをミッションとしています。

コメント

コメントする

目次