- 久しぶりに開く 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なきがする。