見出し画像

#91 読み終わったメールはアーカイブする(Gmail)

Gmail には、届いたメールに

  • 未読

  • 既読

という状態の他に、

  • 受信トレイ

  • アーカイブ

という状態が存在しています。

以下の動画で紹介されているのは、要約すると…

メールの内容を確認した(「未読」→「既読」)ものの、処理(対応)していないものは、「受信トレイ」に残しておき、処理したら「アーカイブ」する。

というものです。

このような運用を行うことで、Gmail のメールボックス(すなわち、「受信トレイ」)には未処理のメールだけが残っている状態になります。 すなわち、「受信トレイ」のメールが空になっていれば、未処理のメールがなくなった、ということなのです。
これ、わかりやすいと思いませんか?

「アーカイブ」については、以下の動画でも説明されています。「アーカイブ」しても、削除したわけではないので、「すべてのメール」や検索すれば見つけられます。

既に、受信トレイにたくさんメールがある…

けれど、前述のような運用を行おうとしても…

既に「受信トレイ」にメールがたくさんあるんです

という状況になっている場合があるかもしれません。
一覧の左上ですべてを選択して、まとめてアーカイブしようとしても、古いメールがたくさん残っていると、一括して処理できないケースもあるようなので、なかなかスッキリさせるのが一筋縄ではいかないケースもありそう。

そんな場合には、以下のような GAS のプログラムで、過去のメールをまとめてアーカイブできます。

'use strict';

function myFunction() {
  let mails = GmailApp.getInboxThreads();
  let target = new Date(2012, 4, 1);          // 指定した日付以前のメールをアーカイブ

  console.log('getInboxThreads : ' + mails.length);

  for (let i = 0 ; i < mails.length ;i++) {
    let mes = mails[i].getMessages()[0];
    if (mes.getDate() < target) {
      console.log(i, mes.getDate(), mes.getSubject());
      mails[i].moveToArchive();
    }
  }
}

このプログラムでは、2012/04/01 以前の「受信トレイ」に残っているメールを、アーカイブします。

何度か実行しましたが、GmailApp.getInboxThreads() でスレッドの一覧を取得すると、1回の呼び出しで 500件のスレッドが取得できるようです。
これだけの量のメールを処理すると、個人の Gmail アカウントに課されている GAS の実行時間制限(6分)ぐらいの時間になるので、「受信トレイ」がスッキリするまで繰り返し実行してください。

なお、GAS のプログラムをはじめて実行する際には、アカウントによる確認作業が必要になりますので、詳しくは以下の投稿をご覧ください。

プログラムでアーカイブできる件数には制限がある

くり返しプログラムを実行していると、下図のようなエラーが発生してしまうかもしれません。これは、前述の実行時間の制限と同様に、「メールの読み取り/書き込み(送信を除く)」の件数に制限が課せられているからです。

くり返しプログラムを実行していると…

このような表示が発生した場合には、翌日に仕切り直しましょう。Google が米国企業なこともあって、どのタイミングで一日が経過するのかよくわかりませんが、翌日に再チャレンジしましょう!

最後に

今回のプログラムは、表題の通り Gmail の「受信トレイ」に残っているメールをまとめてアーカイブします。チマチマと手作業でアーカイブしてもいいのですが、一括して処理したい場合にこのプログラムを使ってください。

最後に、お決まりのフレーズなどを書いておきます。

  • 一応の動作確認は行っているものの、不慮のトラブルによって損害等が生じても、責任はとれませんので予めご了承ください。

  • コメントを含めても 16行くらいのスクリプトであり、実行に際して目的外の場所への書き出しや収集などは行っていません。

  • 特別なエラー処理は行っていないので、意図しないケースでエラーが発生してしまうかもしれません。どうにもならない場合には、ご連絡ください。

わたし自身にしてみると、このような「スクリプトを作ること」が目的になっているような感じですが、このスクリプトが何かの役に立てば幸いです。
「スキ ♡」を押してもらえると、このようなプログラム作成の励みになります。😍

この記事が気に入ったらサポートをしてみませんか?