GASでGoogle連絡先を効率的に管理する方法

GASGoogle連絡先管理
GASでGoogle連絡先を効率的に管理する方法のサムネイル

こんにちは、GASおじです。今回は中小企業の経営者やフリーランスの皆さんに向けて、Google連絡先をGoogle Apps Script(以下GAS)で効率的に管理する方法をシェアします。SaaS課金に厳しいおじさん目線で、追加の専用SaaS料金なし、Googleアカウントの利用枠内(つまりApps Scriptのquota・実行上限あり)で運用できる仕組みを提案しますよ。


Google連絡先管理の課題とGAS導入のメリット

Google連絡先は便利ですが、数百件、数千件と増えてくると管理が大変です。例えば、

  • 重複データの検出と整理
  • 属性変更の一括更新
  • バックアップや復元の仕組み構築

こうした作業を手動でやっていると時間もかかるし、ミスも増えます。そこでGASを使うと、

  • 定期的に連絡先をバックアップしつつ、
  • 入力検証付きで安全にデータを追加・更新でき、
  • 万が一のために復元用データも残せる

という環境が無料で作れます(Googleアカウントの利用枠内で)。


初期設定と必要な権限

まずはGASプロジェクトを作成し、Google連絡先APIを使うために「連絡先の管理」権限を付与します。具体的には、

  1. Google Apps Scriptのエディタを開く
  2. メニューの「サービス」から「Google People API」を追加
  3. スクリプトの実行時に「連絡先の管理」権限を求められるので承認

このPeople APIを使うことで連絡先情報を安全に読み書きできます。

また、個人情報を扱うため、スクリプトのコードや実行環境は管理者以外のアクセスを制限し、ログ管理も忘れずに。


バックアップと復元の仕組み

既存の連絡先を誤って更新・削除すると大変なので、バックアップは必須です。おじさんが推奨するのは、

  • 連絡先のスナップショットを日時付きスプレッドシートに保存
  • そこから必要なときに復元処理を行う

つまり、既存データはその場で上書きせず、編集用は新しいシートを作成して処理します。


具体的なGASコード例

以下は、

  • 連絡先リストを取得し、
  • 入力検証をして、
  • 新しい日時付きシートに書き出すサンプルコードです。
function backupGoogleContacts() {
  const peopleService = People.People.Connections;
  const resourceName = "people/me";
  const pageSize = 1000; // 一度に取得する件数

  // 連絡先を取得する関数(最大1000件まで)
  function getContacts() {
    const response = peopleService.list(resourceName, {
      personFields: "names,emailAddresses,phoneNumbers",
      pageSize: pageSize
    });
    return response.connections || [];
  }

  // 連絡先の入力検証関数
  function validateContact(contact) {
    // 名前が必須
    if (!contact.names || contact.names.length === 0) return false;

    // メールまたは電話番号が1つ以上あるか
    const hasEmail = contact.emailAddresses && contact.emailAddresses.length > 0;
    const hasPhone = contact.phoneNumbers && contact.phoneNumbers.length > 0;

    return hasEmail || hasPhone;
  }

  // 連絡先を2次元配列に整形
  function formatContacts(contacts) {
    return contacts
      .filter(validateContact)
      .map(c => {
        const name = c.names[0].displayName || "";
        const email = c.emailAddresses ? c.emailAddresses[0].value : "";
        const phone = c.phoneNumbers ? c.phoneNumbers[0].value : "";
        return [name, email, phone];
      });
  }

  // バックアップ用の新規シートを作成し書き込み
  const ss = SpreadsheetApp.create("GoogleContactsBackup_" + new Date().toISOString());
  const sheet = ss.getActiveSheet();
  sheet.appendRow(["名前", "メールアドレス", "電話番号"]);

  const contacts = getContacts();
  const formatted = formatContacts(contacts);

  if (formatted.length > 0) {
    sheet.getRange(2, 1, formatted.length, 3).setValues(formatted);
  }

  Logger.log(`バックアップ完了。${formatted.length}件の連絡先を保存しました。`);
}

このコードは連絡先を削除せず、既存のGoogle連絡先を安全にバックアップします。新しいスプレッドシートが作られるので、原本はそのままです。


コスト削減額の仮定と計算例

ここで仮に、中小企業で1日30分かけて手動で連絡先管理しているとします。時給換算1500円とすると、

  • 1日あたり: 1500円 × 0.5時間 = 750円
  • 1ヶ月20営業日: 750円 × 20日 = 15,000円
  • 年間: 15,000円 × 12ヶ月 = 180,000円

GAS自動化でこの時間を半減できれば約90,000円の人的コスト削減に相当。ただしこれはあくまで仮定であり、導入効果は業務内容や運用状況によって異なります。


installable Triggerと復元手順

バックアップは定期的に実行したいので、GASのinstallable trigger(時間主導型トリガー)を設定しましょう。

  1. スクリプトエディタの左サイドバー「トリガー」から「トリガーを追加」
  2. 関数に backupGoogleContacts を選択
  3. 時間ベースのトリガーを設定(例:毎日午前1時)

復元したい場合は、

  1. バックアップスプレッドシートを開く
  2. 復元したい連絡先データをCSVなどにエクスポート
  3. People APIを使った復元スクリプト(別途作成)で連絡先を追加

復元スクリプトは誤操作防止のため、慎重に実装してください。


まとめ

  • Google連絡先管理はGASで効率化可能
  • 既存データは削除せず、新規日時付きシートへ出力し安全にバックアップ
  • 入力検証とbatch writeで信頼性アップ
  • Googleアカウントの利用枠内で追加専用SaaS料金なし(quota・実行上限あり)
  • installable triggerで定期バックアップも自動化可能

余計なコストをかけずに、連絡先管理を賢く楽にしましょう。SaaS課金に厳しいおじさんのポリシーにピッタリなやり方ですよ。


GASおじラボで500ツール使い放題 →
あなたの業務効率化をもっと進めるなら、ぜひメンバーシップもチェック!