🦔
Google Business Profile APIでインサイト情報の取得方法
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