GAS(Google Apps Script)でSendGridのWEB APIを利用してメールを送信する方法をまとめました。これでメール送信可能数 100通/日 の限界を突破しましょう
背景
SendGridとは
SendGridはメールを配信できるクラウドサービスです。
なぜGASでSendGridを使うのか
GASではGmailを操作してメールを送ることができるので、わざわざSendGridのような外部サービスを利用する必要がないと思われるかもしれません。
しかし、GASは一日に送れるメールの数(正確にはメールの受取人の数)に制限があり、普通のGoogleアカウントの場合は100件/日、Gsuiteの場合は1500件/日までしか送ることができません。
そこでメールの送信にSendGridを利用することで、Freeプランでも月間12000通まで送ることができるようになります。
手順
アカウントの登録
よしなにアカウントを登録します。
登録の際に審査がありますが、私がやった際は数時間ほどでログイン情報が送られてきました。
APIキーの取得
APIキーを作成します。一度しか表示されないのでどこかに保存しておきましょう。
DNSにレコードを追加(独自ドメインで送る際)
この時点で送れるようになったのですが、今のままだとメールを送信した際に「sendgrid.net 経由」という文字が送り主の隣に入るようになります。
これを消すためにはDNSにレコードを追加する必要があります。
Domain Authenticationから指示にしたがってレコードを追加すれば設定することができます。
「Use automated security」をチェックするか否かで追加するレコードがCNAMEかMXとTXTになります。私はなぜかCNAMEが追加できなかったのでチェックを外しました。
具体的な違いについては公式サイトを参考にしてください。
スクリプトを追加
ここまで設定ができればあとはWEB APIを叩くだけです。
SEND_GRID_ENDPOINT = "https://api.sendgrid.com/v3/mail/send";
SEND_GRID_API_KEY = "取得したAPI KEY";
function sendEmailBySendGrid(to,subject,from,from_name,body_text){
var body = {
"personalizations": [
{
"to": [
{
"email": to
}
],
"bcc":[
{
"email": from
}
],
"subject": subject
}
],
"from": {
"email": from,
"name" : from_name
},
"content": [
{
"type": "text/html",
"value": body_text
}
]
}
var payload = JSON.stringify(body);
UrlFetchApp.fetch(SEND_GRID_ENDPOINT, {
method: 'POST',
headers: { "Content-Type": 'application/json',
"Authorization": "Bearer "+SEND_GRID_API_KEY},
payload: payload
});
}
送信できたかを確認するためにBCCに送信者のアドレスを入れていますが、特に必要はありません。また、オプションがあるので、ドキュメントを参考にしてください。