
Gmailの未読メール処理をGASで自動化!業務効率を劇的に向上させるテクニックを伝授します。
GASで未読メールを取得する基本
GmailをGAS(Google Apps Script)で操作すると、メールの自動処理が非常に簡単になります。特に、未読メールの取得は、タスク管理や通知システムなど、様々な応用が可能です。この記事では、GASを使ってGmailの未読メールを取得し、処理する基本的なスクリプトを紹介します。
まず、GASエディタを開き、新しいスクリプトを作成します。GASエディタは、Google Workspaceのアプリからアクセスできます。
次に、以下のコードを記述します。このコードは、Gmailの未読スレッドを取得し、その件名と送信者を表示します。
function getUnreadEmails() {
var threads = GmailApp.search('is:unread');
for (var i = 0; i < threads.length; i++) {
var messages = threads[i].getMessages();
var latestMessage = messages[messages.length - 1];
Logger.log('件名: ' + latestMessage.getSubject());
Logger.log('送信者: ' + latestMessage.getFrom());
}
}
このスクリプトを保存し、実行します。初回実行時には、GASにGmailへのアクセス許可を与える必要があります。
スクリプトを実行すると、ログに未読メールの件名と送信者が表示されます。GmailApp.search('is:unread')
が未読メールを検索する部分です。Logger.log()
は、GASのログに出力するための関数です。
未読メールの応用的な処理
未読メールを取得するだけでなく、さらに様々な処理を行うことができます。例えば、特定のキーワードを含むメールを抽出し、スプレッドシートに記録したり、特定の送信者からのメールを自動的にアーカイブしたりすることも可能です。
以下の例では、特定のキーワードを含む未読メールをスプレッドシートに記録します。
function logEmailsToSheet() {
var threads = GmailApp.search('is:unread subject:"重要"');
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
for (var i = 0; i < threads.length; i++) {
var messages = threads[i].getMessages();
var latestMessage = messages[messages.length - 1];
var subject = latestMessage.getSubject();
var from = latestMessage.getFrom();
sheet.appendRow([subject, from, new Date()]);
threads[i].markRead(); //メールを既読にする
}
}
このスクリプトでは、GmailApp.search('is:unread subject:"重要"')
で、件名に「重要」というキーワードを含む未読メールを検索しています。取得したメールの件名、送信者、受信日時をスプレッドシートに記録し、threads[i].markRead()
でメールを既読にしています。
また、threads[i].markRead()
を削除すれば、メールを未読のままにしておくことも可能です。
さらに、特定の送信者からのメールを自動的にアーカイブするには、以下のようなスクリプトを使用します。
function archiveSenderEmails() {
var threads = GmailApp.search('from:"example@example.com" is:unread');
for (var i = 0; i < threads.length; i++) {
threads[i].moveToArchive();
}
}
このスクリプトでは、GmailApp.search('from:"example@example.com" is:unread')
で、example@example.com
からの未読メールを検索し、threads[i].moveToArchive()
でアーカイブしています。メールアドレスを書き換えて使用してください。
トリガー設定と注意点
GASで定期的にメールを処理するには、トリガーを設定する必要があります。GASエディタの「トリガー」アイコンをクリックし、時間主導型トリガーを設定することで、定期的にスクリプトを実行できます。
例えば、1時間ごとに未読メールをチェックするトリガーを設定できます。
GASでGmailを操作する際には、Gmail APIの使用制限に注意が必要です。短時間に大量のメールを処理すると、APIの使用制限に達する可能性があります。処理するメールの件数を制限したり、処理間隔を調整したりすることで、制限を回避できます。
また、メールの内容によっては、個人情報が含まれる場合があります。GASでメールを処理する際には、プライバシーに配慮し、適切なセキュリティ対策を講じる必要があります。
エラーハンドリングとデバッグ
GASスクリプトのエラーハンドリングは重要です。try-catch文を使用して、予期せぬエラーが発生した場合でも、スクリプトが停止しないように処理できます。
function tryCatchExample() {
try {
// エラーが発生する可能性のあるコード
GmailApp.search('from:"nonexistentemail@example.com"');
} catch (e) {
// エラーが発生した場合の処理
Logger.log('エラーが発生しました: ' + e);
}
}
デバッグには、Logger.log()
が役立ちます。変数の値や処理の経過をログに出力することで、問題箇所を特定しやすくなります。
GASエディタの「実行」メニューから「デバッグ」を選択すると、ステップ実行やブレークポイントの設定も可能です。
参考リンク
まとめ
GASを使ってGmailの未読メールを取得し、処理するスクリプトは、様々な業務を自動化する上で非常に強力なツールです。この記事で紹介した基本を理解し、応用することで、より効率的なメール処理システムを構築できます。ぜひ、GASを活用して、日々の業務を効率化してみてください。