LoginSignup
22
16

More than 5 years have passed since last update.

GASでSendGridを使ってメールを1日100件以上送信する方法

Posted at

GAS(Google Apps Script)でSendGridのWEB APIを利用してメールを送信する方法をまとめました。これでメール送信可能数 100通/日 の限界を突破しましょう:thumbsup_tone1::sunny:

背景

SendGridとは

SendGridはメールを配信できるクラウドサービスです。

なぜGASでSendGridを使うのか

GASではGmailを操作してメールを送ることができるので、わざわざSendGridのような外部サービスを利用する必要がないと思われるかもしれません。

しかし、GASは一日に送れるメールの数(正確にはメールの受取人の数)に制限があり、普通のGoogleアカウントの場合は100件/日、Gsuiteの場合は1500件/日までしか送ることができません。:frowning2:

そこでメールの送信にSendGridを利用することで、Freeプランでも月間12000通まで送ることができるようになります。:kissing_heart:

手順

アカウントの登録

よしなにアカウントを登録します。

登録の際に審査がありますが、私がやった際は数時間ほどでログイン情報が送られてきました。

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に送信者のアドレスを入れていますが、特に必要はありません。また、オプションがあるので、ドキュメントを参考にしてください。

22
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
16