イベントの参加者や顧客リストへ、一件一件手作業でメールを送っていませんか?
数十人、数百人にもなるリストへのメール送信は、気を遣う面倒な作業です。
- 名前や宛先のコピペに時間がかかる
- 宛名を間違えていないか
- 送信漏れはないか

これらの作業は気にかける事や、やる事が多くて神経も減らしますよね。。
もし、その定型的なメール送信が、スプレッドシートのボタン一つで完了するとしたらどうでしょう?
この記事では、Googleが提供するプログラミングツールである、GAS(Google App Script)を使って、リスト内のメールアドレスに自動送信する方法について解説していきます。
プログラミングと聞くと、



少し難しそうだからいいや。。
と感じるかもしれませんが、大丈夫です。
この記事では、プログラミングのコードをコピペで済む様にしています。
具体的には以下の様な手順で進めていきます。
「通知状況」が「未完了」の人にだけメールを自動送信する
この様な手順で「メール自動送信機能」を作ります。



画像付きで実際の画面の操作方法も解説するので、安心して最後までついてきてください!
自動化出来る作業をまだ手作業でこなしていませんか?
私はGoogleが提供するプログラミングツールである、GAS(Google App Script)と生成AIを活用してお客様の業務を自動化や効率化するサービスを提供しています。
もし今の業務の中で
- 毎回の手作業に手間を感じる
- もっと業務を効率化したい
- ルーティン業務を自動化したい
このような不満を抱えてらっしゃるなら是非一度ご連絡ください。



「こんなことできる?」くらい軽めのご相談でも大歓迎です!
GAS(Google App Script)とは
ここでは、GAS(Google App Script)を知らない人向けに簡単にGASについて解説していきます。
GASとは、Googleが提供する、業務の自動化に特化したプログラミングツールです。
「スプレッドシート」「Gmail」「Googleドライブ」といった、ビジネスでよく使うGoogleのサービス同士を連携させ、日々の作業を自動化する事が出来ます。



うちはExcelがメインだから…
という方もご安心ください。
GoogleドライブにExcelファイルをアップロードして、Excelファイルをスプレッドシートに変換すれば、ExcelファイルでもGASを使う事が可能です。



Excelをスプレッドシートに変換する方法について気になる方はこちらの記事をご参照ください!





GASを使えば、こんな事が出来ます!
- Googleのサービスを自由に連携させる
-
スプレッドシートの情報を元に、自動でGmailを送信したり、Googleカレンダーに予定を追加したり、Googleドライブにフォルダを自動作成したり。
複数のサービスをまるで一つのソフトのように連携させて、業務を自動化できます。
- 決まった時間に、完全に“ほったらかし”で動かす
-
「毎日朝8時にレポートを作成」「毎週月曜の朝9時にタスクを通知」といったように、パソコンを触っていなくても、設定した時間に自動でプログラムを実行できます。
日次・週次・月次の定型業務を、“ほったらかし”にすることが可能です。
- Googleのサービスにオリジナルの機能を追加出来る
-
スプレッドシートやGoogleフォームを使ってる際「あとこんな機能があったらいいのに…」と思うこともあると思います。
その「あとこれさえあれば…」を実現する事が出来ます。
GASを使ってオリジナルの機能を追加することで、「かゆいところに手が届かない」を解決します。
この様に、Googleのサービスを自分なりにアレンジして自動化まで出来るのがGASの大きな魅力です。
準備するもの
準備するものは、以下の2つです。
- スプレッドシート
- Gmail
この2つだけでOKです!
この記事では「スプレッドシートのサンプル」を活用して解説します。
「スプレッドシートのサンプル」は以下で活用いただけます。
一緒に勉強したい方は、上記のURLをクリックして、「ファイル」→「コピーを作成」を押してコピーをご活用ください



必要な人だけで大丈夫なのでお任せします!
GASの設定方法
ここからは、GASを実際に設定する方法について解説していきます。







