Gmail のフィルタをXMLで管理する

# はじめに

長いので [蛇足](#蛇足) を参照

XML で簡単にインポート／エクスポートできるらしいのでやってみた

# XML

Gmail からエクスポートするといろいろ付加されてしまうが、
実際のところこんなもんでもちゃんと読み込んでくれる

```xml
<?xml version='1.0' encoding='UTF-8'?>
<feed xmlns='http://www.w3.org/2005/Atom' xmlns:apps='http://schemas.google.com/apps/2006'>
	<entry>
		<category term='filter'></category>
		<apps:property name='from' value='cardnews@mail.rakuten-card.co.jp'/>
		<apps:property name='label' value='楽天カードニュース'/>
	</entry>
</feed>
```

# プロパティ

お好みの設定をしてください

## 例

```xml
<?xml version='1.0' encoding='UTF-8'?>
<feed xmlns='http://www.w3.org/2005/Atom' xmlns:apps='http://schemas.google.com/apps/2006'>
	<title>Mail Filters</title>
	<updated>2016-01-22T06:29:34Z</updated>
	<entry>
		<category term='filter'></category>
		<title>Mail Filter</title>
		<updated>2016-01-22T06:29:34Z</updated>
		<content></content>
		<apps:property name='from' value='hoge@example.com'/>
		<apps:property name='to' value='fuga@example.com'/>
		<apps:property name='subject' value='にゃ'/>
		<apps:property name='hasTheWord' value='ん'/>
		<apps:property name='doesNotHaveTheWord' value='の'/>
		<apps:property name='hasAttachment' value='true'/>
		<apps:property name='excludeChats' value='true'/>
		<apps:property name='label' value='ラベル'/>
		<apps:property name='shouldMarkAsRead' value='true'/>
		<apps:property name='shouldStar' value='true'/>
		<apps:property name='shouldTrash' value='true'/>
		<apps:property name='shouldNeverSpam' value='true'/>
		<apps:property name='shouldNeverMarkAsImportant' value='true'/>
		<apps:property name='smartLabelToApply' value='^smartlabel_social'/>
		<apps:property name='size' value='10'/>
		<apps:property name='sizeOperator' value='s_sl'/>
		<apps:property name='sizeUnit' value='s_smb'/>
	</entry>
</feed>
```

## 検索条件

|name|value|
|:--|:--|
|from|送信メールアドレス|
|to|受信メールアドレス|
|subject|タイトル|
|hasTheWord|含む|
|doesNotHaveTheWord|含まれない|
|hasAttachment|添付ファイルあり|
|excludeChats|チャットは除外する|
|size|サイズ(数字)|
|sizeOperator|次の値より大きい (s_sl) or 次の値より小さい (s_ss)|
|sizeUnit|サイズの単位 B(s_sb), kB(s_skb), MB(s_smb)|

## フィルタリング条件

|name|value|
|:--|:--|
|label|ラベルを付ける|
|shouldArchive|受信トレイをスキップ(アーカイブする)|
|shouldMarkAsRead|既読にする|
|forwardTo|転送する|
|shouldStar|スターを付ける|
|shouldTrash|削除する|
|shouldNeverSpam|迷惑メールにしない|
|shouldAlwaysMarkAsImportant|常に重要マークを付ける|
|shouldNeverMarkAsImportant|重要マークを付けない|
|smartLabelToApply|適用するカテゴリ|

### 適用するカテゴリ

|カテゴリ|value|
|:--|:--|
|個人|^smartlabel_personal|
|ソーシャル|^smartlabel_social|
|プロモーション|^smartlabel_promo|
|フォーラム|^smartlabel_group|
|新着|^smartlabel_notification|

これはググってきたのでちゃんと確かめてません失敬

# インポート

- `設定` から `フィルタとブロック中のアドレス` を選択し、下部にある `フィルタをインポート` をクリック
- 作成した XML を選択 `ファイルを開く` をクリック
- 後は必要なフィルタを選択して `フィルタを作成` をクリック

![スクリーンショット 2016-01-22 15.48.29.png](https://qiita-image-store.s3.amazonaws.com/0/30241/15d45dc8-16be-3996-dd56-fb55008213ff.png)


# さいごに

いろんなサイトのいろんなメールアドレスにラベル付けして
もっと管理のし易いようにしたいなぁと思う

自分の環境でできた楽天だけの分は [こちら](https://gist.github.com/tanjo/ac38ea0e262b242e336e#file-xml)
もっと他にもたくさんあるだろうし、いろいろやりたい所存である

# 蛇足

**※注意：以下、楽天の悪口を言うつもりはありません。ただメールが多くて管理が大変ということの代表的例として紹介させていただきます。**

Rポイントができた頃に「やった！期間限定ポイントがサークルKで使えるぞ！楽天やるやんけ！」
という安易な理由で作成した楽天アカウント
いろいろポイントを貰っていたのだが、徐々に楽天メールの毒牙にかかっていることに気付いたのは最近のことだ

コレを見て欲しい

![スクリーンショット 2016-01-22 15.02.29.png](https://qiita-image-store.s3.amazonaws.com/0/30241/9b90e808-d9b7-aa96-897d-322ac43f8954.png)

「な、なんじゃこりゃーー！！」

ただの素人でもこう叫んでしまうだろう
ああ、叫んだのだ

ちなみにこの中には、[HTCのデバイスを利用すると最初の 2 GB に加えて 23 GB の無料容量を 2 年間ご利用いただけるキャンペーン](https://www.dropbox.com/ja/help/249) の期限が切れる内容の Dropbox のメールがあるのだ

当時、8.3GB くらい利用していたので重要な内容だった
危険察知能力がなければ死んでいた

で、まぁ停止するのもめんどくさいのでフィルタをかけて一括削除するとかもアリかなと思ったが、楽天 Edy の受け取り通知やクリックで1円分の楽天 Edy が貰えるメール、楽天銀行、楽天カード等の金融系のメール等々、あまり削除しないほうがいいようなメールも少なからずある

そこで、Gmail のフィルターを利用しているものといらないものとを仕分けた
コレが結構時間がかかる

で、見つけたのが Gmail のフィルターのインポート／エクスポート

(記事の先頭へ続く)