2019年5月6日月曜日

GmailのフィルタをCUI ツールで管理してみよう!

大量の Gmailのフィルタをどのように管理していますか。数十程度なら Gmail設定のフィルタから直接管理するほうが早いと思います。でも百を超えてきたら無理っぽい気がします。ではどういう方法があるのでしょうか。

  1. エクスポートしたフィルタデータ(XML)を編集して、インポートする
  2. Gmail APIを利用してフィルタを管理する
  3. ツール側で管理したフィルタ設定を Gmailにインポート(追加)する

あたりが考えられます。
「1」の方法は、エクスポートした XMLファイルをテキストエディタなどで開いて、直接編集することもできます。構造さえ理解できれば、下手なツールをつかうより直接編集したほうが早いだろうと思います。

「2」の方法については、Managing Filters (Gmail API) にあるGoolge Developer ガイドを使って直接プログラミングをするか、何らかのツールをつかうことになると思います。そのツールは少し探した程度では見つけられませんでした。

「3」の方法については、 gmail-yaml-filters が便利かなと思います。

ということで管理といっても、「3」の部分的なものになりますが、その紹介をしてみたいと思います。なお gmail-yaml-filters は プログラミング言語 Python を使ったツールになります。そのため、そこも含めた紹介をします。

参考GUI to manage Gmail filters? (Stackoverflow)

*環境:macOS 10.14.4 

STEP 1.  gmail-yaml-filters (GitHUB) を使えるようにする


1. Python3をインストールする


macOS 10.14 には、python 2.7 系が入っていますが、最近の主流は 3.x 系のため、そちらを使うことにします。

  1. https://www.python.org/downloads/ より macOS 用インストーラーをダウンロードしてインストール。
    ※ 2019年5月6日時点で、Python 3.7.3 が最新版です。
  2. ターミナルを起動して、
      python3 -V 
    コマンドにて、3.7.3 と出てきたらインストール成功しています。

2. pip コマンドへのPATHを通す


pip は、 Python に付随(2.7.9以上、3.4以上)していますが、PATHが通っていません。
macOS であれば

/Library/Frameworks/Python.framework/Versions/3.7/bin

に対するPATHを設定する必要があります。
今回は pip コマンドしか使わないので、すでにPATHが通っているはずの /usr/local/bin へ pip のシンボリックリンクを置くことで代用します。

ターミナルより(以下、一行で書く)
  • ln -s  /Library/Frameworks/Python.framework/Versions/3.7/bin/pip /usr/local/bin/pip
とすると /usr/local/bin/php に本体「 /Library/Frameworks/Python.framework/Versions/3.7/bin/pip」のシンボリックリンクが作成されます。ので /usr/local/bin/ にPATHが通っていれば 
  • pip -V
    pip 19.1 from /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pip (python 3.7)

のように pip コマンドが使えるはずです。

3. gmail-yaml-filters (GitHUB) をインストールする


ターミナルより

  • pip install gmail-yaml-filters

STEP 2. gmail-yaml-filters 用の設定ファイルを作成する


gmail-yaml-filters  の Sample Configuration を参考に作成してみてください。
ここでは my-filters.yaml ファイルに保存することにします。なおタブは使ったらエラーになるので注意。

例1)差出人が hogehoge@sample.com かつ 添付ファイルを含む場合、「Sample」ラベルを付与する
-
  from: hogehoge@sample.com
  match: "has:attachement"
  label: Sample

例2)差出人が、 hogehogeA@sample.com 以外、または hogehogeB@sample.com  以外の場合、「Sample2」ラベルを付与する。
-
  from: 
    any: [-hogehogeA@sample.com,-hogehogeB@sample.com]
    label: Sample2

例3)差出人が、hogehogeA@sample.com、 hogehogeB@sample.com以外の場合、「Sample3」ラベルを付与する。
-
  from: 
    all: [-hogehogeA@sample.com,-hogehogeB@sample.com]
    label: Sample3

*これについては次の書き方もできる
-
  from:
    any:
        -hogehogeA@sample.com
        -hogehogeB@sample.com
  label: Sample3

あるいは

-
  from:  -hogehogeA@sample.com   -hogehogeB@sample.com
  label: Sample3

例1)2)3)をまとめると
my-filters.yaml の中身は次のようになります。
-
  from: hogehoge@sample.com
  match: "has:attachment"
  label: Sample
-
  from: 
    any: [-hogehogeA@sample.com,-hogehogeB@sample.com]
  label: Sample2
-
  from: 
    any:
        -hogehogeA@sample.com
        -hogehogeB@sample.com
  label: Sample3

となります。

STEP 3. Gmailにインポートする


1. Gmailで利用可能な XMLファイルに変換します。


  • gmail-yaml-filters my-filters.yaml  > my-filters.xml

とします。これで


にあるようなXMLファイルがコマンドを実行した場所にできるはずです。
※今回の例の場合、/Users/ユーザー名/ 以下にあるはずです。つまりユーザーのホームディレクトリのところにあるはず。(Macintosh HD > ユーザー > ユーザー名)

2. 既存のフィルタをバックアップします。


念の為、かならずバックアップしておきましょう。


にあるように、Gmailのフィルタ設定で、フィルタをすべて選択して「エクスポート」ボタンを押します。

3. 変換した my-filters.xml をインポート(追加)


1. Gmailのフィルタ設定にある「フィルタをインポート」リンクをクリックします。


2. my-filters.xml を選択すると、下記のようにファイルが選択されます。「ファイルを開く」ボタンをクリックします。

3. すると my-filters.xml に設定したフィルタが出てきます。意図したフィルタになっていることを確認します。確認できたら「フィルタを作成」ボタンをクリックします。

4. 下記のようにフィルタが追加されていることを確認します。



すでにあるものは管理できませんが、このように比較的わかりやすい文法で新たに書き直すことで大量フィルタの管理しやすいかもしれませんね。

2019年5月6日 @kimipooh

0 件のコメント:

コメントを投稿