はじめに
こんにちは。暑い日が続きますね、水分補給が止まりません、筆者です
さて、今回は、以下記事で作成したGmailのラベル管理が面倒になってきたので、スプレッドシートで管理できるようにしていこうと思います。
Gmail APIの有効化
使用するGAS内で上記で追加したGmail API
を追加をします。
編集対象のフィルタのIDを検索する
編集対象のフィルタIDを探します。
以下スクリプト実行でログに出るので、対象のフィルタのIDを取得して下さい
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 |
スクリーンショットはこちら↓
スクリプトを作成
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)
}
}
おわりに
これで何か会員登録とかした際に、スプレッドシートでメールアドレスを管理できるのが非常に楽になります
今まで超めんどかったので...。
現在設定されているフィルタ取ってきて、そこに追加したいメールアドレスをスペース区切りで追加していくとか、使い勝手が...
どなたかの参考になれば幸いです!
それでは!