4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Gmailのフィルタをスプレッドシートで管理する

Posted at

はじめに

こんにちは。暑い日が続きますね、水分補給が止まりません、筆者です :innocent:

さて、今回は、以下記事で作成したGmailのラベル管理が面倒になってきたので、スプレッドシートで管理できるようにしていこうと思います。

ちなみに今こんなカオスな状態になっております... 笑 :innocent:
2.png

Gmail APIの有効化

使用するGAS内で上記で追加したGmail APIを追加をします。

1.png

編集対象のフィルタのIDを検索する

編集対象のフィルタIDを探します。
以下スクリプト実行でログに出るので、対象のフィルタのIDを取得して下さい :pray:

const showFilterList = () => {
  console.log(Gmail.Users.Settings.Filters.list('me'))
}

スプレッドシートはこんな感じ

No. from filterId
1 no-reply@mercari.jp 先ほど取得したfilter_id
2 inquiry@share.timescar.jp
3 jmbnews@jalmail.jal.com
4 fx-info@invast.jp
5 news@epark.jp

スクリーンショットはこちら↓

3.png

スクリプトを作成

const main = () => {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('フィルタ__過去30日で削除')
  const filterId = sheet.getRange('C2').getValue()
  const filter = Gmail.Users.Settings.Filters.get('me', filterId)
  const froms = sheet
    .getRange('B2:B')
    .getValues()
    .map(v => v[0])
    .join(' ')

  // フィルタ情報を生成.
  const parameters = {
    criteria: filter.criteria,
    action: filter.action,
  }
  parameters.criteria.query = `from:({${froms}})`

  // フィルタ作成.
  const res = Gmail.Users.Settings.Filters.create(parameters, 'me')

  if (res) {
    // 新規フィルタIDをスプレッドシートに反映.
    sheet.getRange('C2').setValue(res.id)

    // 旧フィルタを削除.
    Gmail.Users.Settings.Filters.remove('me', filterId)
  }
}

おわりに

これで何か会員登録とかした際に、スプレッドシートでメールアドレスを管理できるのが非常に楽になります :v:

今まで超めんどかったので...。
現在設定されているフィルタ取ってきて、そこに追加したいメールアドレスをスペース区切りで追加していくとか、使い勝手が... :sob:

どなたかの参考になれば幸いです!
それでは!

4
4
0

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
  3. You can use dark theme
What you can do with signing up
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?