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で特定サイトをスクレイピングし、画像をGoogleドライブに保存
Google Apps Scriptで特定のサイトにスクレイピングし、画像が掲載 ...
-
-
GASとGoogleカレンダを連携し暦通りではない店休日を取得する方法
小売店等のサイトで営業日カレンダーみたいなものを表示させる際に今まではPHPで管 ...
-
-
GASで祝日一覧(年月日と祝日名)データをJSON出力するAPIを作成
PHPのシステム案件で祝日を取得し、処理を行う箇所があった。Googleカレンダ ...
-
-
GoogleスプレッドシートとPHPを連携させデータを取得・追記する方法
GoogleスプレッドシートとPHPプログラムを連携させたいという案件をたまに見 ...
-
-
GASとAdSense Management APIを使って前日分の売り上げをメール通知する方法
Googleアドセンスの売り上げをチェックする際、いつもはアドセンスの管理画面に ...