From ab3dd49fb49502483fe67dc6e643bffae01f96e4 Mon Sep 17 00:00:00 2001 From: Ross Scroggs Date: Thu, 19 Mar 2026 22:21:14 -0700 Subject: [PATCH] Add new filters to to `gam report ` --- src/GamCommands.txt | 2 ++ src/GamUpdate.txt | 8 ++++++++ src/gam/__init__.py | 27 ++++++++++++++++++++------- 3 files changed, 30 insertions(+), 7 deletions(-) diff --git a/src/GamCommands.txt b/src/GamCommands.txt index 089cd014..978ebb9c 100644 --- a/src/GamCommands.txt +++ b/src/GamCommands.txt @@ -4666,6 +4666,8 @@ gam report [todrive *] [event|events ] [ip ] [gmaileventtypes ] [groupidfilter ] [resourcedetailsfilter ] + [networkinfofilter ] [statusfilter ] + [applicationinfofilter ] [includesensitivedata] [notimesort] [maxactivities ] [maxevents ] [maxresults ] [countsonly [bydate|summary] [eventrowfilter]] diff --git a/src/GamUpdate.txt b/src/GamUpdate.txt index 6e5b6014..201d3e57 100644 --- a/src/GamUpdate.txt +++ b/src/GamUpdate.txt @@ -16,6 +16,14 @@ organizations/906207637890 $ gam config gcp_org_id organizations/906207637890 save ``` +Added the following options to `gam report `. +``` +networkinfofilter +statusfilter +applicationinfofilter +includesensitivedata +``` + 7.37.00 Added new client access scopes used by `gam print tokens`. diff --git a/src/gam/__init__.py b/src/gam/__init__.py index 8053ac87..21727b40 100755 --- a/src/gam/__init__.py +++ b/src/gam/__init__.py @@ -13873,6 +13873,14 @@ REPORT_ACTIVITIES_UPPERCASE_EVENTS = { 'takeout', } +REPORT_ACTIVITIES_FILTER_MAP = { + 'applicationinfofilter': 'applicationInfoFilter', + 'groupidfilter': 'groupIdFilter', + 'networkinfofilter': 'networkInfoFilter', + 'resourcedetailsfilter': 'resourceDetailsFilter', + 'statusfilter': 'statusFilter', + } + REPORT_ACTIVITIES_TIME_OBJECTS = {'time'} # gam report [todrive *] @@ -13884,6 +13892,8 @@ REPORT_ACTIVITIES_TIME_OBJECTS = {'time'} # [event|events ] [ip ] # [gmaileventtypes ] # [groupidfilter ] [resourcedetailsfilter ] +# [networkinfofilter ] [statusfilter ] +# [applicationinfofilter ] [includesensitivedata] # [notimesort] # [maxactivities ] [maxevents ] [maxresults ] # [countsonly [bydate|summary] [eventrowfilter]] @@ -14162,6 +14172,12 @@ def doReport(): else: events['accounts:used_quota_in_percentage'] = 0 + def _getActivitiesFilters(myarg): + if myarg in REPORT_ACTIVITIES_FILTER_MAP: + kwargs[REPORT_ACTIVITIES_FILTER_MAP[myarg]] = getString(Cmd.OB_STRING) + return True + return False + # dynamically extend our choices with other reports Google dynamically adds rep = buildGAPIObject(API.REPORTS) dyn_choices = rep._rootDesc \ @@ -14187,7 +14203,7 @@ def doReport(): if customerId == GC.MY_CUSTOMER: customerId = None csvPF = CSVPrintFile() - filters = actorIpAddress = groupIdFilter = orgUnit = orgUnitId = resourceDetailsFilter = None + filters = actorIpAddress = orgUnit = orgUnitId = None showOrgUnit = False parameters = set() parameterServices = set() @@ -14308,10 +14324,8 @@ def doReport(): countsSummary = True elif activityReports and myarg == 'eventrowfilter': eventRowFilter = True - elif activityReports and myarg == 'groupidfilter': - groupIdFilter = getString(Cmd.OB_STRING) - elif activityReports and myarg == 'resourcedetailsfilter': - resourceDetailsFilter = getString(Cmd.OB_STRING) + elif activityReports and _getActivitiesFilters(myarg): + pass elif activityReports and (report == 'gmail') and myarg == 'gmaileventtypes': gmailEventTypes = set(getNumberRangeList()) elif activityReports and myarg == 'userisactor': @@ -14638,8 +14652,7 @@ def doReport(): applicationName=report, userKey=user, customerId=customerId, actorIpAddress=actorIpAddress, orgUnitID=orgUnitId, startTime=startEndTime.startTime, endTime=startEndTime.endTime, - eventName=eventName, filters=pfilters, groupIdFilter=groupIdFilter, - resourceDetailsFilter=resourceDetailsFilter, maxResults=maxResults, **kwargs) + eventName=eventName, filters=pfilters, maxResults=maxResults, **kwargs) except GAPI.badRequest: if user != 'all': entityUnknownWarning(Ent.USER, user, i, count)