GASのメール送信は実行上限に注意!残り回数確認と上限以上のメールを送る方法
Google Apps Scriptのメール送信機能は便利な機能ですが、無料のGoogleアカウントの場合、1日の送信回数が100通までといった上限が設けられています。
GASによるメール送信の制限事項と、残り送信回数を確認する方法、さらに上限回数を超えてメールを送りたい場合の対処法を解説します。
Google Apps Scriptによるメール送信
Google Apps Script(GAS)には、メール送信に関する機能としてMailAppクラスが用意されています。
このMailAppクラスで使用できるsendEmailメソッドに対し、メール送信に必要な引数を指定することで、GASスクリプト実行でメールを送ることができます。
上記の記事ではMailApp.sendEmailメソッドを使い、たった1行のGASコードを実行するだけで、メールを自動送信する方法を解説しています。
無料アカウントのGASメール送信は1日100通の上限
Google Apps Script(GAS)のメール送信機能には、実行回数に制限が用意されています。
無料のGoogleアカウントの場合、GASのメール送信回数は1日100通が上限です。
それ以上送信しようとすると、上限に達したとしてメール送信がエラーしてしまいます。
なお、上記の表には、右側に「Google Workspace accounts」という有料アカウントの場合も書かれています。
有料のGoogle Workspaceアカウントの場合は、15倍となる1500通のメール送信が可能です。
GASメール制限はプロジェクトではなくアカウント単位
Google Apps Scriptのメール機能に設けられている上限は、残念ながらプロジェクト単位ではなく、アカウント単位です。
1つのGASプロジェクトでメール送信数が1日100通ではなく、1アカウントの全プロジェクトで合計100通までとなっています。
そのため、あるプロジェクトでメールをたくさん送りすぎると、他のプロジェクトでメール送信がエラーになることもあります。
複数宛先・CC/BCCもカウント対象なので注意
さらに、メールの送信回数は1回という形ではなく、宛先のメールアドレスの数だけカウントされます。
例えば、宛先に2つのメールアドレスを指定し、CCに1つのメールアドレスを指定してメールを送ると、合計3通という計算です。
自分宛てに受信確認のための宛先もカウント対象となり、CCやBCCに自分のメールアドレスを指定してもカウントされるため注意が必要です。
残り送信回数を確認する方法
Google Apps Script(GAS)で送信できるメールの残り回数を調べたい場合は、以下のメソッドを実行すると確認できます。
MailApp.getRemainingDailyQuota()
getRemainingDailyQuoataメソッドを実行した戻り値の数値が送信可能なメール数です。
上記のGAS実行例では、あと92通のメールが送れることが実行ログで表示されています。
1日100件以上メールを送信したい場合は?
Google Apps Scriptのメール送信1日100通という制限は、メールを使った自動プログラムを稼働させていると超えることがあります。
メール送信のGASスクリプトを頻繁に利用している場合に、1日100通以上送る方法について対応方法を紹介します。
有料のGoogle Workspaceアカウントになる
お金は必要になりますが、最も簡単にメール送信回数の上限を突破できるのは、Googleの有料サービス「Google Workspace(G Suiteの後継サービス)」を利用することです。
Google Workspaceアカウントになれば、1日のメール送信上限が100通から1500通に拡張されます。
15倍の送信数まで増えるので、十分な送信回数になることに加え、上限が変わるだけなので、工夫や手間は不要です。
ただし、一番ミニマムのWorkspaceプラン「Business Starter」でも月額680円(年間8160円)なので、無料で使っているユーザーには、費用コストは増えるのがデメリットです。
無料のGoogleアカウントを複数用意する
2つ目のメール上限対策は、無料のGoogleアカウントを複数用意することです。
1つのGoogleアカウントだけならメール送信数は100件ですが、2つのGoogleアカウントで200件になります。
たくさんのメールをGASで送りたい場合は、スクリプトを複数アカウントで共有した上で、それぞれメール送付先を分担することで100件を超えるメールを送ることができます。
この方法は、無料のGoogleアカウントを増やすことなので費用はかからないのがメリットです。
ただ、2つのアカウントでGoogle Apps Scriptのスクリプトを管理する必要があるので、管理コストが増えるのがデメリットです。
一方のアカウントでメール送信のdoGet関数をデプロイして、もう一方のGASスクリプトから実行して合計200件までメールを送付する方法を解説しています。
上記の方法であれば、フォーム入力時のトリガー実行などでも、2つのアカウントで1日に合計200通メール送信が可能です。
GASでGmailの下書きを作成し、手動送信する
3つ目のメール上限対策は、Google Apps ScriptではGmailのメールの下書きを作成するところで留め、実際にはGmailの画面から手動送信することです。
1日100通の制限はGASスクリプト実行でメールを送信した際に発生するため、下書き作成ではカウントされません。
Gmailのアプリケーションからメールを送信する場合は、上限数が異なり、1日500通となっています。
そのため、GASのスクリプト下書きで作成しておき、あとからGmailのGUI上でメールを手動で送れば、100通以上送ることが可能です。
ただ、この方法は、送信のところが人手の介在が不可欠になるため、作業コストが発生するのがデメリットです。
1件のメールで大量の宛先に送るかつ、送信時に人間によるチェックを必ず行う場合は、このやり方も選択肢の1つです。
まとめ・終わりに
今回、Google Apps Script(GAS)でメール送信に設けられている送信回数の上限を紹介しました。
無料のGoogleアカウントの場合、1日100通の上限があり、宛先(CC/BCC)1件につきカウントされる方式です。
宛先ごとのカウントなので、意外と簡単に上限に達してしまうので、メールでエラーする場合は上限に達している可能性があります。
getRemainingDailyQuoataというメソッドをGASスクリプトで実行すれば、残り回数を確認できるので、エラー時は確認しましょう。
1日100通以上を送りたい場合は、費用かかっても問題ないなら有料のGoogle Workspace利用、無料で利用したい場合は複数アカウント利用やGmailによる手動操作を検討してみてください。
ディスカッション
コメント一覧
Google Workspaceアカウントになれば、1日のメール送信上限が100通から1500通に拡張されます。
これは正確な情報でしょうか?
私workspaceのアカウントを購入したのですが、変わらず100件しか送れません。
1500通になるための設定などありましたらご教授いただきたいのですが、、、、
よろしくお願いいたします。
>kas4416様
コメントありがとうございます。
Google Workspaceアカウントだと、Google Apps Scriptのメール送信上限が100通から1500通に拡張される件はGoogle公式ページの情報なので、間違いございません。
私が保有しているGoogle Workspaceアカウントで、MailApp.getRemainingDailyQuota()でGASのメール送信上限数を確認したところ、1500通が確認できました。
kas4416様の環境が分からないため、どこを設定すればというアドバイスは難しいですが、設定が反映されれば拡張されると考えています。
ご回答ありがとうございます。
不躾な質問で失礼致しました。
その他色々閲覧したところ何度か支払いを済ませないと上限が上がらないというような記事を見かけました。詳しくは記載されておりませんでしたので確かでは無いのですが、もう少し調べてみます。
今後も参考にさせていただきます。ありがとうございました。
コメント失礼します。
「無料のGoogleアカウントを複数用意する」
の方法ですが、送信元のアドレスが同じでも100件以上送信することは可能でしょうか?
例えばAさんとBさんがそれぞれ、自身のGmailアドレスにinfo@abcompany.co.jpというアドレス(エイリアス)を追加して、GASを使ってそれぞれ100件ずつ、合計200件送信することは可能でしょうか?
明菜様
コメントありがとうございます。
>自身のGmailアドレスにinfo@abcompany.co.jpというアドレス(エイリアス)を追加して
このあたりの設定方法は私も詳しくないためわかりかねますが、送信上限は各Googleアカウント単位で設けられるため、もし同じメールアドレスを2つのGoogleアカウントで登録して送信元に設定すれば、送信上限には引っかからないと思われます。
ただ、私も同一メールアドレスのエイリアス追加は検証していないため、一度検証いただければと思います。
検証例)アカウントAでinfo@abcompany.co.jpを送信元に設定して10通送信、アカウントBでinfo@abcompany.co.jpを送信元に設定して20通送信してMailApp.getRemainingDailyQuota()をそれぞれ確認。
ためになる記事をいつもありがとうございます。GASによるGメールの100通制限を、無料のGoogleアカウントを複数用意することでクリアしようと考えていますが、次のような事例にアドバイスいただければ幸いです。
一日に100~150通のGメールを送信したいので、アカウントAとアカウントBを用意しました。
Gメールは同じ内容を一斉送信するのではなく、Gフォームから入力があった都度、スプレッドシート(のフォームの回答)に応じた内容のメールを個別に送信します。
そして、このGASコードをアカウントA(のプロジェクトA)とアカウントB(のプロジェクトB)の両方に記述しておきます。
このとき、MailApp.getRemainingDailyQuota()を使って、アカウントAの残通数が0になったらアカウントBのプロジェクトBの処理を行うようにしたいのですが、アカウントA(のプロジェクトA)からアカウントB(のプロジェクトB)を呼び出すにはどのようにすればよいのでしょうか?
よろしくお願いいたします。
hiro pon様
コメントありがとうございます。
記述いただいた状況からアカウントBで作成するプロジェクトBにはメールを送付する機能だけがあればよいかと理解いたしました。
その場合でしたら、以下のように実装するのがよいかと考えました。
①プロジェクトBにおいて、メールを送信するdoGet関数を作成
②プロジェクトBをウェブアプリとしてデプロイ(だれでも実行可として設定)
③プロジェクトAで、アカウントAの残通数が0の場合に②のデプロイされたURLを引数指定してUrlFetchApp.fetchを実行
デプロイURLにパラメータが付与可能です。フォーム入力情報をパラメータとしてセットすれば、回答内容に応じたメールを送付できます。
メール上限の100通を回避する方法として、汎用性がありそうですので、一度記事としてやり方をまとめてみたいと思います。
早速のアドバイスありがとうございます。思っていたよりもシンプルに実現できそうなことが分かりました。doGet関数やUrlFetchApp.fetchなどの使い方を確認しながら進めたいと思います。
“汎用性がありそうですので、一度記事としてやり方をまとめてみたい”につきましては、ニーズは多いと思いますのでぜひお願いいたします。
hiro pon様
先日コメント差し上げました、アカウントAのGASスクリプトから、アカウントBのメールを送るスクリプトを実行する方法について、記事でまとめてみました。
GASで上限1日100件以上のメールを送信する方法!別アカウントのGASをデプロイして実現
https://auto-worker.com/blog/?p=8440
こちらご参考にしていただければと思います。
ありがとうございます。
「GASで上限1日100件以上のメールを送信する方法!別アカウントのGASをデプロイして実現」は、特にデプロイされたURLへの引数の組み込み方が具体的でたいへん参考になりました。
これからもよろしくお願いいたします。