Gmailでラベルの付いているメールの件数をパッと知りたい…と思うことがありまして。
その夢を実現するためにGoogle App Scriptを使ったので、その方法の備忘録的なエントリーです。
Google App Scriptで特定ラベル内のメールを全部未読にする
よっひー(@yosiakatsuki)です。
Google App ScriptでGmailを操作する方法、いろいろあると思いますが、今回は既読のメールを自動で未読にするという「そんな需要あるんかいな」みたいなことをやりました。
サックっとコードから
// 該当ラベルに属するメールを未読にする
function mark_unread() {
var labels = [ '_待ち', '_要確認', '_要返答' ];
for (var i = 0; i < labels.length; i++ ){
mark_unread_by_label(labels[i]);
}
}
//検索
function mark_unread_by_label(label) {
var threads = GmailApp.search('label:'+ label , 0, 100);
var count = threads.length;
//ヒットした結果を未読にする
for (var i = 0; i < count; i++ ){
var messages = threads[i].getMessages();
//スレッドの最期のメールだけを未読にする…(全部未読にすると、スレッドを開いた時、全部のメールが開いて面倒)
GmailApp.markMessageUnread(messages[messages.length - 1]);
}
}
ざっくりとした動作説明としては、GmailApp.search
でラベルを対象に検索をかけて、ヒットしたメッセージに対してGmailApp.markMessageUnread
で未読にする…といったところです。
対象ラベルの調整
未読の処理をする対象のラベルは以下の部分を編集します。
function mark_unread() {
//▼▼▼
var labels = [ '_待ち', '_要確認', '_要返答' ];
//▲▲▲
for (var i = 0; i < labels.length; i++ ){
mark_unread_by_label(labels[i]);
}
対象になるラベル名を配列で定義します!
自動実行の設定
コードができたら後は未読の処理を自動実行させます。
コードを保存したら、時計のマークをクリックして、トリガーを設定していきます。
新しいトリガーを追加したら、以下の設定をしていきます
- 実行:実行する関数名(今回は
mark_unread
) - イベント:時間主導型
実行する間隔は好みに合わせて設定して下さい。
僕はとりあえず1時間に1回実行されれば十分だと思うので「時タイマー」の「1時間ごと」に設定しました。
使える関数などはリファレンスを見てみる
全部英語で僕にはちんぷんかんぷんですが、頑張ってリファレンスを見てみると、使えそうな関数が見つかることがあるので眺めてみます。