【GAS】エラー対処法|Exception: 上限を超えています: メッセージあたりの受信者数(App Script Gmailapp.createDraft, MailApp.sendEmail)

Gmail Gメール GAS-prograshi(プロぐらし)-kv AppsScript
記事内に広告が含まれていることがあります。
[PR]

Google App Script(GAS)を使ってメール送信をするときに、「Exception: 上限を超えています: メッセージあたりの受信者数」というエラーが発生してメールを送信できない、あるいはドラフトを作成することができないことがあります。

ここではその原因と対処法についてまとめています。


エラーの内容

このエラーは「GmailApp.createDraft」でドラフトを作成したり、「MailApp.sendEmail」でメールを送信するときに発生するエラーです。

表示されるエラーメッセージは以下になります。

日本語の場合

Exception: 上限を超えています: メッセージあたりの受信者数

英語の場合

Exception: Limit Exceeded: Email Recipients Per Message.



エラーの原因

エラーの原因は作成あるいは送信しようとしているメールの受信者数が50人を超えていることです

これは、無料版・有料版(Google Workspace)に関わらず適用されます。


(参考)Google Workspace: Google サービスの割り当て


例えば、以下のようなGmailApp.createDraftがあるとします。

let recipients = "aaa@gmail.com,bbb@gmail.com,ccc@gmail.com,,,,,,,"

//Gmail下書きの作成
GmailApp.createDraft( test@gmail.com, subject, body, {
  name: "送信者名",
  replyTo: test@gmail.com,
  bcc: recipients,
})


このとき、bccの宛先で指定している「recipients」は「aaa@gmail.com,bbb@gmail.com,,,,,,」のような文字列で指定しています。

ここの宛先が50人(正確にはToの宛先も含まれるので49人)を超えると「Exception: 上限を超えています: メッセージあたりの受信者数」というエラーが表示されます。



エラー対処法

このエラーに対処するには、宛先が50人を超える場合にメールを分割することです。

recipientsの宛先数が多すぎてエラーが発生するコードを以下とします。

let recipients = "aaa@gmail.com,bbb@gmail.com,ccc@gmail.com,,,,,,,"

//Gmail下書きの作成
GmailApp.createDraft( test@gmail.com, subject, body, {
  name: "送信者名",
  replyTo: test@gmail.com,
  bcc: recipients,
})


例えば、これを以下の用書き換えます。

※50人ピッタリで区切るとToの宛先数が増減したときにエラーが発生してしまうので、ここではBcc40人毎に区切ります。

let recipients = "aaa@gmail.com,bbb@gmail.com,ccc@gmail.com,,,,,,,"
let recipientsArr = recipients.split(",");
let repeatNum = Math.ceil(recipientsArr.length/40);

let i = 0;
while( i < repeatNum ){
  //Gmail下書きの作成
  GmailApp.createDraft( test@gmail.com, subject, body, {
    name: "送信者名",
    replyTo: test@gmail.com,
    bcc: recipientsArr.slice(40*i, 40*(i+1)).join(","),
  })
  
  //console.log("下書きを作成しました:", i);
  //console.log("PerRecipients:", recipientsArr.slice(40*i, 40*(i+1)).join(","));

  i += 1;
}


こうすることで、宛先40人毎に区切ってドラフトの作成をしてくれます。

もちろん、「GmailApp.createDraft」を「MailApp.sendEmail」に変更すればメール送信をしてくれます。

注意点

MailApp.sendEmailでメールを送信する場合、無料版は1日あたり100アドレスまでと決まっているのでご注意ください。

(参考)【GAS】無料版と有料版で実行できるプログラムの制限や上限の違い|まとめ一覧表



タイトルとURLをコピーしました