このようなものがハッキングされています。私はおそらく誰かが書いた何かに基づいてそれをベースにしましたが、それはずっと前に覚えていません。
それ以来、それは確実に動かなくなってきました。仕組みは次のとおりです。
通常、特定のタグが付いたメッセージを探し、そのタグを別のタグに置き換えてからアーカイブします。
具体的には、メッセージは受信トレイフィルタでタグ付けされ、「期限切れ」になる方法を示します。以下の例では、これはそれらが何歳であるかに基づいており、ラベルはと呼ばれBulk/Expires/[Daily|Weekly|Monthly]
ます。(注:これはネストされたタグですが、ネストする必要はありません。このように整理しておくだけです)。毎日いくつかのGoogle Appsスクリプトが実行され、これらのラベル内のスレッドが何らかの条件(通常は日付)に一致するかどうかをチェックします。次に、そのタグを別のタグ(Bulk/Expired
下記)に置き換えてアーカイブします。メッセージを削除することもできます。
これは、1日以上経過したメッセージをクリーンアップするコード(追加のコメント付き)です。毎日午前4時にトリガーするように設定されています。
function cleanUpDaily() {
// Enter # of days before messages are archived
var delayDays = 1
// make an empty Date() object
var maxDate = new Date();
// Set that date object ('maxDate')to the current data minus 'delayDays'.
// In this case it's a date 1 day before the time when this runs.
maxDate.setDate(maxDate.getDate()-delayDays);
// this is the label that finds messages eligible for this filter
var currLabel = GmailApp.getUserLabelByName("Bulk/Expires/Daily");
// this is the new label so I know a message has already been "Expired"
var newLabel = GmailApp.getUserLabelByName("Bulk/Expired");
// Get the message threads which might need to be expired.
var threads = currLabel.getThreads();
// Iterate over those threads and check if they need to be expired
for (var i = 0; i < threads.length; i++) {
// You can put whatever kinds of conditions in here,
// but this is just going to check if they were recieved before
// 'maxDate' which here is 1 day before runtime.
if (threads[i].getLastMessageDate()<maxDate)
{
// If they're old, archive them
threads[i].moveToArchive();
// Remove the old label, they won't need to be expired again
// This isn't required, but it will make it slow, and Google will
// time-out things that take too long, in my experaince it will
// become slow and start timing out if there are more than a few
// dozen threads to process, YMMV.
threads[i].removeLabel(currLabel);
// Label the thread with a new label indicating it's gone through this
// process. Also not strictly necessary, but it's useful if you'd like
// to do some more processing on them in the future.
threads[i].addLabel(newLabel);
}
}
}
これは、1週間または1か月で有効期限が切れるものに対してこれを行うためのコードです。これらの関数を毎週または毎月実行するようにトリガーを設定します。
function cleanUpWeekly() {
var delayDays = 7 // Enter # of days before messages are moved to archive
var maxDate = new Date();
maxDate.setDate(maxDate.getDate()-delayDays);
var currLabel = GmailApp.getUserLabelByName("Bulk/Expires/Weekly"); // this is the label that finds messages eligible for this filter
var newLabel = GmailApp.getUserLabelByName("Bulk/Expired"); // this is the new label so I know a message was expired and thats why its archived
var threads = currLabel.getThreads();
for (var i = 0; i < threads.length; i++) {
if (threads[i].getLastMessageDate()<maxDate)
{
threads[i].moveToArchive();
threads[i].removeLabel(currLabel); // I take the label off so there's not an infinitely growing "threads" variable with time
threads[i].addLabel(newLabel);
}
}
}
function cleanUpMonthly() {
var delayDays = 30 // Enter # of days before messages are moved to archive
var maxDate = new Date();
maxDate.setDate(maxDate.getDate()-delayDays);
var currLabel = GmailApp.getUserLabelByName("Bulk/Expires/Monthly"); // this is the label that finds messages eligible for this filter
var newLabel = GmailApp.getUserLabelByName("Bulk/Expired"); // this is the new label so I know a message was expired and thats why its archived
var threads = currLabel.getThreads();
for (var i = 0; i < threads.length; i++) {
if (threads[i].getLastMessageDate()<maxDate)
{
threads[i].moveToArchive();
threads[i].removeLabel(currLabel); // I take the label off so there's not an infinitely growing "threads" variable with time
threads[i].addLabel(newLabel);
}
}
}
現在、私はBulk/Expired
メッセージを受け取るものに取り組んでおり、それらにPurge
タグがある場合、それはそれらを永久に削除します。メールを削除する(クレイジー)ことはありませんが、アーカイブされたメーリングリストの多くは、検索結果を汚染する傾向があります。この煩わしさが私のデジタル買いだめの傾向を圧倒し始めました。唯一の変更は、for
ループがメッセージに「パージ」タグがあるかどうかを確認することです。特定のスレッドが持っているラベルが配列として返されるため、これは簡単ではありません。そのため、数行のコードを追加するその配列を確認する必要があります。なめらかな方法を見つけない限り。
主にこれを使用して、Google Inboxでニュースレターを管理します。「Bulk / Expires / Daily」タグのメッセージバンドルを設定しました。フィルターにより、今日のニュースレターのみが表示されます。そして、ある日読んだかどうかにかかわらず、最新のものがそこにあります。InboxをRSSリーダーにハッキングするようなものです。私は毎週または毎月発行される定期的なニュースレター/一括メール送信についても同じことをします。一般的に、彼らの年齢が関連性を削除したときに私はそれらを失効させます。