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

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

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


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

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

・重複データの検出と整理
・属性変更の一括更新
・バックアップや復元の仕組み構築
こうした作業を手動でやっていると時間もかかるし、ミスも増えます。そこでGASを使うと、

・定期的に連絡先をバックアップしつつ、
・入力検証付きで安全にデータを追加・更新でき、
・万が一のために復元用データも残せる
という環境が無料で作れます(Googleアカウントの利用枠内で)。


■ 初期設定と必要な権限

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

・Google Apps Scriptのエディタを開く
・メニューの「サービス」から「Google People API」を追加
・スクリプトの実行時に「連絡先の管理」権限を求められるので承認
この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(時間主導型トリガー)を設定しましょう。

・スクリプトエディタの左サイドバー「トリガー」から「トリガーを追加」
・関数に backupGoogleContacts を選択
・時間ベースのトリガーを設定(例:毎日午前1時)
復元したい場合は、

・バックアップスプレッドシートを開く
・復元したい連絡先データをCSVなどにエクスポート
・People APIを使った復元スクリプト(別途作成)で連絡先を追加
復元スクリプトは誤操作防止のため、慎重に実装してください。


□ まとめ

・Google連絡先管理はGASで効率化可能
・既存データは削除せず、新規日時付きシートへ出力し安全にバックアップ
・入力検証とbatch writeで信頼性アップ
・Googleアカウントの利用枠内で追加専用SaaS料金なし(quota・実行上限あり)
・installable triggerで定期バックアップも自動化可能
余計なコストをかけずに、連絡先管理を賢く楽にしましょう。SaaS課金に厳しいおじさんのポリシーにピッタリなやり方ですよ。

■ GASの相談や導入サポートを見たい方へ

この記事と近い作業をGoogleシートやGASで整えたい方は、Gasおじのココナラ出品一覧もご覧ください。

■ 関連サービス

GASおじのココナラ出品一覧
日々の記録、確認、通知、投稿準備などを、GoogleスプレッドシートとGASで無理なく自動化する相談ができます。
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す