Google スプレッドシートで乱れた連絡先の列を整える

8appsチーム·

貼り付けた連絡先の列は、名前とアドレスが融合し、表記が揺れ、重複しています。それをきれいな氏名列とメール列に変えるGoogle スプレッドシートの数式。

貼り付けた連絡先リストはどれもこうなります

Jane Doe <jane.doe@example.com>
 SMITH, BOB <BOB@EXAMPLE.COM>
jane.doe@example.com
info@example.com; Priya K <priya@example.co.uk>

名前とアドレスが融合し、大文字小文字はばらばら、区切り文字は不統一、重複は姿を変えて紛れています。以下が数式ごとの整形手順です――そして最後に、そもそも散らかさない方法を。

1. まず1行につき1件に

セルが ; や , で区切られた複数の連絡先を含んでいるなら、何よりも先に分割します。

=SPLIT(A2, ";")

そのうえで結果を1列に積み上げます(現在のGoogle スプレッドシートなら TOCOL、あるいは範囲を特殊貼り付けで縦に並べる)。

2. メールアドレスを抜き出す

=REGEXEXTRACT(A2, "[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}")

これは任意の文字列から最初のアドレスを取り出します――融合した氏名とメール、山括弧、周囲のテキストのいずれでも。アドレスのない行に備えて IFERROR(..., "") で包んでください。

3. 名前を抜き出す

よくある Name <email> の形なら:

=TRIM(REGEXREPLACE(A2, "<[^>]*>", ""))

――括弧で囲まれたアドレスを取り除き、残りをトリムします。大文字だけの表記は =PROPER() で直し、姓名の分割は =SPLIT(B2, " ") で。"SMITH, BOB" は別扱いが必要です。カンマで分割して前後を入れ替えてください。

4. メールの列を正規化する

=LOWER(TRIM(C2))

小文字化するのは、Jane@ と jane@ が同じメールボックスでありながら、後続のあらゆるツールにとっては別の文字列だからです。経験からの警告を1つ。TRIM() はノーブレークスペースを除去しません――CSVエクスポートが大好きな、あの見えない文字です。「きれいな」はずのセルがまだおかしな挙動をするなら、まず =SUBSTITUTE(C2, CHAR(160), "") を。

5. 重複を削除する――まず見えるように、それから確定的に

削除する前に重複を確認します。

=COUNTIF(C:C, C2) > 1

そのうえで、データ → データクリーンアップ → 重複を削除を、メールの列だけに対して実行してください。同一人物の行でも名前は違うことがあります(「Bob」と「Robert」)。より情報の多い名前のある行を残しましょう。

6. 最後の一手は人間の仕事

info@example.com が人ではなくメールボックスであることや、CCに居合わせただけの人があなたのアウトリーチ先ではないことを、数式は教えてくれません。ドメイン順に並べ替え、一度ざっと目を通し、人間なら消すものを消してください。

あるいは:そもそも散らかさない

その乱れた列があなた自身のメールボックス由来なら――スレッドからのコピー、転送された紹介、うろ覚えのエクスポート――この整形作業は任意のものです。Contact Extractorは、任意の検索やラベルで範囲を絞ったうえで、Gmailからアドレスと名前を、すでに分離され重複を除かれ表記の揃った状態で取り出します。1から5までは取り出す過程で行われ、6はあなたの仕事のまま残ります。

出典