GASでGoogle連絡先から「住所」を取得する【送付状作成ツール④】

こんにちは。ITライターのもり(@moripro3)です!GoogleAppsScriptの記事をお届けしています!

「送付状作成ツール」を題材として、GASの自動化事例をシリーズでお届けしています。

Googleサービスのひとつである「Google連絡先」の登録データをスプレッドシートに取得して、送付状の宛先欄に自動で書き込むGASツールです。

「自動化でバックオフィス革命」がモットーのオートメーションラボ株式会社では、このような流れで「送付状作成」を行っています。

送付状作成ツールの全体像2

※この連載シリーズは、GASの処理である赤枠部の範囲を紹介します。シリーズの最後で実物のツール(スプレッドシート)を公開しますので、ぜひご活用ください。

当シリーズのメイン処理は「Google連絡先のデータをスプレッドシートに取得する処理」です。

Google連絡先の取得

前回までの記事で、Google連絡先から「氏名」「会社名」「役職」の3項目を取得してスプレッドシートに書き込む処理を作りました。

GASでGoogle連絡先から取得したデータをスプレッドシートに書き込む【送付状作成ツール③】

2019.11.05

スクリプトを実行すると、Google連絡先の登録件数分のデータがスプレッドシートに出力されます。

Google連絡先をスプレッドシートに書き込む

さて、送付状作成に最も欠かせないデータといえば「住所」ですね。

Google連絡先から住所を取得する

今回の記事では「Google連絡先から住所を取得してスプレッドシートに書き込む処理」を作成します。

取得データを「郵便番号」「住所」「番地」に分割して、このように書き込むことを目標にします。

Google連絡先の住所を取得する

各連絡先の「住所フィールド」を取得する

Google連絡先から住所データを取得するためには、まず「住所フィールド」を取得します。

シリーズ2回目の記事(GASでGoogle連絡先の「会社名」と「役職」を取得する)で、会社データは、「会社フィールド」の中に存在することを紹介しました。

  • Contactオブジェクト → 会社フィールド → 会社名
  • Contactオブジェクト → 会社フィールド → 役職

 

住所データも同様に、「住所フィールド」の中に存在します。

  • Contactオブジェクト → 住所フィールド → 住所

「住所フィールド」は、下記のように複数の項目から構成されています。

住所フィールド

この「住所フィールド」をGASで取得していきましょう!

ContactクラスのgetAddressesメソッドで、連絡先の「住所フィールド」を取得します。

getAddressesメソッド
  • Contactオブジェクト.getAddresses()

指定の連絡先の住所フィールドを取得します。

※戻り値は、AddressFieldクラスの配列です。

住所フィールドを取得するコードがこちらです。

 

スクリプト実行結果です。登録件数分(4件)それぞれについて [AddressField] という配列が取得できたことがわかります。

 

この「住所フィールド」の中に「住所データ」が含まれています。

住所フィールドから「住所データ」を取得する

「住所フィールド」はAddressFieldクラスのオブジェクトです(公式ドキュメントはこちら

AddressFieldクラスのgetAddressメソッド「住所データ」を取得します。

getAddressメソッド
  • AddressFieldオブジェクト.getAddress()

住所フィールドの「住所」を文字列で取得します。

各連絡先の「住所フィールド」から「住所データ」を取得するコードです。

AddressFieldオブジェクトの変数 address は配列のため、要素番号の指定が必要です。Google連絡先では1連絡先につき複数住所を登録できますが、この記事では、最初の1件目を取得することにします。そのため、要素番号[0]を指定します。

 

スクリプト実行ログです。連絡先4件分の「住所データ」を取得できました。

 

住所データには改行が入っています。たとえば、連絡先1件目の住所データはこのような文字列です。

 

さて、この改行入りの文字列を「郵便番号」「住所」「番地」に分割していきましょう。

住所データを「郵便番号」「住所」「番地」に分割する

Google連絡先の住所フィールドは入力項目が複数に分かれているので、人によって登録方法がバラバラであることが予想されます。

この記事では下記2パターンのみを想定します。

  • パターン1 番地2あり
番地登録あり
  • パターン2 番地2なし
番地登録なし

それぞれを文字列で表すと、このようになります。「番地あり/なし」で改行コードの数が異なります。

 

この文字列を「郵便番号」「住所」「番地」に分けるために、まずは改行コードで分割します。

 

住所データを改行コードで分割する

住所データを改行コードで分割して配列に格納します。改行コードは \n (バックスラッシュ+n)です。

15行目で改行区切りを追加します。

 

スクリプト実行ログです。住所データを改行で分割して、配列にしました。

 

番地あり・番地なしで配列の長さが異なります。

住所データを改行で区切る

このような規則性に基づいて、配列からデータを取り出していきます。

 

住所データの配列を「郵便番号」「都道府県」「住所」「番地」に仕分けする

住所フィールドを受け取ると「郵便番号」「都道府県」「住所」「番地」に仕分けして返す関数を作成します。

 

「都道府県」と「郵便番号」を半角スペースで分割する

「都道府県」と「郵便番号」は下記のように半角スペースで区切られた文字列になっています。

(例)東京都 〒100-0004

  • 番地ありの場合(length 4)→要素番号[2]
  • 番地なしの場合(length 3)→要素番号[1]

この規則を利用して、「都道府県 郵便番号」の文字列を受け取り「都道府県」と「郵便番号」に分割する関数を作ります。

※「都道府県」の入力欄が空で「住所」欄に入力されているケースも考慮します。

都道府県入力なし

コードがこちらです。

 

Google連絡先の住所データには改行コードが含まれているので、取得した文字列を分割する関数を2つ作りました。

  • splitAddress関数
    →「住所フィールド」の1件目の住所データを「郵便番号」「都道府県」「住所」「番地」に分割する
  • SplitZipcodePrefecture
    →「郵便番号」と「都道府県」の文字列を分割する

 

【スクリプトまとめ】Google連絡先から「住所」を取得する

今回の記事では、GASで「Google連絡先」から住所データを取得する方法を紹介しました。

これまでの記事で、下記の7項目を取得できました。

  • 会社名
  • 役職
  • 氏名
  • 住所データ(郵便番号・住所・番地)
Google連絡先

エントリポイントのexportContact関数です。23行目~29行目が今回追加した行です。

※writeSpreadSheet関数は、前回記事(GASでGoogle連絡先から取得したデータをスプレッドシートに書き込む)で作成しています。

 

次回は、Google連絡先から「メールアドレス」「電話番号」を取得する方法を紹介します。

GASでGoogle連絡先から「メールアドレス」と「電話番号」を取得する【送付状作成ツール⑤】

2019.11.09

 


sweeep|請求書AI-OCR

請求書の会計処理を自動化します
請求書AI-OCR「sweeep」

面倒な請求書の会計処理をAIで自動化。100枚をたった3分で処理できます。月末に貯まった請求書を一掃しましょう。