見出し画像

#66 連絡先に一括登録する(People API版)

この記事の背景

以前に作成した連絡先(Google コンタクト)に一括登録するプログラムですが…

上記の記事で紹介したプログラムで使用していた API は「Contacts Service」という API です。

この API は、Google 側で 🚫(非推奨)として扱われていて、2022/01/19 に廃止扱いとなっていました。😖

その影響なのか、プログラムにもよくわからない挙動が発生して、安定化を目的にウエイト処理を入れたりしていました。

  • ウエイト処理を入れたことで完全にエラーが発生しなくなったのかはよくわかりません。

  • 似たような不可解な現象は「Contacts Service」でも発生していたので、連絡先(Google コンタクト)に全体に起因するものなのかもしれませんが、詳細は不明です。

この記事では、後継の API である People API を利用したプログラムに作り直してみました。

People API

Contacts Service」の後継となる API の「Advanced People Service」については、以下 URL で説明が行われています。

少し調べてみましたが… 「Contacts Service」が廃止になって、後継となった API なだけあって、そのまま置き換えるだけで使えるものではありませんでした。Web API を意識した結果なのかもしれませんが、使い勝手が随分と変わっているような感じです。

Google 側から提供されているヘルプ記事には、GAS で People API を利用する際の説明も提供されています。サービスとして「People API」を追加することで、各種の API が利用できるようになります。

作り直したプログラム

API の使い勝手が異なる部分があるので、プログラムの構造が変わっている部分がありますが… 作り直したプログラムは、以下のような感じです。

使用する API を変更したほかに、

  • 実行した結果、処理が行われた部分(セル)には色を付けるようにした。 ※リアルタイムに色が付けられるわけではないので、終了したら結果がわかる感じです。

  • 実行している状況を、画面右下にトーストで表示するようにした。 ※後述するウエイト処理を入れてあることで、処理件数によっては相応の時間を要するため、状況が把握できるようにしたかった。

といった変更が加えられていますが、プログラムが備えている機能としては、以前のプログラムと変わりありません。廃止された API を使用していない安心感があるかもしれません。

使い勝手の違い

API が Web API を意識したことで、いろいろと変わったのだと思いますが、「Contacts Service」には用意されていた名前を指定して、連絡先グループを取得することができなくなってしまったため、プログラムの構造を変更しなければならなくなりました。事前に、作成されている連絡先グループを一覧にしておき、新規に作成しなければならないかどうかを判断できるようにして対応しています。

プログラムの記述方法にも関係しているのかもしれませんが、上記のような API の使い勝手が変わったことで処理が増えたりもしたことで、プログラムは 140行くらいに増えました。

不可解なエラー

プログラムを実行していると、以下のような意味不明なエラーが発生してしまうことがありました。発生している現象は、大きく次の 2つ。

  • 登録しようとするメールアドレスが、既に存在している連絡先にあるかを確認したところ、存在しているはずなのに「存在しない」という戻り値となる。

  • 下図のような原因不明のエラーが発生する。

発生するエラー

これらのエラーは必ず発生するわけではないために、原因追及も難しく、なぜ発生しているのかがわかりません。😖

対応としては、前回の「Contacts Service」でも行ったように、API を呼び出す度に 1秒間のウエイト処理を追加してあります。このようなウエイト処理を入れることで、動作は安定してくれたのですが、処理に要する時間は長くなってしまいました。

そのため、処理状況がわかるように、画面右下に以下 URL で紹介したようなトーストによる表示を行っています。

下図のような感じで、処理状況や実行結果が画面右下にトーストとして表示されます。厳密には、このような表示を行っていることで処理時間が余計にかかっているのかもしれませんが、それ以上にウエイト処理によって待たされているので、この処理を追加した影響は微々たるものだと思います。

処理結果
  • 上図は、同じ内容で 2度目の追加処理を行った場合の実行結果なので、0人・0個となっています。

コピー元

前述のような変更点があることもあって、先に公開した「Contacts Service」によるプログラムと置き換えることはせず、People API 版として公開することにしました。使い分ける、というものでもありませんが、お好きなほうをお使いください。 ※使用している API が異なるだけで、プログラムの機能は基本的に変わりありません。

https://docs.google.com/spreadsheets/d/1ZAgPGrSudouBVj9opHNcXnniYIl1mv7pvuuiDFzRkZw/copy

自身が利用している Google アカウントでログインしている状態で、上記の URL にアクセスします。GAS のプログラムが保存されたスプレッドシートが、自身の Google ドライブにコピーされます。

用意するデータ

コピーされたスプレッドシートは、上図のようなサンプルデータが保存されています。列 A には「氏名」、列 B には「メールアドレス」、列 C 以降には所属させる「連絡先グループ」を指定します。

  • 1行目は見出し行で無視され、2行目以降が処理の対象です。

  • 列 C 以降が空欄でなければ、その名前の「連絡先グループ」に所属させます。 ※途中で空欄が含まれていても構いません。

  • 列 C 以降は、列ごとに同じ内容である必要はありません。

  • セル E5 と F5 のように同じユーザーに対して、同じ「連絡先グループ」を指定しても、重複して登録されることはありません。

上図のように、連絡先に登録するデータが準備できたら、メニューから「連絡先に追加」→「追加実行」を選択します。

メニューから「連絡先に追加」→「追加実行」を選択

なお、スクリプトの初回実行時には、実行するアカウントによる確認作業が必要になります。詳しくは以下の投稿をご覧ください。

実行結果

上図のようなデータで追加すると、以下のようにそれぞれの「連絡先グループ」にユーザーが登録されます。

実行結果

最後に

最後に、お決まりのフレーズなどを書いておきます。

  • 一応の動作確認は行っているものの、不慮のトラブルによって損害等が生じても、責任はとれませんので予めご了承ください。

  • コメントを含めても 140行程度のスクリプトであり、実行に際して目的外の場所への書き出しや収集などは行っていません。

  • 特別なエラー処理は行っていないので、意図しないケースでエラーが発生してしまうかもしれません。どうにもならない場合には、ご連絡ください。

今回のプログラムについては、API が異なるものの、内容的には変わっていないため、解説編の記事は作成しないつもりです。


この記事が気に入ったらサポートをしてみませんか?