勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

GASとGmailを連携させて受信メール検索及びメール送信

  Google Apps Script Google

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通知にする形を取るほうが良さそう。

GASとLINEを連携させて通知を送る

所感

受信メールの条件指定検索は「未読かつ対応優先順位が高いアドレスからのメール」があればLINEに通知を送る等で個人ツールとしては使えそう。メール送信の方は上限が低い為、使いどころが難しい。

 - Google Apps Script Google

  関連記事

GASでGoogleカレンダーと連携してイベントの取得・追加・削除

Google Apps Scriptの勉強としてGoogleカレンダーと連携させ ...

GASで特定サイトをスクレイピングし、画像をGoogleドライブに保存

Google Apps Scriptで特定のサイトにスクレイピングし、画像が掲載 ...

GASで「カクヨム」の更新状況をスクレイピングで取得する

Google Apps Scriptの勉強として「カクヨム」の指定した小説が更新 ...

GASで特定サイトにログインした後にスクレイピングを行う方法

Google Apps Scriptの勉強として特定サイトにログインし、その後に ...

GoogleスプレッドシートとPHPを連携させデータを取得・追記する方法

GoogleスプレッドシートとPHPプログラムを連携させたいという案件をたまに見 ...