73 lines
2.5 KiB
Python
73 lines
2.5 KiB
Python
import os.path
|
|
import json
|
|
from google.auth.transport.requests import Request
|
|
from google.oauth2.credentials import Credentials
|
|
from google_auth_oauthlib.flow import InstalledAppFlow
|
|
from googleapiclient.discovery import build
|
|
|
|
SCOPES = [
|
|
'https://www.googleapis.com/auth/business.manage'
|
|
]
|
|
|
|
def get_creds():
|
|
creds = None
|
|
if os.path.exists('token.json'):
|
|
creds = Credentials.from_authorized_user_file('token.json', SCOPES)
|
|
return creds
|
|
|
|
def list_locations():
|
|
creds = get_creds()
|
|
if not creds:
|
|
print("No token.json found. Please run authorize.py first.")
|
|
return
|
|
|
|
try:
|
|
# 1. Get the Account ID
|
|
# "mybusinessaccountmanagement" service is needed to get the account
|
|
service_account = build('mybusinessaccountmanagement', 'v1', credentials=creds)
|
|
accounts_result = service_account.accounts().list().execute()
|
|
accounts = accounts_result.get('accounts', [])
|
|
|
|
if not accounts:
|
|
print("No Google Business accounts found.")
|
|
return
|
|
|
|
# Use the first account (usually there's only one or the user wants the main one)
|
|
# You might want to list them if there are multiple.
|
|
account = accounts[0]
|
|
account_name = account['name'] # Format: accounts/{accountId}
|
|
print(f"Using Account: {account['accountName']} ({account_name})")
|
|
|
|
# 2. List Locations for that Account
|
|
# "mybusinessbusinessinformation" service is used for locations
|
|
service_locations = build('mybusinessbusinessinformation', 'v1', credentials=creds)
|
|
|
|
print("\nFetching locations...\n")
|
|
print(f"{'Store Code':<15} | {'Location ID':<40} | {'Outlet Name'}")
|
|
print("-" * 80)
|
|
|
|
request = service_locations.accounts().locations().list(
|
|
parent=account_name,
|
|
readMask="name,title,storeCode"
|
|
)
|
|
|
|
while request is not None:
|
|
response = request.execute()
|
|
locations = response.get('locations', [])
|
|
|
|
for loc in locations:
|
|
# name is "locations/{locationId}"
|
|
location_id = loc.get('name', '').split('/')[-1]
|
|
title = loc.get('title', 'N/A')
|
|
store_code = loc.get('storeCode', 'N/A')
|
|
|
|
print(f"{store_code:<15} | {location_id:<40} | {title}")
|
|
|
|
request = service_locations.accounts().locations().list_next(request, response)
|
|
|
|
except Exception as e:
|
|
print(f"An error occurred: {e}")
|
|
|
|
if __name__ == '__main__':
|
|
list_locations()
|