Google スプレッドシートで電話番号をE.164形式にする

8appsチーム·

E.164は広告プラットフォームとAPIが期待する形式であり、スプレッドシートが静かに壊す形式でもあります。今の列から +6591234567 を得る方法。

E.164とは何か、10秒で

E.164は国際的な電話番号の形式です。+、国番号、続いて番号、空白も記号もなし――+6591234567、+14155552671。Google Adsが顧客リストに求めているのがこれで("Format phone numbers using the E.164 format"、"the country code and '+' sign" を含む)、多くのAPIが「国際形式」と言うときに意味しているのもこれです。

まず、スプレッドシートにデータを壊させない

電話番号の列は、数式が走る前に死んでいます。

  • 長い番号は、Google スプレッドシートが数値として読んだ瞬間に指数表記になります。
  • 07700 900461 は先頭のゼロを失います――一度失われたら戻りません。後からの書式変更はデータ損失であって、書式設定ではありません。
  • +44… は数式として読まれ、エラーになることがあります。

対処は習慣ひとつです。データが入る前に列をプレーンテキストに設定してください(表示形式 → 数字 → プレーンテキスト)。後から直しても、取り込みがすでに壊したものは戻りません。

クリーンアップの数式

数字以外をすべて除去します。

=REGEXREPLACE(TO_TEXT(A2), "\D", "")

(650) 555-1212 は 6505551212 に、+44 7700 900461 は 447700900461 になります。次が、数式には代われない判断――国番号です。

  • 番号がすでに含んでいる場合(自国の国番号で始まる11桁以上):+ を付けて完了。
  • 先頭ゼロのある国内形式(英国、欧州の多く):ゼロを落として国番号を付ける――07700 900461 → +447700900461。
  • 市内番号のみ(米国の 6505551212):+1 を付ける。

単一国のリストであれば:

="+65" & REGEXREPLACE(TO_TEXT(A2), "^0*|\D", "")

複数国が混在するリストを正しく推測できる数式は存在しません。国を独立した列として持ち、国から国番号への参照が必要です。これは細かすぎる話ではありません。推測を誤れば、別人の、しかも妥当に見える番号ができあがります。

これが以前より重要になった理由

リストがハッシュ化された識別子として広告プラットフォームへ向かうなら、書式はもはや見た目の問題ではありません。ハッシュ化は厳密です。+6591234567 と 6591234567 はまったく異なるダイジェストを生み、マッチできるのは片方だけです。Google Adsはプラス付きのE.164形式を、Metaは国番号付きの数字を明記しており、その例示は 16505551212――プラスなしです。同じ電話番号が、2つのプラットフォームに対して2つの異なる書式の入力を必要とします。 送信先ごとにまず書式を整え、それからハッシュ化してください。

Hash Dataの位置づけ

Hash Dataは、あなたがすでに開いているシートの中で動きます。=HASHPHONE() 関数は番号をE.164に正規化し、1ステップでハッシュ化します――上記のパイプライン全体を、REGEXREPLACE をダイジェストの数式に連結して保守することなく実現します。

出典