本記事では、
- スプレッドシートに入力した複数のメールアドレス宛に
- 共通のテンプレートを使って
- ワンクリックで一斉送信する
方法を、実例を用いて紹介します。
ボタンをクリックすると、テーブルの内容およびテンプレートに基づいてメールを自動作成し、送信まで行う
スプレッドシートの準備
Googleスプレッドシートを立ち上げて、メーリングリストとテンプレートを作成します。
本実装例では、メーリングリストに「名前」「メールアドレス」「件名」「内容」の列を用意しました。
また、テンプレート(共通する内容)は別シートに用意しました。
Apps Scriptを起動してコードを記述
続いてApps Scriptを起動します。
「コード.gs」を開き、スプレッドシートの内容に基づいてメールを一斉送信するためのコードを記述します。
本実装では以下コードを記述し、「メールを一斉送信」というタイトル(プロジェクト名)を設定しました。
function sendEmails() {
// スプレッドシート全体を取得
const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
// メーリングリストを取得
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const data = sheet.getDataRange().getValues(); // 全データ取得
const headers = data[0]; // ヘッダー行
// 必要な列のインデックスを取得
const nameIndex = headers.indexOf('名前');
const emailIndex = headers.indexOf('メールアドレス');
const subjectIndex = headers.indexOf('件名');
const messageIndex = headers.indexOf('内容');
// テンプレートが保存されている「共通の内容」シートを取得
const commonSheet = spreadsheet.getSheetByName('共通の内容'); // テンプレートがあるシート名
const template = commonSheet.getRange('A1').getValue(); // テンプレート取得
// メール送信処理
for (let i = 1; i < data.length; i++) { // ヘッダーをスキップ
const row = data[i];
const name = row[nameIndex];
const email = row[emailIndex];
const subject = row[subjectIndex];
const message = row[messageIndex];
if (email) {
// テンプレート内の変数を置き換え
const body = template
.replace("name", name)
.replace("message", message);
// メール送信
GmailApp.sendEmail(email, subject, body);
}
}
SpreadsheetApp.getUi().alert('メール送信が完了しました!');
}
- スプレッドシートの入力内容を取得
-
2つのシート(メーリングリストとテンプレート)の入力内容を取得します。
const data = sheet.getDataRange().getValues();
→ すべてのセルのデータを2次元配列として取得し、const headers = data[0];
→ 配列の0番目(つまりスプレッドシートの1行目 = ヘッダー)取得します。headersの中身 → [‘名前’, ‘メールアドレス’, ‘件名’, ‘内容’]
const nameIndex = headers.indexOf('名前');
→headers
配列内で、文字列'名前'
が最初に現れるインデックス(列番号)を取得します。'名前'
はheaders
配列内の最初の要素なので、nameIndex
は0
になります。 - メールの作成と送信処理
-
for
文を使って、ヘッダーを除くテーブルの行数分のメールの作成と送信処理を行います。
テンプレート内の変数(”name”と”message”)は、メーリングリストから取得した内容(名前、内容)に置き換えることで、同じテンプレートを使いつつ部分的にカスタマイズすることができます。GmailApp.sendEmail(email, subject, body);
→ Gmailからメールを送信するためのメソッド。- 第一引数(必須):宛先メールアドレスを文字列で指定
- 複数指定する場合はカンマ区切りで記述します。(例: “example1@gmail.com,example2@gmail.com”)
- 第二引数(必須):メールの件名を文字列で指定
- 第三引数(必須):メールの本文を文字列で指定
- 第四引数(任意):以下のプロパティを設定できます。
- bcc: BCCの宛先を文字列で指定。
- cc: CCの宛先を文字列で指定。
- htmlBody: HTML形式の本文を指定。
- name: 差出人名を指定(送信者の名前部分を設定)。
他にも設定できるプロパティがあるので、気になる方は調べてみてください。
- 第一引数(必須):宛先メールアドレスを文字列で指定
コードを記述できたら保存し、スプレッドシートに戻ります。
メール作成ボタンの設置
スプレッドシートの「挿入」タブから「図形描画」を選択し、図形とテキストを組み合わせボタンを作成します。
作成したボタンは、スプレッドシートの適当な位置に移動させます。
設置したボタンをクリックし、ボタン右の方に表示される「⋮」をクリックして「スクリプトを割り当て」を選択します。
ウィンドウが表示されるので、STEP 2で作成したメソッド名(本実装ではsendEmails
)を記入します。
ボタンをクリックし、Googleアカウントと連携
STEP 3で設置したボタンをクリックし、Googleアカウントと連携させると同時にメールが一斉送信されるかを確認します。
スクリプトを割り当てたボタンを初めてクリックすると、認証を求めるウィンドウが表示されるので、以下画像の通り認証を進めていきます。
特に問題がなければコードが実行され、連携したGoogleアカウントからGmailメールが送信されるはずです!