Posted at

gmail でのメルマガのフィルタリングメモ

More than 1 year has passed since last update.


  • 久しぶりに開く gmail アカウントにメルマガがいっぱい溜まっていて、何がなんだかわからなくなっている!!

  • ただ、読みたいメルマガもあるし、いらないメルマガだけはじきたい!!

  • 「メール選択」=>「メールの自動振り分け設定」を毎回やってると、フィルタがいっぱいできてわけわからんくなる!!

てことがありまして、そのときにやったことですメモです。

これが一番いい方法ではないと思いますが、次回やるときに絶対忘れてると思ったので、手順の自分用メモです。


スプレッドシートにメルマガの From 部分を全部リスト化


GAS でシートからフィルタリング条件の文字列を生成

ここから。

GAS をこんなふうに書いて。

function onOpen()

{
var ui = SpreadsheetApp.getUi();
var menu = ui.createMenu('フィルタ生成');
menu.addItem('フィルタ生成', 'generateFilter');
menu.addToUi();
}

function generateFilter()
{
var sheet = SpreadsheetApp.getActiveSheet();

// A列のデータをぜんぶ取得する
var rowStartIndex = 1;
var colStartIndex = 1;
var colNum = 1;
var melmagas = sheet.getRange(rowStartIndex, colStartIndex, sheet.getLastRow(), colNum).getValues();

// filtering するための条件文字列を list へ
var MAX_FILETER = 1300 // だいたいこれ以上長い条件文字列を gmail 側がうけつけてくれなかった
var filters = []
idx = 0
filters[idx] = ""
for(var key in melmagas)
{
str = ( (melmagas.length - 1 == key) || (MAX_FILETER <= filters[idx].length) ) ? melmagas[key][0] : melmagas[key][0] + " OR " ;
filters[idx] += str

if( (MAX_FILETER <= filters[idx].length) )
{
idx += 1
filters[idx] = ""
}
}

// シートへ書き込み
for(var key in filters)
{
sheet.getRange( parseInt(key)+1, 3).setValue( filters[key] );
}
}

このボタンを押すと、C列にフィルタ文字列ができてる。


gmail のフィルタ設定へ突っ込む

gmail -> 設定 -> フィルタとブロック中のアドレス と進んで。

上記スプレッドシートで生成されたフィルタ文字列をFromのところへ突っ込んで「続行」。

次のページで、「一致するスレッドにも~」のところにチェックを入れるのを忘れずに、「フィルタを更新」を押す。

これでOKなきがする。