GASでGoogle連絡先に新規登録された連絡先のみを取得する【送付状作成ツール⑥】

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

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

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

※連載シリーズの最後で実物のツール(スプレッドシート)を公開しますので、ぜひご活用ください。

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

Google連絡先の取得

前回までの記事で、Google連絡先から目的の項目をすべて取得してスプレッドシートに書き込む処理を作りました。

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

2019.11.09

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

Google連絡先

連絡先を全件取得できてめでたしめでたし・・・とはなりませんね。日々、取引先の方と名刺交換をしているので、Google連絡先の件数は常に増えていきます。つまり、「新規登録した連絡先」の取得も考慮する必要がありますね。

Google連絡先に新規登録された連絡先のみを取得する

今回の記事では、「Google連絡先に新規登録された連絡先」のみをスプレッドシートに書き込む方法を紹介します。

「新規登録された連絡先」とは、スクリプト前回実行時から今回実行時までの間に、新たにGoogle連絡先に登録された連絡先です。

下記の例のように、11月1日→11月15日→11月30日とスクリプトを実行するたび、新たに登録された連絡先のみを、スプレッドシートの最終行に追加していきます。

新規連絡先のみを取得

この処理を作るためには、Google連絡先に登録されている連絡先が、スプレッドシートに反映済みであるかを判定する仕組みが必要です。

この判定するために、連絡先の「ID」を使用します。以降、この記事では、連絡先のIDを「コンタクトID」と呼びます。

Google連絡先の「コンタクトID」を取得する

コンタクトIDとは、各連絡先に一意に割り振られているIDのことです。このIDは画面上で確認することができません。

GASでコンタクトIDを取得できます。ContactクラスのgetIdメソッドコンタクトIDを取得します。

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

連絡先の「ID」を文字列で取得します。

現在、Google連絡先には4件の連絡先が登録されています。

Google連絡先の登録データ

各連絡先(4件)のコンタクトIDを取得するコードがこちらです。

 

スクリプト実行結果です。各連絡先のIDを取得できました。httpからはじまるURL形式となっていて、その末尾が一意の文字列になっています。

 

コンタクトIDをスプレッドシートに書き込む

「コンタクトID」の取得と書き込み処理を、これまでの記事で作成したスクリプトに追加します。エントリポイントのexportContact関数の下記2行を変更します。

  • 11行目(追加)→ 「コンタクトID」を取得する
  • 38行目(修正)→ 「コンタクトID」を配列の末尾に追加する
 

exportContact 関数を実行すると、スプレッドシートの最終列にコンタクトIDが書き込まれます。

コンタクトIDの取得

コンタクトIDを使用して新規・既存の判定関数を作る

連絡先の最終列に書き込んだコンタクトIDを使用して、新規・既存の判定をします。判定方法は下記のとおりです。

連絡先のコンタクトIDがスプレッドシートに、

  • 存在する = 既存の連絡先、書き込まない
  • 存在しない = 新規の連絡先、書き込む

 

「新規/既存」の判定をするために、受け取った「コンタクトID」がスプレッドシートに存在するか否かを判定する関数を作ります。返り値は下記のとおりです。

  • true = 存在する(既存)
  • false = 存在しない(新規)

コードがこちらです。IDが書き込まれている列をまるごと配列に格納し、配列の値を1つずつチェックしています。

 

Google連絡先に新規連絡先を登録する(動作確認用)

現状、Google連絡先には4件の連絡先が登録されていて、その全件をスプレッドシートに取得済みです。

既存の連絡先

 

動作確認用に、新規の連絡先を1件登録します。名前は「森三郎」とします。この「森三郎」のみをスプレッドシートに書き込むよう、処理を追加していきます。

新規連絡先の登録

新規連絡先のみをスプレッドシートに書き込む

スプレッドシートに書き込むか否かの判定方法は下記のとおりです。

連絡先の「コンタクトID」がスプレッドシートに、

  • 存在する = 既存の連絡先 = 書き込まない
  • 存在しない = 新規の連絡先 = 書き込む

エントリポイントの exportContact 関数に、「新規/既存」の判定処理を加えます。また、検証用にログ出力もします。

13~19行目に判定処理を追加しています。hasContactId関数の返り値が true (=スプレッドシートに反映済み)の場合は、continue文でループ処理をスキップします。

 

スクリプト実行結果です。スプレッドシートに反映済みの4件は「存在する」判定となり、新規連絡先の「森三郎」のみが「存在しない」判定になりました。

 

スプレッドシートの取得結果です。新規連絡先の「森三郎」のみがスプレッドシートに追加されました。

新規連絡先をスプレッドシートに取得

【スクリプトまとめ】コンタクトIDを使用して新規連絡先のみを取得する

今回の記事では、GASで「Google連絡先」から新規連絡先のみを取得する方法を紹介しました。

  • 各連絡先に一意に割り振られている「コンタクトID」を取得する
  • コンタクトIDを使用して「新規/既存」判定をする
  • ループ処理のスキップは continue 文を使用

 

ここまでの記事で、送付状作成に必要な「名簿」ができあがりました。

さて次回は、この名簿を使用して「送付状の作成」をします。

 


sweeep|請求書AI-OCR

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

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