gmailでメールを何十人、何百人へと一斉送信したいと思ったことはないでしょうか。さらにその文面はテンプレートを使いながら、送信先の名前や必要なところは自動で変えたい。そんな方にGASを使ったピッタリの方法があります。
この記事ではスプレッドシートにGASのコードを書き、ドキュメントの文面テンプレートを参照してgmailを一斉送信する方法をご紹介します。
参考にさせて頂いたサイト
この内容は税理士の戸村涼子さんが公開されている記事を参考に自身の環境に合わせて実施したものになります。
具体的なコードや手法は以下の戸村さんのサイトをご確認いただきながら、実際にどんなところを変更したのか見てください。
GASでgmailを一斉送信する方法 準備編
準備編は大きく3つあります。
- メールの文面内容をドキュメントで作成する
- 送付先一覧のデータが入ったスプレッドシートを用意する
- スプレッドシートにGASのコードを書く
一つ一つご説明します。
1.メールの文面内容をドキュメントで作成する
ドキュメントの内容がそのままgmailの送信内容となります。
まずは送りたい内容でその作成をしましょう。
例えば以下のような形です。
{お名前}や{申し込み番号}、{お支払い金額}など{}で囲っている部分は変数を使用してスプレッドシートの項目を参照して自動で反映させることができます。
ドキュメントIDが必要になります。ドキュメントを開き、URLのd/~/editの間、つまり~に入っている部分を後程使用します。
2.送信先メールアドレス一覧データが入ったスプレッドシート作成
Formsを使ってできた回答でもいいですし、自身でまとめたスプレッドシートでも可能です。
大事なのは送信先のメールアドレスが入っていること、準備したドキュメントの{}で囲った部分に該当する項目があることです。
※項目名は一致していなくても大丈夫です。後程GASのコードを書くときに紐づけます。
3.スプレッドシートにGASのコードを書く
戸村さんのブログをご確認頂きながら、スプレッドシート側にGASのスクリプトを記載してください。
一つ一つのコードの意味合いも大変分かりやすくご説明されています。
今回の私の事例でいうと以下のコードを記載します。
function myFunction() {
var SheetName=SpreadsheetApp.getActiveSheet();
var SheetRow=SheetName.getDataRange().getLastRow();
var docMail=DocumentApp.openById("ドキュメントID");
var strDoc=docMail.getBody().getText();
var strSubj="タイトルを入れる"; //メールの件名
var strFrom="●●●●@gmail.com"; //Fromのアドレス
var strSend="オカヘイ株式会社"; //差出人の名前
for(var i=2;i<=SheetRow;i++){
var strUserID=SheetName.getRange(i,1).getValue();
var strToAd=SheetName.getRange(i,2).getValue();
var strUserName=SheetName.getRange(i,3).getValue();
var strFee=SheetName.getRange(i,4).getValue();
var strLec1=SheetName.getRange(i,5).getValue();
var strLec2=SheetName.getRange(i,6).getValue();
var strBody=strDoc.replace(/{申し込み番号}/,strUserID).replace(/{お名前}/,strUserName).replace(/{お支払い金額}/,strFee).replace(/{講座1}/,strLec1).replace(/{講座2}/,strLec2);
GmailApp.sendEmail(
strToAd, //スプレッドシート2列目メアド
strSubj, //タイトル
strBody, //ドキュメントをベースに置き換え
{
from: strFrom,
name: strSend
}
);
}
}
変更すべきポイントを説明します。
- 5行目 ドキュメントIDを記載
- 8行目 メールの件名となるタイトルを入れる
- 9行目 送信元のアドレスを入れる
- 10行目 差出人の名前を入れる
- 13~18行目 スプレッドシートの列名に変数を設定する
- 20行目 ドキュメントの{}をスプレッドシートで設定した変数に置き換える
※ここの{}内の文字はドキュメントで記載した{}と同じ内容でないといけません。
GASでgmailを一斉送信する方法 送信編
送信編は大きく3つあります。
- 実行押下でgmailを一斉送付する
- 認証の許可をする(初回実行時のみ)
- 100件以上送付したいときの回数チェック方法
1.実行押下でgmailを自動送付する
準備ができたら、スプレッドシートのスクリプト内、実行を押下します。
※実行押下するとメールが送信されるので、必ず事前に宛先を自身のアドレスにして確認しましょう。
2.認証の許可をする(初回実行時のみ)
初回実行時のみ以下の手順が必要です。
【権限を確認】をクリック
【アカウント】を選択
【詳細】をクリック
【(安全ではないページ)に移動】をクリック
【許可】をクリック
【実行ログ】で実行完了が表示されればOK
テストで届いたメール内容です。
赤枠部分はスプレッドシートから置き換えられていることが分かります。
3.100件以上送付したいときの回数チェック方法
無料のgoogleアカウントの場合、GASの一斉メール送信は1日100件が上限です。
複数日にわたって送付したいときの(回数回復しているか)確認や、現在の回数確認で知りたいときは以下のコードを記載します。
実行するfunctionの選択で「countTest」を選択する
「▷実行」を押下
実行ログに残回数が表示されます。
注意点
実際1日100通、2日にわけて200通ぐらいこの内容でgmail送付したのですが、以下のような点がありましたので共有します。
- メール送信完了しても、受信までにはタイムラグがある
- 相手先がicloudのメールを使用していた時、届いていなかったことがある
まとめ
GASでgmailを一斉送信する方法(スプレッドシートとドキュメントを使用)のご紹介でした。
特にドキュメントを使用するやり方であれば、カスタマイズもしやすく、自由度高いですよね。
ぜひ試してみてくださいね。
読んでくださった方の参考に少しでもなれば幸いです。
GAS を体系的に学びたいならUdemyがおすすめ
ひとつひとつのコードの内容、GASの基礎をしっかり理解したいとき、動画教材のUdemyは大変おすすめです。
私も利用して勉強しました。
以下の記事ではおすすめ講座を紹介しています。