Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
1
Help us understand the problem. What is going on with this article?
@flat35hd99

Gmailで既読のメールを自動アーカイブする

メールボックスを重要なメールややり取りの最中のものだけ残してきれいにしておくと、気が散らなくていいということに気づき、実践しています。ところが、パソコン版は一括選択できて簡単にまとめてアーカイブできるものの、スマホ版だといちいち一個ずつ選択しなければアーカイブできず、それが面倒でした。
これを改善するため、「既読かつ☆マークがついていないメールをアーカイブする」スクリプトを組みました。

コピペすれば動くやつ

const main = () => {
  const inboxThreads = GmailApp.getInboxThreads()
  const shouldArchivedThreads = inboxThreads.filter(thread => !thread.isUnread() & !thread.hasStarredMessages())
  archiveThreads(shouldArchivedThreads)
}

const archiveThreads = (threads) => {
  threads.forEach(thread => thread.moveToArchive())
}

使い方

  1. コピペする
  2. 保存する
  3. タイマーのマークからトリガーを設定する。僕は一日一回に設定しましたが、毎時または毎分でも問題なく動作します。ただし、スターマークをつける前にアーカイブされるとこまるので、あまり頻度は上げないほうがいいと思います。

ちょっと解説

getInboxThreads()を使うことで、受信箱の全てのスレッド(メールに対する返信などをまとめたもの)を取得しています。次の行でそれぞれのthreadsの中に未読のものがないか(isUnread())と☆がついているものがないか(hasStarred())確認します。
ちなみに、jsやgasの初心者の人は下記のコードの方がわかりやすいと思います。

const main = () => {
  const inboxThreads = GmailApp.getInboxThreads()
  inboxThreads.forEach(threads => {
    if (!thread.isUnread() & !thread.hasStarredMessages()) {
      thread.moveToArchive()
    }
  })
}

やっていることは同じです。僕の場合inboxから全て取得ではなくいろいろなボックスやくくりから取得して、それぞれをアーカイブしたり削除したりを分けることも考えていたため、機能を分離するという目的のためにarchiveThread()関数に書き出していましたが、inboxから取得してアーカイブするだけならこのコードの方がいいと思います(繰り返しますが同じことができます)

1
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
flat35hd99
タスクの効率化をモチベにコード書いてました。今は研究のために使ってます。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
1
Help us understand the problem. What is going on with this article?