LoginSignup
0

More than 1 year has passed since last update.

posted at

Organization

「本メールは弊社社員と名刺交換させていただいた方にお送りしています」の配信停止をするためにGASでメールを抽出した

好きなモノは酒と女とラーメン、LIFULLのてぃば(@rechiba3)です。

皆さんは、「本メールは弊社社員と名刺交換させていただいた方にお送りしています」というメールを受け取ったことはありますか。

私はめちゃくちゃ受け取ったことがあります・・・!
そして、今すぐ全部「配信停止」押したい!!全部!

スクリーンショット 2020-11-30 21.32.25.png
「弊社社員と名刺交換」ってワードだけで、Gmailも「/ 多数」って曖昧な回答をし始めた。

配信停止自動化は私の技術力では無理なので、とりあえず、

Gmailの特定ワード検索でスプレッドシートに一覧を書き出して配信停止リストを作る

1. 取得する結果の見出しをスプレッドシートに入力する

スプレッドシートを作成して、
A列から順番に
タイムスタンプ
差出人アドレス
件名
本文サマリ
メール確認
と見出しを入れておきます。

今回は、見出しの文字列を参照するようなコードは書かないので、任意の見出しで大丈夫です。
(しかし、取得するAPIの項目は上記を意味する内容になるので、沿うように)

2. スクリプトエディタでメールを取得したものをスプレッドシートに反映する

ツール > スクリプトエディを開きます。
まずはGmail内の検索をします。
スクリーンショット 2020-11-30 21.41.41.png

今回はヒットワードにできるだけ通常の名刺交換挨拶が含まれないように、「弊社社員と名刺交換」を採用しました。
この指定だけすれば、あとは以下のコードで稼働します。

function searchContactMail() {

  const query = '"弊社社員と名刺交換"';
  const start = 0;
  const max = 100;

  const threads = GmailApp.search(query, start, max);
  const messagesForThreads = GmailApp.getMessagesForThreads(threads);

  const values = [];
  const sheet = SpreadsheetApp.getActiveSheet();
  const lastRow = sheet.getLastRow();
  const ids = sheet.getRange(2, 6, lastRow).getValues().flat();

  for(const messages of messagesForThreads){
    const message = messages[0];
    const id = message.getId();

    if(!ids.includes(id)){
      const record = [
        message.getDate(),
        message.getReplyTo(),
        message.getSubject(),
        message.getPlainBody().slice(0,100),
        message.getThread().getPermalink(),
      ];
      values.push(record);
    }
  }

  if(values.length > 0){
    sheet.getRange(lastRow + 1, 1, values.length, values[0].length).setValues(values);
  }

}

3. トリガーの設定

「現在のプロジェクトのトリガー」をクリックして、Apps Scriptのプロジェクトのトリガー画面へ遷移します。
画面右下、「トリガーを追加」を押下、どのタイミングでスプレッドシートを更新するかを指示します。

今回は、メールの検索を開始するタイミングなので、日付単位で回します。
即時配信停止に対応する必要もなく、ストック型のリストを生成するイメージであるため、1日1回確認してればよいでしょう。
スクリーンショット 2020-11-30 21.58.26.png

「保存」を押して完了です。

4. スクリプトを実行してリストを作る

スクリプトエディタに戻り、「実行」を押下してスプレッドシートへ戻ります。

う、うわぁあああああ〜〜〜〜〜〜〜
スクリーンショット 2020-11-30 22.01.02.png
スクリーンショット 2020-11-30 22.01.20.png

一度に回しただけで52件出てきた・・・つらい・・・
でも配信元は4社ぐらいだったので安心しました😠😠😠

このURLからメールに遷移して、普段は開かないGmailの「プロモーションフォルダ」にある該当メールから配信停止手続きをします。

おまけ

もし更に精度を上げたい人がいたら、

  • スプレッドシートが更新されたらslackに通知
  • 配信停止URLを直接引用

あたりを追加すると汎用性高くなりそうです。
私は暇なタイミングにポチポチ配信停止するために、このストックリストを半年に四半期に一度ぐらい覗こうと思います。

参考

Gmailから始める自動化生活

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
0