Support for Tag Manager API #1801

This commit is contained in:
Ross Scroggs
2025-07-17 08:43:09 -07:00
parent 61c2b06021
commit 326e83a05d
5 changed files with 53 additions and 20 deletions

View File

@@ -8408,6 +8408,11 @@ gam <UserTypeEntity> show tagmanagertags <TagManagerWorkspacePathEntity>
gam <UserTypeEntity> print tagmanagertags <TagManagerWorkspacePathEntity> [todrive <ToDriveAttribute>*]
[formatjson [quotechar <Character>]]
gam <UserTypeEntity> show tagmanagerpermissions <TagManagerAccountPathEntity>
[formatjson]
gam <UserTypeEntity> print tagmanagerpermissions <TagManagerAccountPathEntity> [todrive <ToDriveAttribute>*]
[formatjson [quotechar <Character>]]
# Users - Tasks
<TaskAttribute> ::=

View File

@@ -76492,18 +76492,20 @@ def importTasklist(users):
parentIdMap[taskId] = result['id']
TAGMANAGER_PARAMETERS = {
Ent.TAGMANAGER_ACCOUNT: {'respType': 'account', 'parentEntityType': None,
'idList': ['accountId']},
Ent.TAGMANAGER_CONTAINER: {'respType': 'container', 'parentEntityType': Ent.TAGMANAGER_ACCOUNT,
'idList': ['accountId', 'containerId']},
Ent.TAGMANAGER_WORKSPACE: {'respType': 'workspace', 'parentEntityType': Ent.TAGMANAGER_CONTAINER,
'idList': ['accountId', 'containerId', 'workspaceId']},
Ent.TAGMANAGER_TAG: {'respType': 'tag', 'parentEntityType': Ent.TAGMANAGER_WORKSPACE,
'idList': ['accountId', 'containerId', 'workspaceId', 'tagId']},
Ent.TAGMANAGER_ACCOUNT: {'api': API.TAGMANAGER, 'respType': 'account', 'parentEntityType': None,
'name': 'name', 'idList': ['accountId']},
Ent.TAGMANAGER_CONTAINER: {'api': API.TAGMANAGER, 'respType': 'container', 'parentEntityType': Ent.TAGMANAGER_ACCOUNT,
'name': 'name', 'idList': ['accountId', 'containerId']},
Ent.TAGMANAGER_WORKSPACE: {'api': API.TAGMANAGER, 'respType': 'workspace', 'parentEntityType': Ent.TAGMANAGER_CONTAINER,
'name': 'name', 'idList': ['accountId', 'containerId', 'workspaceId']},
Ent.TAGMANAGER_TAG: {'api': API.TAGMANAGER, 'respType': 'tag', 'parentEntityType': Ent.TAGMANAGER_WORKSPACE,
'name': 'name', 'idList': ['accountId', 'containerId', 'workspaceId', 'tagId']},
Ent.TAGMANAGER_PERMISSION: {'api': API.TAGMANAGER_USERS, 'respType': 'userPermission', 'parentEntityType': Ent.TAGMANAGER_ACCOUNT,
'name': 'emailAddress', 'idList': ['accountId']},
}
def printShowTagManagerObjects(users, entityType):
csvPF = CSVPrintFile(['User', 'name', 'path']) if Act.csvFormat() else None
csvPF = CSVPrintFile(['User']) if Act.csvFormat() else None
FJQC = FormatJSONQuoteChar(csvPF)
if entityType == Ent.TAGMANAGER_ACCOUNT:
kwargs = {'includeGoogleTags': False}
@@ -76515,6 +76517,8 @@ def printShowTagManagerObjects(users, entityType):
else:
parentList = getEntityList(Cmd.OB_TAGMANAGER_PATH_LIST)
parameters = TAGMANAGER_PARAMETERS[entityType]
if csvPF:
csvPF.AddTitles([parameters['name'], 'path'])
while Cmd.ArgumentsRemaining():
myarg = getArgument()
if csvPF and myarg == 'todrive':
@@ -76526,7 +76530,7 @@ def printShowTagManagerObjects(users, entityType):
i, count, users = getEntityArgument(users)
for user in users:
i += 1
user, svc = buildGAPIServiceObject(API.TAGMANAGER, user, i, count)
user, svc = buildGAPIServiceObject(parameters['api'], user, i, count)
if not svc:
continue
if entityType == Ent.TAGMANAGER_ACCOUNT:
@@ -76535,8 +76539,10 @@ def printShowTagManagerObjects(users, entityType):
svc = svc.accounts().containers()
elif entityType == Ent.TAGMANAGER_WORKSPACE:
svc = svc.accounts().containers().workspaces()
else: #elif entityType == Ent.TAGMANAGER_TAG:
elif entityType == Ent.TAGMANAGER_TAG:
svc = svc.accounts().containers().workspaces().tags()
else: #elif entityType == Ent.TAGMANAGER_PERMISSION:
svc = svc.accounts().user_permissions()
jcount = len(parentList)
j = 0
for parent in parentList:
@@ -76566,9 +76572,9 @@ def printShowTagManagerObjects(users, entityType):
if not FJQC.formatJSON:
printEntity([entityType, result['path']], k, kcount)
Ind.Increment()
printKeyValueList([parameters['name'], result.pop(parameters['name'])])
for tmid in parameters['idList']:
printKeyValueList([tmid, result.pop(tmid)])
printKeyValueList(['name', result.pop('name')])
showJSON(None, result)
Ind.Decrement()
else:
@@ -76583,7 +76589,7 @@ def printShowTagManagerObjects(users, entityType):
if not FJQC.formatJSON:
csvPF.WriteRowTitles(row)
elif csvPF.CheckRowTitles(row):
row = {'User': user, 'name': result['name'], 'path': result['path']}
row = {'User': user, parameters['name']: result[parameters['name']], 'path': result['path']}
row['JSON'] = json.dumps(cleanJSON(result), ensure_ascii=False, sort_keys=True)
csvPF.WriteRowNoFilter(row)
if csvPF:
@@ -76619,6 +76625,13 @@ def printShowTagManagerWorkspaces(users):
def printShowTagManagerTags(users):
printShowTagManagerObjects(users, Ent.TAGMANAGER_TAG)
# gam <UserTypeEntity> show tagmanagerpermissions <TagManagerAccountPathEntity>
# [formatjson]
# gam <UserTypeEntity> print tagmanagerpermissions <TagManagerAccountPathEntity> [todrive <ToDriveAttribute>*]
# [formatjson [quotechar <Character>]]
def printShowTagManagerPermissions(users):
printShowTagManagerObjects(users, Ent.TAGMANAGER_PERMISSION)
def getCRMOrgId():
setTrueCustomerId()
_, crm = buildGAPIServiceObject(API.CLOUDRESOURCEMANAGER, None)
@@ -78349,8 +78362,9 @@ USER_COMMANDS_WITH_OBJECTS = {
Cmd.ARG_SITEACTIVITY: deprecatedUserSites,
Cmd.ARG_TAGMANAGERACCOUNT: printShowTagManagerAccounts,
Cmd.ARG_TAGMANAGERCONTAINER: printShowTagManagerContainers,
Cmd.ARG_TAGMANAGERWORKSPACE: printShowTagManagerWorkspaces,
Cmd.ARG_TAGMANAGERPERMISSION: printShowTagManagerPermissions,
Cmd.ARG_TAGMANAGERTAG: printShowTagManagerTags,
Cmd.ARG_TAGMANAGERWORKSPACE: printShowTagManagerWorkspaces,
Cmd.ARG_TASK: printShowTasks,
Cmd.ARG_TASKLIST: printShowTasklists,
Cmd.ARG_THREAD: printShowThreads,
@@ -78460,8 +78474,9 @@ USER_COMMANDS_WITH_OBJECTS = {
Cmd.ARG_SMIME: printShowSmimes,
Cmd.ARG_TAGMANAGERACCOUNT: printShowTagManagerAccounts,
Cmd.ARG_TAGMANAGERCONTAINER: printShowTagManagerContainers,
Cmd.ARG_TAGMANAGERWORKSPACE: printShowTagManagerWorkspaces,
Cmd.ARG_TAGMANAGERPERMISSION: printShowTagManagerPermissions,
Cmd.ARG_TAGMANAGERTAG: printShowTagManagerTags,
Cmd.ARG_TAGMANAGERWORKSPACE: printShowTagManagerWorkspaces,
Cmd.ARG_TASK: printShowTasks,
Cmd.ARG_TASKLIST: printShowTasklists,
Cmd.ARG_THREAD: printShowThreads,
@@ -78703,8 +78718,9 @@ USER_COMMANDS_OBJ_ALIASES = {
Cmd.ARG_SMIMES: Cmd.ARG_SMIME,
Cmd.ARG_TAGMANAGERACCOUNTS: Cmd.ARG_TAGMANAGERACCOUNT,
Cmd.ARG_TAGMANAGERCONTAINERS: Cmd.ARG_TAGMANAGERCONTAINER,
Cmd.ARG_TAGMANAGERWORKSPACES: Cmd.ARG_TAGMANAGERWORKSPACE,
Cmd.ARG_TAGMANAGERPERMISSIONS: Cmd.ARG_TAGMANAGERPERMISSION,
Cmd.ARG_TAGMANAGERTAGS: Cmd.ARG_TAGMANAGERTAG,
Cmd.ARG_TAGMANAGERWORKSPACES: Cmd.ARG_TAGMANAGERWORKSPACE,
Cmd.ARG_TASKS: Cmd.ARG_TASK,
Cmd.ARG_TASKLISTS: Cmd.ARG_TASKLIST,
Cmd.ARG_TEAMDRIVE: Cmd.ARG_SHAREDDRIVE,

View File

@@ -95,6 +95,7 @@ STORAGE = 'storage'
STORAGEREAD = 'storageread'
STORAGEWRITE = 'storagewrite'
TAGMANAGER = 'tagmanager'
TAGMANAGER_USERS = 'tagmanagerusers'
TASKS = 'tasks'
VAULT = 'vault'
YOUTUBE = 'youtube'
@@ -280,6 +281,7 @@ _INFO = {
STORAGEREAD: {'name': 'Cloud Storage API - Read', 'version': 'v1', 'v2discovery': True, 'mappedAPI': STORAGE},
STORAGEWRITE: {'name': 'Cloud Storage API - Write', 'version': 'v1', 'v2discovery': True, 'mappedAPI': STORAGE},
TAGMANAGER: {'name': 'Tag Manager API', 'version': 'v2', 'v2discovery': True},
TAGMANAGER_USERS: {'name': 'Tag Manager API - Users', 'version': 'v2', 'v2discovery': True, 'mappedAPI': TAGMANAGER},
TASKS: {'name': 'Tasks API', 'version': 'v1', 'v2discovery': True},
VAULT: {'name': 'Vault API', 'version': 'v1', 'v2discovery': True},
YOUTUBE: {'name': 'Youtube API', 'version': 'v3', 'v2discovery': True},
@@ -702,7 +704,13 @@ _SVCACCT_SCOPES = [
{'name': 'Tag Manager API - read only',
'api': TAGMANAGER,
'subscopes': [],
'offByDefault': True,
'scope': 'https://www.googleapis.com/auth/tagmanager.readonly'},
{'name': 'Tag Manager API - Users',
'api': TAGMANAGER_USERS,
'subscopes': [],
'offByDefault': True,
'scope': 'https://www.googleapis.com/auth/tagmanager.manage.users'},
{'name': 'Tasks API',
'api': TASKS,
'subscopes': READONLY,

View File

@@ -786,10 +786,12 @@ class GamCLArgs():
ARG_TAGMANAGERACCOUNTS = 'tagmanageraccounts'
ARG_TAGMANAGERCONTAINER = 'tagmanagercontainer'
ARG_TAGMANAGERCONTAINERS = 'tagmanagercontainers'
ARG_TAGMANAGERWORKSPACE = 'tagmanagerworkspace'
ARG_TAGMANAGERWORKSPACES = 'tagmanagerworkspaces'
ARG_TAGMANAGERPERMISSION = 'tagmanagerpermission'
ARG_TAGMANAGERPERMISSIONS = 'tagmanagerpermissions'
ARG_TAGMANAGERTAG = 'tagmanagertag'
ARG_TAGMANAGERTAGS = 'tagmanagertags'
ARG_TAGMANAGERWORKSPACE = 'tagmanagerworkspace'
ARG_TAGMANAGERWORKSPACES = 'tagmanagerworkspaces'
ARG_TASK = 'task'
ARG_TASKS = 'tasks'
ARG_TASKLIST = 'tasklist'

View File

@@ -360,8 +360,9 @@ class GamEntity():
SVCACCT_KEY = 'svky'
TAGMANAGER_ACCOUNT = 'tmac'
TAGMANAGER_CONTAINER = 'tmco'
TAGMANAGER_WORKSPACE = 'tmws'
TAGMANAGER_PERMISSION = 'tmpm'
TAGMANAGER_TAG = 'tmtg'
TAGMANAGER_WORKSPACE = 'tmws'
TARGET_USER = 'tgt '
TASK = 'task'
TASKLIST = 'tali'
@@ -716,8 +717,9 @@ class GamEntity():
SVCACCT_KEY: ['Service Account Keys', 'Service Account Key'],
TAGMANAGER_ACCOUNT: ['Tag Manager Accounts', 'Tag Manager Account'],
TAGMANAGER_CONTAINER: ['Tag Manager Containers', 'Tag Manager Container'],
TAGMANAGER_WORKSPACE: ['Tag Manager Workspaces', 'Tag Manager Workspace'],
TAGMANAGER_PERMISSION: ['Tag Manager Permissions', 'Tag Manager Permission'],
TAGMANAGER_TAG: ['Tag Manager Tags', 'Tag Manager Tag'],
TAGMANAGER_WORKSPACE: ['Tag Manager Workspaces', 'Tag Manager Workspace'],
TARGET_USER: ['Target Users', 'Target User'],
TASK: ['Tasks', 'Task'],
TASKLIST: ['Tasklists', 'Tasklist'],