見出し画像

SpreadsheetとGASとGMailでメールを送信する話。

お疲れ様です。
ライフマップ開発チームの大城です。
本日はSpreadsheetとGASを使って、メールを送信してみようと思います。

この記事では、以下の3つを行いたいと思います。

  • Spreadsheetでメール内容と送信先リストを作成

  • SpreadsheetとGASとGMailを連携

  • GASからメールを送信する

Spreadsheetでメール内容と送信先リストを作成

スプレッドシートを作成する

新規でスプレッドシートを作成しましょう。
サンプルはこちらです。

シートを作成する

1枚目のシートの名前を『メール内容』にします。シートの内容は下記の画像やサンプルを参考にしてください。

シート『メール内容』の内容

2枚目のシートの名前を『送信先リスト』にします。
シートの内容は、下記の画像やサンプルを参考にしてください。

シート『送信先リスト』の内容

SpreadsheetとGASとGMailを連携

GASの新規作成

スプレッドシートの上部メニュー『拡張機能 > Apps Script』を選択してください。
以下のような新しいスクリプトが作成されると思います。

function myFunction() {
  
}

スプレッドシートにアクセスする

まずはスプレッドシートにあるシート『メール内容』から必要なデータを取得しましょう。
次のようにすると、先ほど作成したスプレッドシートにアクセスすることができます。

var spreadsheet = SpreadsheetApp.getActive();


  • SpreadsheetApp
    →スプレッドシート操作用クラス

  • getActive()
    →GASに紐づいているSpreadsheetを開く関数

メール内容を取得する

次にシートにアクセスします。
以下のようにすると、シート名を使ってシートにアクセスすることができます。

var sheet = spreadsheet.getSheetByName('メール内容');
  • getSheetByName
    →名前を指定してシートを開く関数

次にメール内容を取得します。
以下のようにすると、シートの各セルから値を取得できます。

var from_name = sheet.getRange(2, 2).getValue();
var subject   = sheet.getRange(3, 2).getValue();
var body_text = sheet.getRange(4, 2).getValue();
  • getRange
    →スプレッドシートのセルを取得する関数(開始行, 開始列, 行数, 列数)

  • getValue
    →取得したセルの値を取得する関数(単体)

送信先リストを取得する

次に送信先リストを取得します。
メール内容と同じ方法で、シートの各セルから値を取得します。

var sheet = spreadsheet.getSheetByName('送信先リスト');
var list  = sheet.getRange(2, 1, sheet.getLastRow() - 1, sheet.getLastColumn()).getValues();
  • getLastRow()
    →シートの値入力済みの最終行を取得する関数

  • getLastColumn()
    →シートの値入力済みの最終列を取得する関数

  • getValues()
    →取得したセルの値を取得する関数(複数)

GASでメール送信処理の作成する

いよいよメールを送信します。
送信先リストに1件ずつメールを送信する為、繰り返し文(for)を使います。

for (var i = 0; i < list.length; i++) {
    var to_email = list[i][0];
    var options = {};
    options['name'] = from_name;

    GmailApp.sendEmail(to_email, subject, body_text, options);
}
  • GmailApp
    →Gメール操作用クラス

  • sendEmail()
    →メール送信関数(送信先メールアドレス, 件名, 本文, オプション)

  • options['name']
    →送信元名

これで準備は完了です。

GASからメールを送信する

メールを送信する

早速試してみましょう。
GASを保存して、作成した関数(myFunction)を選択し、実行ボタンを押してください。
『承認が必要です』と警告が表示された場合、全て許可してください。
※ 特に問題はないと思いますが、トラブル等発生した場合は責任を負いかねますのであらかじめご了承ください。

メールを確認する

メール送信の実行が完了したら、メールが届いているか確認してください。
問題なく届いていれば完了になります。

お疲れ様でした!

最後に

メールを一括で送れるのは便利ですよね。
次回は、スプレッドシートからGASのスクリプトを実行したり、送信先リストによって本文中の宛先名を変えたりしようと思います。

ではまた次回、大城でした!

おまけ

GASのコード置いていきます!

コード.js

function myFunction() {
  var spreadsheet = SpreadsheetApp.getActive();
  var sheet       = spreadsheet.getSheetByName('メール内容');

  // メール内容の取得
  var from_name = sheet.getRange(2, 2).getValue();
  var subject   = sheet.getRange(3, 2).getValue();
  var body_text = sheet.getRange(4, 2).getValue();

  // 送信先リストの取得
  var sheet = spreadsheet.getSheetByName('送信先リスト');
  var list  = sheet.getRange(2, 1, sheet.getLastRow() - 1, sheet.getLastColumn()).getValues();

  // メール送信
  for (var i = 0; i < list.length; i++) {
    var to_email = list[i][0];
    var options = {};
    options['name'] = from_name;

    GmailApp.sendEmail(to_email, subject, body_text, options);
  }
}