![見出し画像](https://assets.st-note.com/production/uploads/images/96046104/rectangle_large_type_2_55703bb8b2e01ceb09213965ed86cf1e.png?width=1200)
SpreadsheetとGASとGMailでメールを送信する話。
お疲れ様です。
ライフマップ開発チームの大城です。
本日はSpreadsheetとGASを使って、メールを送信してみようと思います。
この記事では、以下の3つを行いたいと思います。
Spreadsheetでメール内容と送信先リストを作成
SpreadsheetとGASとGMailを連携
GASからメールを送信する
Spreadsheetでメール内容と送信先リストを作成
スプレッドシートを作成する
新規でスプレッドシートを作成しましょう。
サンプルはこちらです。
シートを作成する
1枚目のシートの名前を『メール内容』にします。シートの内容は下記の画像やサンプルを参考にしてください。
![](https://assets.st-note.com/img/1674179197871-740WTu3dOk.png?width=1200)
2枚目のシートの名前を『送信先リスト』にします。
シートの内容は、下記の画像やサンプルを参考にしてください。
![](https://assets.st-note.com/img/1674179344433-c2PFrhOKSe.png)
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);
}
}