earthpg:GAS専門のプログラミングスクール

これで解決!GASでメール送信の上限とエラーを克服する方法

GASでたくさんのメールを送信したかったんだけど、「上限」に引っかかっちゃって…どうしたらいいんだろう。困ったなぁ。
猫男
猫男
catman
catman
ふふっ、その問題ならcatmanに任せろ!GASでのメール送信の上限とエラーを回避する方法を教えてやるさ。

GASでのメール送信とその上限

GASを使ってメールを送信するには便利だが、Googleのガイドラインに従って1日に送信可能なメール数に上限があるんだ。例えば、個人アカウントなら100件、Google Workspaceアカウントなら1500件までだ。この上限を超えるとエラーが発生し、メール送信できなくなる。

エラーを回避する方法

  1. スケジュールを分散する:送信時間を分散させ、1日あたりの送信数が少なくなるようにうまくトリガーを設定する。
  2. アカウントを分ける:複数のGoogleアカウントを使って、メール送信作業を分散させる。
  3. メールリストを分割:リストをいくつかのグループに分けて、日にちをずらして送信する。
あ、そうか!トリガーを使って送信時間を分けるって考え方もあるんだね。それなら、GASのトリガー設定で実現可能だ…!
猫男
猫男

GASトリガーでメール送信を管理する

トリガーはGASのスクリプトを自動的に実行してくれる便利な機能だ。メール送信トリガーを設定することで、例えば毎日決まった時間に送信したり、特定の曜日に送信することができる。

トリガースクリプトの例


function scheduleEmail() {
  var emailAddress = "someone@example.com";
  var subject = "Scheduled Email";
  var message = "このメールはスケジュールされて送信されています。";
  GmailApp.sendEmail(emailAddress, subject, message);
}

GmailApp.sendEmail()を使って、メールを送信するスクリプトだ。この関数をトリガーで定期的に実行する設定が可能だ。

catman
catman
トリガーはGASエディタの時計マークから簡単に設定できる。設定画面でこの四角い小さな窓をクリックするんだ。

GASを使ったメール送信の高度なテクニック

メール送信の際に、送信元をnoreplyに設定したい場合もあるはずだ。

noreplyアドレスを設定する

実は、GASでは直接noreplyとしてメールを送信することはできないんだ。しかし、例えば「noreply@example.com」のようなメールを追加設定し、G Suiteの場合、管理者がそのアドレスを送信できるようにすることで実現できる。

複数のメールアドレスをCCに入れる方法


function sendEmailWithCC() {
  var emailAddress = "primary@example.com";
  var ccAddresses = "cc1@example.com, cc2@example.com";
  var subject = "CCでのメール送信";
  var message = "このメールは複数のCCアドレスに送信されています。";
  GmailApp.sendEmail(emailAddress, subject, message, {cc: ccAddresses});
}

ccプロパティを使って、一度に複数のメールアドレスを指定できる。カンマで分けるだけだ。

今まで知らなかったなぁ…これで一度に複数の人に情報を届けられるね。
猫男
猫男

練習問題:GASで添付ファイル付きメールを送信しよう

ファイルIDを使用して、GASを使ったメールに添付ファイルをつけ、送信するスクリプトを書きなさい。

解答・解説


function sendEmailWithAttachment() {
  var emailAddress = "recipient@example.com";
  var subject = "添付ファイル付きのメール";
  var message = "このメールにはファイルが添付されています。";
  var fileId = "FILE_ID_HERE"; // 実際のファイルIDを記入する
  var file = DriveApp.getFileById(fileId);
  
  GmailApp.sendEmail(emailAddress, subject, message, {
    attachments: [file.getAs(MimeType.PDF)]
  });
}

DriveApp.getFileById(fileId): Googleドライブ内のファイルを取得するためのメソッド。file.getAs(MimeType.PDF): ファイルを指定したフォーマット(ここではPDF)で取得し、添付ファイルとしてメールに添付する。

catman
catman
この方法を使えば、メールに添付ファイルをつけて送る事も簡単にできる。活用してみろよ!