0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Posted at

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

コピペすれば動くやつ

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から取得してアーカイブするだけならこのコードの方がいいと思います(繰り返しますが同じことができます)

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?