この画面になったら設定完了です!
GASで自動メール送信機能を設定する
ここからは実際に、GASのコードを記述していきます。
コードのコピーを貼り付ける
まず最初に、すでに記述があるfunction myFunction() {}
を全て削除してください。
何も書かれてない状態になったら、以下のコードを先ほどの画面に貼り付けてください。
function sendEmailsWithStatusCheck() {
// ▼▼▼ ここから下を、あなたの環境に合わせて編集してください ▼▼▼
// 1. メールの件名を「" "」の間に書きます
const SUBJECT = "【〇〇イベント】お申し込みありがとうございます(キャンセル待ちのご案内)";
// 2. メールの本文を「` `」の間に書きます
// 本文中の {{name}} は、下の「4.」で指定した列の氏名に自動で置き換わります。
const BODY_TEMPLATE =
`{{name}}様
この度は、「〇〇イベント」にお申し込みいただき、誠にありがとうございます。
ご好評につき、現在お申し込みが定員に達しております。
つきましては、{{name}}様を「キャンセル待ち」として登録させていただきました。
今後、キャンセルが発生した際には、改めてご案内を差し上げます。
何卒よろしくお願い申し上げます。
`;
// 3. 通知状況を管理する設定
// C列に「通知状況」がある場合、「3」と指定します。
const STATUS_COLUMN = 3; // 「通知状況」が入力されている列
const STATUS_INCOMPLETE = '未完了'; // メールを送る対象のステータス名
const STATUS_COMPLETE = '完了'; // 送信後に自動で入力されるステータス名
// 4. 氏名とメールアドレスが「何列目」にあるかを数字で指定します
// A列なら 1, B列なら 2, C列なら 3 となります。
const NAME_COLUMN = 1; // 氏名が入力されている列
const EMAIL_COLUMN = 2; // メールアドレスが入力されている列
// 5. 宛先リストが書かれているシート名を「' '」の間に書きます
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('シート1');
// ▲▲▲ 編集するのはここまでです ▲▲▲
// --- この下のコードは変更しないでください ---
const dataRange = sheet.getRange(2, 1, sheet.getLastRow() - 1, sheet.getLastColumn());
const data = dataRange.getValues();
for (let i = 0; i < data.length; i++) {
const currentRowNumber = i + 2;
const row = data[i];
const status = row[STATUS_COLUMN - 1];
if (status === STATUS_INCOMPLETE) {
const name = row[NAME_COLUMN - 1];
const emailAddress = row[EMAIL_COLUMN - 1];
let body = BODY_TEMPLATE.replace(/{{name}}/g, name);
GmailApp.sendEmail(emailAddress, SUBJECT, body);
sheet.getRange(currentRowNumber, STATUS_COLUMN).setValue(STATUS_COMPLETE);
}
}
}
あなたが設定すべき箇所は①と②だけです。
重要な箇所だけ解説します。
- const SUBJECT = “(件名を入れてください)”;
-
このコードの中の
""
の中で件名を記述してください。()は消すようにしてください。
- const BODY_TEMPLATE =
`
(本文を入れてください)
※名前を入れる箇所だけ{{name}}と記述
`; -
こちらも件名の様に
``
の中に本文を入れてください。一点注意点を挙げるならリストの中の名前を本文に入れたい時は、
{{name}}
と記述する様にしてください。 - const STATUS_COLUMN = 3; // 「通知状況」が入力されている列
-
こちらは、C列に「通知状況」があることを想定しています。
C列は3番目にあるから
3
と書いてます。ご自身の「通知状況」がある列番号に合わせて柔軟に数字を変更してください。
- const NAME_COLUMN = 1; // 氏名が入力されている列
const EMAIL_COLUMN = 2; // メールアドレスが入力されている列 -
こちらも通知状況と同様にご自身のスプレッドシートに合わせて柔軟に変更してください。
こちらの例では、氏名の列が「A」列にあるので、
1
と記述してます。そしてメールアドレスの列が「B」列にあるので、
2
と記述しています。 - const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(‘シート1’);
-
こちらは、シート名を記述する箇所です。
'シート1'
の箇所を、ご自身のスプレッドシートのシート名に変更してください。
コードを保存と実行
貼り付けが終わったら、
Macユーザーの方は「Command + S」
Windowsユーザーの方は「Ctrl+ S」
を押してください。
これでコードが保存されます。
次に、このコードを実行する必要があります。
コードを実行するために、
Macユーザーの方は「Command + R」
Windowsユーザーの方は「Ctrl + R」
を押してください。
すると以下のような画面になったと思います。


この画面になったら「権限を確認」をクリックしてください。
すると以下のような画面になると思います。


この画面になったらご自身のアカウント名をクリックしてください。
すると最後に以下のような画面になります。


この画面になったら「続行」を押してください。
これで完了です。
問題なければ、コードが実行されます。
するとコードを記述する画面の下から「実行ログ」という画面が出てきます。


この画面の中に「実行完了」と記載があったら大丈夫です。
実際に確認してみる
実行完了したら実際にスプレッドシートとGmailを確認してみましょう。
スプレッドシートは、「通知状況」の列で、「未完了」の項目が「完了」に切り替わってるのが確認できると思います。
実際にGmailを確認してみても、送信履歴でメールが一斉送信されているのが確認できると思います。
スプレッドシート内にボタンを設置
これらの作業を毎回プログラミングの画面を開いて実行するのは面倒だと思います。
そこで、スプレッドシートに「メールを送信」というボタンを作ります。
この「メールを送信」ボタンを押すだけで、先ほどと同じ様に「通知状況」が「未完了」の人にだけメールを自動送信出来ます。






sendEmailsWithStatusCheck
↑こちらをコピペして貼り付けてください。
最後に「確定」ボタンを押してください。


最後に実際にボタンを押してみてください。
自動でリストの中にメールが送信されるのが確認出来ると思います。



これで完成です!大変だったと思いますがお疲れ様でした!
まとめ
最後まで読んでいただきありがとうございました。
スプレッドシート内にあるリストにメールを自動送信する機能は様々な事に応用ができます。
この機能を活用することで、これまで手作業で行っていた定型的なメール送信の手間を大幅に削減し、ヒューマンエラーを防ぐことができます。
ぜひ、まずは身近な業務から試してみて、その便利さを実感いただければ幸いです。
私はGoogleが提供するプログラミングツールである、GAS(Google App Script)と生成AIを活用してお客様の業務を自動化や効率化するサービスを提供しています。
もし今の業務の中で
- 毎回の手作業に手間を感じる
- もっと業務を効率化したい
- ルーティン業務を自動化したい
このような不満を抱えてらっしゃるなら是非一度ご連絡ください。



「こんなことできる?」くらい軽めのご相談でも大歓迎です!