SendGridのMarketing CampaignsでCSVを利用して複数アドレスを削除する

SendGridのMarketing Campaignsでは宛先メールアドレスをContactsとして管理します。Contactsから特定条件でセグメントしたリストを作ったりすることが可能です。

# CSVによるContacts管理

Contactsは基本的にCSVで管理します[^1]が、メールアドレスをキーに追加、更新が簡単である一方、削除は検知されないのでどうやるのがいいのかなーと思ったり。

[^1]: 画面から直接入力したり、API操作も可能です

具体的には、以下のようなcsvをContactsの「Nogizaka」リストに追加したとします。（カラムはemail,first_name,last_name）

nanase@example.com,七瀬,西野
maiyan@example.com,麻衣,白石
wakasama@example.com,祐美,若月

このリストに以下のcsvをアップすると

wakasama@example.com,様,若
yuttan@example.com,優里,斉藤

「Nogizaka」リストは

nanase@example.com,七瀬,西野
maiyan@example.com,麻衣,白石
wakasama@example.com,様,若　**->update**
yuttan@example.com,優里,斉藤　**->add**

となります。CSVは基本的に追加と更新用なので動きとしてはわかりやすいです。で、例えばmaiyan@example.comがSuppressionに入っててクリーン対象だったり、nanase@example.comが自前のシステムで何らか削除対象となって消したいときはどうするのが良いのかなーと。

すぐ思いつくのは普通に手で消す方法です。

nanase@example.com,七瀬,西野　**->delete by hand**
maiyan@example.com,麻衣,白石　**->delete by hand**
wakasama@example.com,祐美,若月

削除するメアドが少なければこれで問題なさそうですが、たくさんあると辛い。

あと単純にContactを全削除して入れなおしという方法もあるのですが、**履歴情報が消えてしまうので注意が必要**です（一度これをすすめてしまい、、申し訳ないことをしてしまいました）

で、こんなドキュメントがありました。
[How to Remove Unusable Contacts](https://sendgrid.com/docs/Classroom/Basics/Marketing_Campaigns/how_to_remove_unusable_contacts.html)

削除対象をまとめたリストを作って消す、なるほど。ということで実際試してみました。

# 削除用のCSVを作成

以下のリストから2つのメアドを削除して

nanase@example.com,七瀬,西野
maiyan@example.com,麻衣,白石
wakasama@example.com,祐美,若月

以下にするのをCSVでやります。

wakasama@example.com,祐美,若月

実際にやってみます。

「Nogizaka」リストに3件あります。
<img width="1030" alt="スクリーンショット 2017-03-25 13.47.03.png" src="https://qiita-image-store.s3.amazonaws.com/0/47737/44d96b4e-a845-5ca1-f18f-0bbdd6d16ea7.png">

nanase@example.comがSuppressionリストに入っててクリーニング対象、maiyan@example.comが自前のシステムで削除対象という想定で進めます。

まずSuppressionリストはそれぞれCSV出力できるので、例えばハードバウンスしたBouncesのメルアドをContactsから抜く場合はCSVでエクスポートします。

<img width="1045" alt="スクリーンショット 2017-03-25 14.09.25.png" src="https://qiita-image-store.s3.amazonaws.com/0/47737/20282555-5a8d-eed0-5199-05464e8c6d74.png">

で、これをContactsのリストとしてインポートします。ここではリスト名を「RemoveContacts」とします。

<img width="533" alt="スクリーンショット 2017-03-25 13.51.35.png" src="https://qiita-image-store.s3.amazonaws.com/0/47737/71d255f3-c7a7-7b71-1ee0-690ed3ef2978.png">

リストに先ほどエクスポートしたBouncesのcsvを指定します。Reasonなどもカラムに入ってるので不要な情報はSkip Columnしておきます。

<img width="761" alt="スクリーンショット 2017-03-25 14.27.26.png" src="https://qiita-image-store.s3.amazonaws.com/0/47737/5218cbd5-3b78-a1ae-30d4-42485ec7936f.png">

これでnanase@example.comが「RemoveContacts」に入りました。

<img width="1030" alt="スクリーンショット 2017-03-25 14.29.04.png" src="https://qiita-image-store.s3.amazonaws.com/0/47737/5dc802fe-daca-34fc-9aaf-bd7338405b72.png">

続けて、別途手元にある（自前のシステムで削除対象とことを仮定した）削除対象のリストも上記リストに追加します。ちょっとキャプチャのファイル名が悪いですが。。

<img width="222" alt="スクリーンショット 2017-03-25 14.33.56.png" src="https://qiita-image-store.s3.amazonaws.com/0/47737/88e8d588-add9-0dc6-6c9a-537204ef31e3.png">

これでmaiyan@example.comも「RemoveContacts」に入りました。

<img width="1025" alt="スクリーンショット 2017-03-25 14.37.21.png" src="https://qiita-image-store.s3.amazonaws.com/0/47737/4a23ebe1-ada7-ac6c-3da8-dc10bbd1936e.png">

あとはこの「RemoveContacts」リストを削除するだけです。ポイントは削除ダイアログで出てくる「Also delete all contacts associated with list from my account」にチェックを入れることです。これを入れないと単にRemoveContactsからメルアドが削除されるだけで悲しい結果になります。

<img width="342" alt="スクリーンショット 2017-03-25 14.37.42.png" src="https://qiita-image-store.s3.amazonaws.com/0/47737/36968a4a-1ae8-8453-4b6b-f0d1e808f9be.png">

削除の結果、ちゃんと1件になってますね。

<img width="1015" alt="スクリーンショット 2017-03-25 14.47.23.png" src="https://qiita-image-store.s3.amazonaws.com/0/47737/dd6eb631-d2a7-4b63-9381-c8da0d6c8db3.png">

中身はちゃんと

<img width="356" alt="スクリーンショット 2017-03-25 17.04.34.png" src="https://qiita-image-store.s3.amazonaws.com/0/47737/4d361e40-d3b9-9a23-a416-a78846bf4fe7.png">

となってます。削除用のリストを作る、っていうだけですね。