GASとGmailを連携させて受信メール検索及びメール送信
Google Apps ScriptとGmailを連携させてみたい。「未読かつ特定のアドレスから受信」というように条件指定したメールを検索したり、GAS経由でGmailを送信する(ついでにGoogleドライブと連携してファイル添付する)方法をメモ。
メール関連のリファレンス
https://developers.google.com/apps-script/reference/gmail/
受信メールを条件指定検索
ソース
function getMail(){ //検索キーワード指定 //未読を検索 const query = 'is: unread'; //送信元メールアドレスを指定して検索 //const query = 'from: hoge@hoge.jp'; //件名を指定して検索 //const query = 'subject: メール件名'; //未読かつメールアドレス指定で検索 //const query = 'is: unread from:hoge@hoge.jp'; //開始行 const start = 0; //終了行 const max = 10; //メールの検索 const threads = GmailApp.search(query, start, max); //メールの取得 const messagesForThreads = GmailApp.getMessagesForThreads(threads); for(const messages of messagesForThreads){ //メール件名 console.log(messages[0].getSubject()); //メール本文 console.log(messages[0].getBody()); } }
注意点
GASの利用制限ページを見るとGmailの読み書きは20,000件/日(無料アカウントの場合)と余裕があるように見えるが、以下記事を見る限りではそうでもないっぽい。
https://tonari-it.com/gas-gmail-search-limit/#toc2
件数指定やある程度条件で絞り込んで運用する必要あり。
メール送信
ソース
//メール送信 function sendMail(){ //送信先メールアドレス const recipient = 'hoge@hoge.jp'; //メール件名 const subject = 'テストメール件名'; //メール本文 const body = "メール本文\n改行\nメール本文"; //添付ファイルのフォルダ指定 const folder = DriveApp.getFolderById('xxxxxxxxxxxxxxxx'); //添付ファイル指定 const file = folder.getFilesByName('test.pdf').next() //メール送信 GmailApp.sendEmail(recipient, subject, body, {attachments: [file]}) }
Googleドライブのフォルダ指定
Googleドライブでフォルダを作成し、ブラウザからアクセスすると「https://drive.google.com/drive/folders/xxxxxxxxxxxx」のようなURLになる。「xxxxxxxxxxxx」の部分を「const folder = DriveApp.getFolderById('xxxxxxxxxxxxxxxx');」に指定する。
送信上限数
無料アカウントの場合、100件/日とかなり少ない点に注意する。可能な限り送信内容はまとめて送信件数を減らすか、以下のようなLINE通知にする形を取るほうが良さそう。
所感
受信メールの条件指定検索は「未読かつ対応優先順位が高いアドレスからのメール」があればLINEに通知を送る等で個人ツールとしては使えそう。メール送信の方は上限が低い為、使いどころが難しい。
関連記事
-
GASで祝日一覧(年月日と祝日名)データをJSON出力するAPIを作成
PHPのシステム案件で祝日を取得し、処理を行う箇所があった。Googleカレンダ ...
-
GASとGoogleカレンダを連携し暦通りではない店休日を取得する方法
小売店等のサイトで営業日カレンダーみたいなものを表示させる際に今まではPHPで管 ...
-
GASを利用してGmailに届いたメール内容をGoogleスプレッドシートに記入する方法
WordPressのContact Form7から送信した内容をGmailで受け ...
-
GASで「小説家になろう」サイトの更新通知をLINEに送る方法
Google Apps Scriptの勉強として「小説家になろう」サイトの特定小 ...
-
GASのプログラム実行時間計測方法と各種制限についてのメモ
PHP等でプログラムを組んでいると、あまり実行時間について気にすることはなかった ...