複数アドレスを指定するGmail検索演算子をGASで一括作成する方法

GAS

はじめに

こんにちは。

Gmailで、連絡先グループからの連絡をラベル付けしたい、という機会がありました。

Googleコンタクトの連絡先に対して、フィルタを作りたかったのですが、フィルタで直接指定する方法がないみたいで、以下の記事にたどり着きました。

上の記事でも紹介されているのですが、 from:(hoge@ac.jp OR huga@ac.jp OR …) という形で、フィルタをかけたいメールアドレスを列挙する方法が堅いみたいです。

ただ、何十件もある連絡先のメールアドレスを列挙させるのが大変だったので、今回、一部を自動化させました。

本当ならば、GAS(GoogleAppsScript)で、Googleコンタクトと連携させて、このフィルタ文字列を出力させるところまでできたらいいのですが、そんなに頻繁に使うわけでもないので。

今回は、妥協して、Googleスプレッドシート上に列挙したGmailアドレスを、フィルタ文字列の形に変えるスクリプトです。

完成形

このスクリプトを実行すると、以下のように、スプレッドシートのA列に入力した、

hoge@example.com
fuga@example.com
piyo@example.com
foo@example.com
bar@example.com
baz@example.com

のメールアドレスを、

from:( hoge@example.com OR fuga@example.com OR piyo@example.com OR foo@example.com OR bar@example.com OR baz@example.com )

のように、フィルタ用の文字列にしてE1セルに出力してくれます。

と、まあ、大したコードではない(ごくごく単純なもの)なのですが、何かの参考になればと思い、共有します。

作り方

GASを開き、下のコードをコピペしてもらえれば一通り使えるはずですが、軽くだけその方法を紹介しておきます。

Googleスプレッドシートを開き、「拡張機能」から、「AppsScript」を選んでください。

下の記事の途中まで(プロジェクト名を設定するまで)が、参考になるかもしれません。(情報が古く画面が一部変わっている可能性があります)

GASの編集画面が開けたら、下の、「コード」をコピーして、実行してみてください。

コード

function myFunction() {
  var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
  var values = ss.getDataRange().getValues()
  console.log(values)
  var str = ""
  for(i=0;i<values.length;i++){
    str = str + values[i][0]
    if(i!==values.length-1){ str = str + " OR " }
  }
  str = "from:( " + str + " )"
  ss.getRange("E1").setValue(str)
}

活用例

先程の記事の「"鈴木" hoge@example.com, "佐藤" huga@example.com, …」のような、Eメールを含む文字列があった場合、

下のツールのような、メールアドレスを抽出して改行区切りにしてくれるようなサイトにぶち込んで、

テキストからメールアドレス抽出:重複を除去して一覧にする | ラッコツールズ🔧
テキスト内の全てのメールアドレスを抽出し、一覧で表示します。(重複除去)メールアドレスの数も表示され、結果はアルファベット順にソートされます。

それを、スプレッドシートに入れて、GASを実行すれば、まだ、Google連絡先のグループに含まれるメンバーからのメールにフィルタをかけてラベル付けする、という作業は楽になるかもしれません。

まとめ

何かの参考になれば幸いです。

タイトルとURLをコピーしました