Gmail、スプレッドシートおよびGASを自分で調べて使える方向けの記事です。
設定方法
以下のようなスプレッドシートを作成します。

以下のスクリプトをスプレッドシートに設定。
function myFunction() {
/* スプレッドシートのシートを取得と準備 */
var mySheet = SpreadsheetApp.getActiveSheet(); //シートを取得
var rowSheet = mySheet.getDataRange().getLastRow(); //シートの使用範囲のうち最終行を取得
/* 送信の確認 */
var today = new Date();
var strDate=mySheet.getRange(4,2).getValue(); //送信日
if (Utilities.formatDate(today, 'Asia/Tokyo', 'yyyy/MM/dd') !== Utilities.formatDate(strDate, 'Asia/Tokyo', 'yyyy/MM/dd')) {
Browser.msgBox("送信日が違うため送信できません。");
return -1;
}
var isOk = Browser.msgBox((rowSheet - 6) + "件送信されます。続けますか?", Browser.Buttons.OK_CANCEL);
if (isOk !== "ok") {
Browser.msgBox("送信を中止します。");
return -1;
}
/* fromアドレス、差出人名を準備 */
var strFrom = mySheet.getRange(2,2).getValue(); //fromアドレス
var strSender = mySheet.getRange(3,2).getValue(); //差出人
/* シートの各行についてメールを送信 */
for (var i = 7; i <= rowSheet; i++) {
/* 送信済みの行はスキップ */
var sent = mySheet.getRange(i,4).getValue(); //toアドレス
if (sent !== "") {
mySheet.getRange(i,4).setValue("送信スキップ");
continue;
}
var strEmail = mySheet.getRange(i,1).getValue(); //toアドレス
var strSubject = mySheet.getRange(i,2).getValue(); //メールタイトル
var strBody = mySheet.getRange(i,3).getValue(); //本文
/* メールを送信 */
GmailApp.sendEmail(
strEmail, //toアドレス
strSubject, //メールタイトル
strBody, //本文
{
from: strFrom, //fromアドレス
name: strSender //差出人
}
);
/* メールの送信を記録 */
mySheet.getRange(i,4).setValue("送信済み");
}
}
ボタンにスクリプトを割り当てて出来上がり。
手順
- スプレッドシート「2020xxxx_サンプル一斉送信」をコピーして適当に名前変更
- 設定を入力
- 差出人メールアドレス
- 差出人
- 送信日
- 送信リストの入力
- メールアドレス
- タイトル
- 本文
- 「一斉送信する」を押下
- (一度のみ)認証の確認で「続行」を押下
- (一度のみ)自分のアカウントを選択
- (一度のみ)「許可」を押下
- 送信件数が表示されるので問題なければ「OK」を押下
- 「送信状況(自動入力)」に送信結果が表示される
- Gmailの送信済みから送信したメールを確認できる
注意事項
- 誤送信防止のため「送信日」が当日でないと送信できません。
- 空行はエラーとなるので、上に詰めたデータを作ること。
- Gmailに設定しているメールアドレスからしか送れない。
- 「送信状況(自動入力)」にすでに入力がある行は送信がスキップされます。
- A~D列はプログラムで指定していますので列の追加は禁止です。
- 1~6行もプログラムで指定していますので行の追加は禁止です。
- F列以降は自由に使って問題ありません。
用法用量を守って正しくお使いください。