勉強したことのメモ

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でNintendo Storeをチェックし指定したソフトが〇円以下の際に通知する方法

Google Apps Scriptを利用してNintendo Storeをスク ...

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

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

GASで「小説家になろう」サイトの更新通知をLINEに送る方法

Google Apps Scriptの勉強として「小説家になろう」サイトの特定小 ...

GASとLINEを連携させて通知メッセージを送る方法のメモ

Google Apps ScriptとLINEを連携させ、LINEに何らかの通知 ...

GASを利用してGmailに届いたメール内容をGoogleスプレッドシートに記入する方法

WordPressのContact Form7から送信した内容をGmailで受け ...