1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【GoogleAppsScript】Googleアカウント情報の取得

Last updated at Posted at 2024-06-13

はじめに

Google Apps Scriptを使用してGoogleアカウントの情報を取得する方法について調査しました。Google Apps Script APIを使用して取得する情報と、APIを使用せずに取得できる情報があります。
本記事では、実行ユーザーの以下の情報を取得する方法と、関連するエラーの解消方法について記載します。

  • メールアドレス
  • 名前(Google Apps Script APIを使用)

Google Apps Scriptとは?

Google Apps Scriptは、Googleが提供するローコードプラットフォームです。Gmailアカウントがあれば無料で利用でき、開発環境のセットアップが不要なため、すぐに始められるのが特徴です。
Google Apps Scriptを利用することで、以下のようなGoogleが提供する各種サービス(1部)の自動化やその他サービスと連携が可能です。

  • Gmail
  • Googleドライブ
  • Googleスプレッドシート
  • Googleカレンダー
  • Googleドキュメント
  • Googleスライド
  • Googleフォーム

前提

Googleアカウントに以下の項目が登録されていること

  • メールアドレス
  • 名前
  • その他の取得したい項目

Google App Scriptの使用方法

情報を取得する前に、Google Apps Scriptの開き方と新規ファイルの作成方法について説明します。

Google App Scriptの開き方

Google Apps Scriptは、多くの場合Googleアプリのファイルから開かれます。
以下はスプレッドシートからGoogle Apps Scriptを開く方法です。

1.Google スプレッドシートを開きます。

2.ツールバーから「拡張機能」→「Google Apps Script」を選択します。
image.png

自動でコード.gsファイルと以下のコードが生成されます。
image.png

Googleドライブの任意の場所で右クリック→「その他」→ 「Google App Script」を選択することで、直接開くこともできます。
image.png

新規ファイルの作成方法

1.Google Apps Scriptエディタで、ファイルの横の「+」ボタンをクリックします。
image.png

2.「スクリプト」または「HTML」を選択します。
※スクリプトを選択すると、「コード.gs」の初期状態と同じファイルが作成されます。
HTML
image.png

メールアドレスの取得

Googleアカウントの連絡先情報に記載されているメールアドレスを取得します。
メールアドレスはAPIを使用せずに取得できます。
image.png

account.js
function getMailAddress() {
  const address = Session.getActiveUser().getEmail();
  Logger.log("メールアドレスは" + address + "です");
}

以下のメソッドは現在サポートが終了しています。
getUserLoginId()

実行手順

①関数を選択し、【実行】を押下します。
image.png

初めて実行した場合、確認ダイアログが表示されます。
image.png

②【権限を確認】を押下し、アカウントを選択します。
image.png

結果

メールアドレスが取得され、以下のようにログに表示されます。
image.png

名前の取得(Google Apps Script APIを使用)

Googleアカウントの【名前と発音】に登録されている情報を取得します。
名前の取得には、サービスの追加(Google Apps Script APIの使用)が必要です。
image.png

①サービスの【+】を押下します。
image.png

②追加するサービス(People APIドキュメント)を選択し、【追加】を押下します。
image.png

追加したサービスが表示されます。
image.png

③「People」というIDで追加した場合、以下のコードで名前を取得します。

account.js
// 名前の取得
function getName() {
  const people = People.People.get('people/me', { personFields: 'names' });
  const familyName = `${people['names'][0]['familyName']}`;
  const givenName = `${people['names'][0]['givenName']}`;
  const fullName = `${people['names'][0]['familyName']} ${people['names'][0]['givenName']}`;
  Logger.log("姓は" + familyName + "です");
  Logger.log("名は" + givenName + "です");
  Logger.log("姓+名は" + fullName + "です");
}

実行すると以下のエラーが発生しました。
image.png

OAuthスコープを追加する

OAuthスコープが不足しているため、以下の手順で追加します。
①【プロジェクトの設定】を押下します。
image.png

②【「appsscript.json」マニフェスト ファイルをエディタで表示する】にチェックを入れます。
image.png

エディタにappsscript.jsonが表示されます。
image.png

③以下の情報を追記します。
 ※必要なOAuthスコープはAPIの公式ドキュメントに記載されています。
  "oauthScopes": [ "https://www.googleapis.com/auth/userinfo.profile" ]

appsscript.json
{
  "timeZone": "Asia/Tokyo",
  "dependencies": {
    "enabledAdvancedServices": [
      {
        "userSymbol": "People",
        "version": "v1",
        "serviceId": "peopleapi"
      }
    ]
  },
  "exceptionLogging": "STACKDRIVER",
  "runtimeVersion": "V8",
  "webapp": {
    "executeAs": "USER_DEPLOYING",
    "access": "MYSELF"
  },
   "oauthScopes": [
    "https://www.googleapis.com/auth/userinfo.profile"
  ]
}

結果

再度実行すると、エラーが解消され名前を取得することができました。
image.png

その他の項目

PeopleAPIの場合、取得したい項目のpersonFieldsに修正することで他の情報を取得することが可能です。

account.js
  const people = People.People.get('people/me', { personFields: '取得したい項目' });

例)

personFields 項目名
addresses 住所
genders 性別
birthdays 生年月日
organizations 組織情報
externalIds 外部ID

参考:https://developers.google.com/people/api/rest/v1/people.connections/list?hl=ja

さいごに

Google Apps Scriptを使用してGoogleアカウントの情報を取得する方法について記載しました。
その他のGoogle Apps Script APIを使用する場合も同様の手順で取得することが可能です。
当記事が参考になれば幸いです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?