🦔

Google Business Profile APIでインサイト情報の取得方法

2022/07/18に公開

2022年4月からGoogle Business Profile APIの仕様が変わり、参考サイトが少なかったのでGoogle Business Profile APIでインサイト情報を取得する方法について備忘録を残します。
今回はPythonを用いた場合についてです。

前提

  • mac OS Version12.4
  • Google My Business APIの設定完了済
  • Python 3.9
    Google My Business APIの設定は下記サイトを参考に設定してください。

認証情報jsonファイルがPythonファイルと同じディレクトリに存在する必要があります。

ライブラリのインストール

google-api-python-clientとoauth2clientを下記コマンドでインストールします。

$ pip install --upgrade google-api-python-client
$ pip install oauth2client

アカウント情報の取得

import sys
import json

from googleapiclient import sample_tools
from googleapiclient.http import build_http

def main(argv):
    MyBusinessAccount, flags = sample_tools.init(
    argv,
    "mybusinessaccountmanagement",
    "v1",
    __doc__,
    __file__,
    scope="https://www.googleapis.com/auth/business.manage"
    )

    output = MyBusinessAccount.accounts().list().execute()
    print("List of Accounts:\n")
    print(json.dumps(output, indent=2) + "\n")

if __name__ == "__main__":
  main(sys.argv)

プログラムの詳細を説明します。
まずはAPIサービスを構築します。引数の詳細は以下です。

  • argv:アプリケーションのコマンドラインパラメータの文字列のリスト
  • name:APIの名前
  • version:APIのバージョン
  • doc:doc で問題ない
  • filename:file で問題ない
  • scope:OAuth権限の指定
  • (discovery_filename):Pythonはクライアントライブラリとして提供されているため必要ない
    scopeやname、versionは下記サイトで確認できます。

上記サイトで欲しい情報によってインスタンスメソッドを指定することで情報がjson形式から辞書型に変換されて返ってきます。今回はアカウント情報を取得し、下記のような情報が返ってきました。

{
  "accounts": [
    {
      "name": accounts/{accountsID},
      "accountName": ###,
      "type": "PERSONAL",
      "verificationState": "UNVERIFIED",
      "vettedState": "NOT_VETTED"
    }
  ]
}

Location_idの取得

import sys
from googleapiclient import sample_tools

def main(argv):
    try:
# APIサービスインスタンスの構築
        MyBusinessAccount, flags = sample_tools.init(argv, "mybusinessaccountmanagement", "v1", __doc__, __file__, scope="https://www.googleapis.com/auth/business.manage")
        MyBusinessInformation, flags = sample_tools.init(argv, "mybusinessbusinessinformation", "v1", __doc__, __file__, scope="https://www.googleapis.com/auth/business.manage")
#アカウントIDの取得
        request = MyBusinessAccount.accounts().list()
        accounts_result = request.execute()
        account_resource_name = accounts_result['accounts'][0]['name']
# location_idの取得
	fields_we_want = 'name,title'
        request = MyBusinessInformation.accounts().locations().list(
            parent=account_resource_name, #取得したアカウントID
            readMask=fields_we_want
            )

        # Execute the request and print the result
        locations_result = request.execute()
        print("locations_result:")
        print(locations_result)

        # Get the business_location_id
        if locations_result:
            business_location_id = locations_result['locations'][0]['name'].split('/')[1]
            print("business_location_id:")
            print(business_location_id)

        return business_location_id

    except:
        print('There was an error trying to get Business Information.')

if __name__ == "__main__":
  main(sys.argv)

field_we_wantには下記サイトを参照し、欲しいビジネス情報を入力する。

感想

今回取得したアカウントIDとロケーションIDは他の情報を取得する際に必要になる場合があるので、モジュールを作成し、いつでも呼び出せる状態にすると良いかもしれないです。

Discussion