diff --git a/src/GamCommands.txt b/src/GamCommands.txt index e47893ee..3db965ed 100644 --- a/src/GamCommands.txt +++ b/src/GamCommands.txt @@ -1523,17 +1523,6 @@ gam print alias|aliases [todrive *] gam whatis [noinfo] [noinivitablecheck] -# Analytics UA - -gam print analyticuaproperties [todrive *] - accountid [accounts/] - [maxresults ] - [formatjson [quotechar ]] -gam show analyticuaproperties - accountid [accounts/] - [maxresults ] - [formatjson] - # Analytics Admin gam print analyticaccounts [todrive *] diff --git a/src/GamUpdate.txt b/src/GamUpdate.txt index 867616dd..021bc0aa 100644 --- a/src/GamUpdate.txt +++ b/src/GamUpdate.txt @@ -1,3 +1,10 @@ +7.06.12 + +Deleted commands to display Analytic UA properties; the API has been deprecated. +``` +gam print|show analyticuaproperties +``` + 7.06.11 Improved `gam checkconn`. diff --git a/src/gam/__init__.py b/src/gam/__init__.py index da45cf5f..3d5e0614 100755 --- a/src/gam/__init__.py +++ b/src/gam/__init__.py @@ -25,7 +25,7 @@ https://github.com/GAM-team/GAM/wiki """ __author__ = 'GAM Team ' -__version__ = '7.06.11' +__version__ = '7.06.12' __license__ = 'Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)' #pylint: disable=wrong-import-position @@ -9377,7 +9377,7 @@ def doCheckConnection(): flushStdout() if dns_err: writeStdout(dns_err) - return + return gen_firewall = 'You probably have security software or a firewall on your machine or network that is preventing GAM from making Internet connections. Check your network configuration or try running GAM on a hotspot or home network to see if the problem exists only on your organization\'s network.' try: if host.startswith('http'): @@ -9430,11 +9430,11 @@ def doCheckConnection(): disc_hosts = [] for api, config in API._INFO.items(): if config.get('v2discovery') and not config.get('localdiscovery'): - if mapped_api := config.get('mappedAPI'): - api = mapped_api - host = f'{api}.googleapis.com' - if host not in disc_hosts: - disc_hosts.append(host) + if mapped_api := config.get('mappedAPI'): + api = mapped_api + host = f'{api}.googleapis.com' + if host not in disc_hosts: + disc_hosts.append(host) for host in disc_hosts: check_host(host) checked_hosts = initial_hosts + api_hosts + disc_hosts @@ -9450,7 +9450,7 @@ def doCheckConnection(): parsed_base_url = urlparse(base_url) base_host = parsed_base_url.netloc if base_host not in checked_hosts: - print(f'checking {base_host} for {api}') + writeStdout(f'Checking {base_host} for {api}\n') check_host(base_host) checked_hosts.append(base_host) if success_count == try_count: @@ -15804,27 +15804,13 @@ ANALYTIC_ENTITY_MAP = { 'pageSize': 50, 'maxPageSize': 200, }, - Ent.ANALYTIC_UA_PROPERTY: - {'titles': ['User', 'accountId', 'name', 'id', 'created', 'updated'], - 'JSONtitles': ['User', 'accountId', 'name', 'id', 'JSON'], - 'timeObjects': ['created', 'updated'], - 'items': 'items', - 'pageSize': 50, - 'maxPageSize': 200, - }, } def printShowAnalyticItems(users, entityType): analyticEntityMap = ANALYTIC_ENTITY_MAP[entityType] csvPF = CSVPrintFile(analyticEntityMap['titles'], 'sortall') if Act.csvFormat() else None FJQC = FormatJSONQuoteChar(csvPF) - if entityType != Ent.ANALYTIC_UA_PROPERTY: - kwargs = {'pageSize': analyticEntityMap['pageSize']} - api = API.ANALYTICS_ADMIN - else: -# kwargs = {'webPropertyId': '~all'} - kwargs = {} - api = API.ANALYTICS + kwargs = {'pageSize': analyticEntityMap['pageSize']} if entityType in {Ent.ANALYTIC_ACCOUNT, Ent.ANALYTIC_PROPERTY}: kwargs['showDeleted'] = False while Cmd.ArgumentsRemaining(): @@ -15837,16 +15823,12 @@ def printShowAnalyticItems(users, entityType): kwargs['showDeleted'] = getBoolean() elif entityType == Ent.ANALYTIC_PROPERTY and myarg == 'filter': kwargs['filter'] = getString(Cmd.OB_STRING) - elif entityType == Ent.ANALYTIC_UA_PROPERTY and myarg == 'accountid': - kwargs['accountId'] = getString(Cmd.OB_STRING).replace('accounts/', '') elif entityType == Ent.ANALYTIC_DATASTREAM and myarg == 'parent': kwargs['parent'] = getString(Cmd.OB_STRING) else: FJQC.GetFormatJSONQuoteChar(myarg, True) if entityType == Ent.ANALYTIC_PROPERTY and 'filter' not in kwargs: missingArgumentExit('filter') - if entityType == Ent.ANALYTIC_UA_PROPERTY and 'accountId' not in kwargs: - missingArgumentExit('accountid') if entityType == Ent.ANALYTIC_DATASTREAM and 'parent' not in kwargs: missingArgumentExit('parent') if csvPF and FJQC.formatJSON: @@ -15854,7 +15836,7 @@ def printShowAnalyticItems(users, entityType): i, count, users = getEntityArgument(users) for user in users: i += 1 - user, analytics = buildGAPIServiceObject(api, user, i, count) + user, analytics = buildGAPIServiceObject(API.ANALYTICS_ADMIN, user, i, count) if not analytics: continue if entityType == Ent.ANALYTIC_ACCOUNT: @@ -15863,11 +15845,8 @@ def printShowAnalyticItems(users, entityType): service = analytics.accountSummaries() elif entityType == Ent.ANALYTIC_DATASTREAM: service = analytics.properties().dataStreams() - elif entityType == Ent.ANALYTIC_PROPERTY: + else: # entityType == Ent.ANALYTIC_PROPERTY: service = analytics.properties() - else: #Ent.ANALYTIC_UA_PROPERTY: - service = analytics.management().webproperties() -# service = analytics.management().profiles() if csvPF: printGettingAllEntityItemsForWhom(entityType, user, i, count) pageMessage = getPageMessageForWhom() @@ -15908,10 +15887,7 @@ def printShowAnalyticItems(users, entityType): if not FJQC.formatJSON: csvPF.WriteRowTitles(row) elif csvPF.CheckRowTitles(row): - if entityType != Ent.ANALYTIC_UA_PROPERTY: - row = {'User': user, 'name': item['name'], 'displayName': item['displayName']} - else: - row = {'User': user, 'accountId': item['accountId'], 'id': item['id'], 'name': item['name']} + row = {'User': user, 'name': item['name'], 'displayName': item['displayName']} for field in analyticEntityMap['JSONtitles'][2:-1]: row[field] = item[field] row['JSON'] = json.dumps(cleanJSON(item, timeObjects=analyticEntityMap['timeObjects']), @@ -15949,17 +15925,6 @@ def printShowAnalyticAccountSummaries(users): def printShowAnalyticProperties(users): printShowAnalyticItems(users, Ent.ANALYTIC_PROPERTY) -# gam print analyticuaproperties [todrive *] -# accountid [accounts/] -# [maxresults ] -# [formatjson [quotechar ]] -# gam show analyticuaproperties -# accountid [accounts/] -# [maxresults ] -# [formatjson] -def printShowAnalyticUAProperties(users): - printShowAnalyticItems(users, Ent.ANALYTIC_UA_PROPERTY) - # gam print analyticdatastreams [todrive *] # parent # [maxresults ] @@ -76716,7 +76681,6 @@ USER_COMMANDS_WITH_OBJECTS = { Cmd.ARG_ANALYTICACCOUNTSUMMARY: printShowAnalyticAccountSummaries, Cmd.ARG_ANALYTICDATASTREAM: printShowAnalyticDatastreams, Cmd.ARG_ANALYTICPROPERTY: printShowAnalyticProperties, - Cmd.ARG_ANALYTICUAPROPERTY: printShowAnalyticUAProperties, Cmd.ARG_ASP: printShowASPs, Cmd.ARG_BACKUPCODE: printShowBackupCodes, Cmd.ARG_CALENDAR: printShowCalendars, @@ -76823,7 +76787,6 @@ USER_COMMANDS_WITH_OBJECTS = { Cmd.ARG_ANALYTICACCOUNTSUMMARY: printShowAnalyticAccountSummaries, Cmd.ARG_ANALYTICDATASTREAM: printShowAnalyticDatastreams, Cmd.ARG_ANALYTICPROPERTY: printShowAnalyticProperties, - Cmd.ARG_ANALYTICUAPROPERTY: printShowAnalyticUAProperties, Cmd.ARG_ASP: printShowASPs, Cmd.ARG_BACKUPCODE: printShowBackupCodes, Cmd.ARG_CALENDAR: printShowCalendars, @@ -77036,7 +76999,6 @@ USER_COMMANDS_OBJ_ALIASES = { Cmd.ARG_ANALYTICACCOUNTSUMMARIES: Cmd.ARG_ANALYTICACCOUNTSUMMARY, Cmd.ARG_ANALYTICDATASTREAMS: Cmd.ARG_ANALYTICDATASTREAM, Cmd.ARG_ANALYTICPROPERTIES: Cmd.ARG_ANALYTICPROPERTY, - Cmd.ARG_ANALYTICUAPROPERTIES: Cmd.ARG_ANALYTICUAPROPERTY, Cmd.ARG_ASPS: Cmd.ARG_ASP, Cmd.ARG_BACKUPCODES: Cmd.ARG_BACKUPCODE, Cmd.ARG_CALENDARS: Cmd.ARG_CALENDAR, diff --git a/src/gam/gamlib/glapi.py b/src/gam/gamlib/glapi.py index def1eb6d..c41319a1 100644 --- a/src/gam/gamlib/glapi.py +++ b/src/gam/gamlib/glapi.py @@ -22,7 +22,6 @@ # APIs ACCESSCONTEXTMANAGER = 'accesscontextmanager' ALERTCENTER = 'alertcenter' -ANALYTICS = 'analytics' ANALYTICS_ADMIN = 'analyticsadmin' CALENDAR = 'calendar' CBCM = 'cbcm' @@ -162,7 +161,6 @@ PROJECT_APIS = [ 'accesscontextmanager.googleapis.com', 'admin.googleapis.com', 'alertcenter.googleapis.com', - 'analytics.googleapis.com', 'analyticsadmin.googleapis.com', # 'audit.googleapis.com', 'calendar-json.googleapis.com', @@ -201,7 +199,6 @@ PROJECT_APIS = [ _INFO = { ACCESSCONTEXTMANAGER: {'name': 'Access Context Manager API', 'version': 'v1', 'v2discovery': True}, ALERTCENTER: {'name': 'AlertCenter API', 'version': 'v1beta1', 'v2discovery': True}, - ANALYTICS: {'name': 'Analytics API', 'version': 'v3', 'v2discovery': False}, ANALYTICS_ADMIN: {'name': 'Analytics Admin API', 'version': 'v1beta', 'v2discovery': True}, CALENDAR: {'name': 'Calendar API', 'version': 'v3', 'v2discovery': True, 'mappedAPI': 'calendar-json'}, CBCM: {'name': 'Chrome Browser Cloud Management API', 'version': 'v1.1beta1', 'v2discovery': True, 'localjson': True}, @@ -532,10 +529,6 @@ _SVCACCT_SCOPES = [ 'api': ALERTCENTER, 'subscopes': [], 'scope': 'https://www.googleapis.com/auth/apps.alerts'}, - {'name': 'Analytics API - read only', - 'api': ANALYTICS, - 'subscopes': [], - 'scope': 'https://www.googleapis.com/auth/analytics.readonly'}, {'name': 'Analytics Admin API - read only', 'api': ANALYTICS_ADMIN, 'subscopes': [], diff --git a/src/gam/gamlib/glclargs.py b/src/gam/gamlib/glclargs.py index 9c3e1554..c117c559 100644 --- a/src/gam/gamlib/glclargs.py +++ b/src/gam/gamlib/glclargs.py @@ -423,8 +423,6 @@ class GamCLArgs(): ARG_ANALYTICDATASTREAMS = 'analyticdatastreams' ARG_ANALYTICPROPERTY = 'analyticproperty' ARG_ANALYTICPROPERTIES = 'analyticproperties' - ARG_ANALYTICUAPROPERTY = 'analyticuaproperty' - ARG_ANALYTICUAPROPERTIES = 'analyticuaproperties' ARG_API = 'api' ARG_APIS = 'apis' ARG_APIPROJECT = 'apiproject' diff --git a/src/gam/gamlib/glentity.py b/src/gam/gamlib/glentity.py index 97f8628f..c65c3d58 100644 --- a/src/gam/gamlib/glentity.py +++ b/src/gam/gamlib/glentity.py @@ -61,7 +61,6 @@ class GamEntity(): ANALYTIC_ACCOUNT_SUMMARY = 'anas' ANALYTIC_DATASTREAM = 'anad' ANALYTIC_PROPERTY = 'anap' - ANALYTIC_UA_PROPERTY = 'anau' API = 'api ' APP_ACCESS_SETTINGS = 'apps' APP_ID = 'appi' @@ -412,7 +411,6 @@ class GamEntity(): ANALYTIC_ACCOUNT_SUMMARY: ['Analytic Account Summaries', 'Analytic Account Summary'], ANALYTIC_DATASTREAM: ['Analytic Datastreams', 'Analytic Datastream'], ANALYTIC_PROPERTY: ['Analytic GA4 Properties', 'Analytic GA4 Property'], - ANALYTIC_UA_PROPERTY: ['Analytic UA Properties', 'Analytic UA Property'], API: ['APIs', 'API'], APP_ACCESS_SETTINGS: ['Application Access Settings', 'Application Access Settings'], APP_ID: ['Application IDs', 'Application ID'], diff --git a/wiki/GamUpdates.md b/wiki/GamUpdates.md index dec99a2e..d4b14488 100644 --- a/wiki/GamUpdates.md +++ b/wiki/GamUpdates.md @@ -10,6 +10,13 @@ Add the `-s` option to the end of the above commands to suppress creating the `g See [Downloads-Installs-GAM7](https://github.com/GAM-team/GAM/wiki/Downloads-Installs) for Windows or other options, including manual installation +### 7.06.12 + +Deleted commands to display Analytic UA properties; the API has been deprecated. +``` +gam print|show analyticuaproperties +``` + ### 7.06.11 Improved `gam checkconn`. diff --git a/wiki/How-to-Upgrade-Legacy-GAM-to-GAM7.md b/wiki/How-to-Upgrade-Legacy-GAM-to-GAM7.md index 38fc989a..9039dbd4 100644 --- a/wiki/How-to-Upgrade-Legacy-GAM-to-GAM7.md +++ b/wiki/How-to-Upgrade-Legacy-GAM-to-GAM7.md @@ -251,7 +251,7 @@ writes the credentials into the file oauth2.txt. admin@server:/Users/admin$ rm -f /Users/admin/GAMConfig/oauth2.txt admin@server:/Users/admin$ gam version WARNING: Config File: /Users/admin/GAMConfig/gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: /Users/admin/GAMConfig/oauth2.txt, Not Found -GAM 7.06.11 - https://github.com/GAM-team/GAM - pyinstaller +GAM 7.06.12 - https://github.com/GAM-team/GAM - pyinstaller GAM Team Python 3.13.3 64-bit final MacOS Sequoia 15.4.1 x86_64 @@ -989,7 +989,7 @@ writes the credentials into the file oauth2.txt. C:\>del C:\GAMConfig\oauth2.txt C:\>gam version WARNING: Config File: C:\GAMConfig\gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: C:\GAMConfig\oauth2.txt, Not Found -GAM 7.06.11 - https://github.com/GAM-team/GAM - pythonsource +GAM 7.06.12 - https://github.com/GAM-team/GAM - pythonsource GAM Team Python 3.13.3 64-bit final Windows-10-10.0.17134 AMD64 diff --git a/wiki/Users-Analytics-Admin.md b/wiki/Users-Analytics-Admin.md index 4d9e0117..fda88b72 100644 --- a/wiki/Users-Analytics-Admin.md +++ b/wiki/Users-Analytics-Admin.md @@ -6,14 +6,13 @@ - [Display Analytic Account Summaries](#display-analytic-account-summaries) - [Display Analytic Properties](#display-analytic-properties) - [Display Analytic Datastreams](#display-analytic-datastreams) -- [Display Analytic UA Properties](#display-analytic-ua-properties) - [Examples](#examples) ## API documentation * [Analytics Admin API](https://developers.google.com/analytics/devguides/config/admin/v1/rest) ## Notes -To use these commands you must add 'Analytics API' and 'Analytics Admin API' to your project and update your service account authorization. +To use these commands you must add 'Analytics Admin API' to your project and update your service account authorization. ``` gam update project gam user user@domain.com update serviceaccount @@ -142,37 +141,6 @@ When using the `formatjson` option, double quotes are used extensively in the da The `quotechar ` option allows you to choose an alternate quote character, single quote for instance, that makes for readable/processable output. `quotechar` defaults to `gam.cfg/csv_output_quote_char`. When uploading CSV files to Google, double quote `"` should be used. -## Display Analytic UA Properties -``` -gam show analyticuaproperties - accountid [accounts/] - [maxresults ] - [formatjson] -``` -The required `accountid ` can be in the format: 'accounts/123' or '123'. - -By default, GAM asks the API for 50 properties per page of results, -* `maxresults` - Maximum number of results per page; range is 1-200; the default is 50. - -By default, Gam displays the information as an indented list of keys and values. -* `formatjson` - Display the fields in JSON format. -``` -gam print analyticuaproperties [todrive *] - accountid [accounts/] - [maxresults ] - [formatjson [quotechar ]] -``` -The required `accountid ` can be in the format: 'accounts/123' or '123'. - -By default, GAM asks the API for 50 properties per page of results, -* `maxresults` - Maximum number of results per page; range is 1-200; the default is 50. - -By default, when writing CSV files, Gam uses a quote character of double quote `"`. The quote character is used to enclose columns that contain -the quote character itself, the column delimiter (comma by default) and new-line characters. Any quote characters within the column are doubled. -When using the `formatjson` option, double quotes are used extensively in the data resulting in hard to read/process output. -The `quotechar ` option allows you to choose an alternate quote character, single quote for instance, that makes for readable/processable output. -`quotechar` defaults to `gam.cfg/csv_output_quote_char`. When uploading CSV files to Google, double quote `"` should be used. - ## Examples Get all analytic accounts @@ -189,8 +157,3 @@ Get all analytic account properties (GA4) ``` gam redirect stdout - multiprocess redirect stderr stdout redirect csv ./GA4AnalyticAccountProperties.csv multiprocess csv AnalyticAccounts.csv gam user "~User" print analyticproperties filter "parent:~~name~~" ``` - -Get all analytic account properties (UA) -``` -gam redirect stdout - multiprocess redirect stderr stdout redirect csv ./UAAnalyticAccountProperties.csv multiprocess csv AnalyticAccounts.csv gam user "~User" print analyticuaproperties accountid "~~name~~" -``` diff --git a/wiki/Version-and-Help.md b/wiki/Version-and-Help.md index 09995241..13c8c2b4 100644 --- a/wiki/Version-and-Help.md +++ b/wiki/Version-and-Help.md @@ -4,7 +4,7 @@ k Print the current version of Gam with details ``` gam version -GAM 7.06.11 - https://github.com/GAM-team/GAM - pyinstaller +GAM 7.06.12 - https://github.com/GAM-team/GAM - pyinstaller GAM Team Python 3.13.3 64-bit final MacOS Sequoia 15.4.1 x86_64 @@ -16,7 +16,7 @@ Time: 2023-06-02T21:10:00-07:00 Print the current version of Gam with details and time offset information ``` gam version timeoffset -GAM 7.06.11 - https://github.com/GAM-team/GAM - pyinstaller +GAM 7.06.12 - https://github.com/GAM-team/GAM - pyinstaller GAM Team Python 3.13.3 64-bit final MacOS Sequoia 15.4.1 x86_64 @@ -28,7 +28,7 @@ Your system time differs from www.googleapis.com by less than 1 second Print the current version of Gam with extended details and SSL information ``` gam version extended -GAM 7.06.11 - https://github.com/GAM-team/GAM - pyinstaller +GAM 7.06.12 - https://github.com/GAM-team/GAM - pyinstaller GAM Team Python 3.13.3 64-bit final MacOS Sequoia 15.4.1 x86_64 @@ -65,7 +65,7 @@ MacOS High Sierra 10.13.6 x86_64 Path: /Users/Admin/bin/gam7 Version Check: Current: 5.35.08 - Latest: 7.06.11 + Latest: 7.06.12 echo $? 1 ``` @@ -73,7 +73,7 @@ echo $? Print the current version number without details ``` gam version simple -7.06.11 +7.06.12 ``` In Linux/MacOS you can do: ``` @@ -83,7 +83,7 @@ echo $VER Print the current version of Gam and address of this Wiki ``` gam help -GAM 7.06.11 - https://github.com/GAM-team/GAM +GAM 7.06.12 - https://github.com/GAM-team/GAM GAM Team Python 3.13.3 64-bit final MacOS Sequoia 15.4.1 x86_64