gam7 7.13.3__tar.gz → 7.14.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of gam7 might be problematic. Click here for more details.

Files changed (321) hide show
  1. {gam7-7.13.3 → gam7-7.14.0}/PKG-INFO +1 -1
  2. {gam7-7.13.3 → gam7-7.14.0}/src/GamCommands.txt +77 -1
  3. {gam7-7.13.3 → gam7-7.14.0}/src/GamUpdate.txt +6 -0
  4. {gam7-7.13.3 → gam7-7.14.0}/src/gam/__init__.py +161 -2
  5. {gam7-7.13.3 → gam7-7.14.0}/src/gam/gamlib/glapi.py +15 -0
  6. {gam7-7.13.3 → gam7-7.14.0}/src/gam/gamlib/glclargs.py +11 -0
  7. {gam7-7.13.3 → gam7-7.14.0}/src/gam/gamlib/glentity.py +11 -1
  8. {gam7-7.13.3 → gam7-7.14.0}/src/gam/gamlib/glgapi.py +1 -0
  9. {gam7-7.13.3 → gam7-7.14.0}/src/setup.cfg +1 -1
  10. {gam7-7.13.3 → gam7-7.14.0}/wiki/Basic-Items.md +8 -0
  11. {gam7-7.13.3 → gam7-7.14.0}/wiki/Chrome-Profile-Management.md +30 -9
  12. {gam7-7.13.3 → gam7-7.14.0}/wiki/Collections-of-Items.md +11 -1
  13. {gam7-7.13.3 → gam7-7.14.0}/wiki/Domain-SharedContacts.md +0 -9
  14. {gam7-7.13.3 → gam7-7.14.0}/wiki/GamUpdates.md +15 -0
  15. gam7-7.14.0/wiki/Global-Address-List.md +17 -0
  16. {gam7-7.13.3 → gam7-7.14.0}/wiki/How-to-Upgrade-Legacy-GAM-to-GAM7.md +2 -2
  17. {gam7-7.13.3 → gam7-7.14.0}/wiki/List-Items.md +4 -0
  18. gam7-7.14.0/wiki/Users-Tag-Manager.md +132 -0
  19. {gam7-7.13.3 → gam7-7.14.0}/wiki/Version-and-Help.md +6 -6
  20. {gam7-7.13.3 → gam7-7.14.0}/wiki/_Sidebar.md +2 -0
  21. {gam7-7.13.3 → gam7-7.14.0}/wiki/gam.cfg.md +2 -1
  22. {gam7-7.13.3 → gam7-7.14.0}/.github/ISSUE_TEMPLATE/aa-question.md +0 -0
  23. {gam7-7.13.3 → gam7-7.14.0}/.github/ISSUE_TEMPLATE/za-bug-report.md +0 -0
  24. {gam7-7.13.3 → gam7-7.14.0}/.github/ISSUE_TEMPLATE/zz-feature-request.md +0 -0
  25. {gam7-7.13.3 → gam7-7.14.0}/.github/ISSUE_TEMPLATE.txt +0 -0
  26. {gam7-7.13.3 → gam7-7.14.0}/.github/actions/decrypt.sh +0 -0
  27. {gam7-7.13.3 → gam7-7.14.0}/.github/actions/entitlements.plist +0 -0
  28. {gam7-7.13.3 → gam7-7.14.0}/.github/actions/package_exclusions.txt +0 -0
  29. {gam7-7.13.3 → gam7-7.14.0}/.github/stale.yml +0 -0
  30. {gam7-7.13.3 → gam7-7.14.0}/.github/workflows/build.yml +0 -0
  31. {gam7-7.13.3 → gam7-7.14.0}/.github/workflows/codeql-analysis.yml +0 -0
  32. {gam7-7.13.3 → gam7-7.14.0}/.github/workflows/get-cacerts.yml +0 -0
  33. {gam7-7.13.3 → gam7-7.14.0}/.github/workflows/pushwiki.yml +0 -0
  34. {gam7-7.13.3 → gam7-7.14.0}/.github/workflows/pypi.yml +0 -0
  35. {gam7-7.13.3 → gam7-7.14.0}/.pre-commit-config.yaml +0 -0
  36. {gam7-7.13.3 → gam7-7.14.0}/LICENSE +0 -0
  37. {gam7-7.13.3 → gam7-7.14.0}/README.md +0 -0
  38. {gam7-7.13.3 → gam7-7.14.0}/pyproject.toml +0 -0
  39. {gam7-7.13.3 → gam7-7.14.0}/src/.gitignore +0 -0
  40. {gam7-7.13.3 → gam7-7.14.0}/src/LICENSE +0 -0
  41. {gam7-7.13.3 → gam7-7.14.0}/src/README.md +0 -0
  42. {gam7-7.13.3 → gam7-7.14.0}/src/cacerts.pem +0 -0
  43. {gam7-7.13.3 → gam7-7.14.0}/src/callgam.py +0 -0
  44. {gam7-7.13.3 → gam7-7.14.0}/src/gam/__main__.py +0 -0
  45. {gam7-7.13.3 → gam7-7.14.0}/src/gam/atom/__init__.py +0 -0
  46. {gam7-7.13.3 → gam7-7.14.0}/src/gam/atom/auth.py +0 -0
  47. {gam7-7.13.3 → gam7-7.14.0}/src/gam/atom/client.py +0 -0
  48. {gam7-7.13.3 → gam7-7.14.0}/src/gam/atom/core.py +0 -0
  49. {gam7-7.13.3 → gam7-7.14.0}/src/gam/atom/data.py +0 -0
  50. {gam7-7.13.3 → gam7-7.14.0}/src/gam/atom/http.py +0 -0
  51. {gam7-7.13.3 → gam7-7.14.0}/src/gam/atom/http_core.py +0 -0
  52. {gam7-7.13.3 → gam7-7.14.0}/src/gam/atom/http_interface.py +0 -0
  53. {gam7-7.13.3 → gam7-7.14.0}/src/gam/atom/mock_http.py +0 -0
  54. {gam7-7.13.3 → gam7-7.14.0}/src/gam/atom/mock_http_core.py +0 -0
  55. {gam7-7.13.3 → gam7-7.14.0}/src/gam/atom/mock_service.py +0 -0
  56. {gam7-7.13.3 → gam7-7.14.0}/src/gam/atom/service.py +0 -0
  57. {gam7-7.13.3 → gam7-7.14.0}/src/gam/atom/token_store.py +0 -0
  58. {gam7-7.13.3 → gam7-7.14.0}/src/gam/atom/url.py +0 -0
  59. {gam7-7.13.3 → gam7-7.14.0}/src/gam/cacerts.pem +0 -0
  60. {gam7-7.13.3 → gam7-7.14.0}/src/gam/cbcm-v1.1beta1.json +0 -0
  61. {gam7-7.13.3 → gam7-7.14.0}/src/gam/contactdelegation-v1.json +0 -0
  62. {gam7-7.13.3 → gam7-7.14.0}/src/gam/datastudio-v1.json +0 -0
  63. {gam7-7.13.3 → gam7-7.14.0}/src/gam/gamlib/__init__.py +0 -0
  64. {gam7-7.13.3 → gam7-7.14.0}/src/gam/gamlib/glaction.py +0 -0
  65. {gam7-7.13.3 → gam7-7.14.0}/src/gam/gamlib/glcfg.py +0 -0
  66. {gam7-7.13.3 → gam7-7.14.0}/src/gam/gamlib/glgdata.py +0 -0
  67. {gam7-7.13.3 → gam7-7.14.0}/src/gam/gamlib/glglobals.py +0 -0
  68. {gam7-7.13.3 → gam7-7.14.0}/src/gam/gamlib/glindent.py +0 -0
  69. {gam7-7.13.3 → gam7-7.14.0}/src/gam/gamlib/glmsgs.py +0 -0
  70. {gam7-7.13.3 → gam7-7.14.0}/src/gam/gamlib/glskus.py +0 -0
  71. {gam7-7.13.3 → gam7-7.14.0}/src/gam/gamlib/gluprop.py +0 -0
  72. {gam7-7.13.3 → gam7-7.14.0}/src/gam/gamlib/glverlibs.py +0 -0
  73. {gam7-7.13.3 → gam7-7.14.0}/src/gam/gamlib/yubikey.py +0 -0
  74. {gam7-7.13.3 → gam7-7.14.0}/src/gam/gdata/__init__.py +0 -0
  75. {gam7-7.13.3 → gam7-7.14.0}/src/gam/gdata/alt/__init__.py +0 -0
  76. {gam7-7.13.3 → gam7-7.14.0}/src/gam/gdata/alt/app_engine.py +0 -0
  77. {gam7-7.13.3 → gam7-7.14.0}/src/gam/gdata/alt/appengine.py +0 -0
  78. {gam7-7.13.3 → gam7-7.14.0}/src/gam/gdata/apps/__init__.py +0 -0
  79. {gam7-7.13.3 → gam7-7.14.0}/src/gam/gdata/apps/audit/__init__.py +0 -0
  80. {gam7-7.13.3 → gam7-7.14.0}/src/gam/gdata/apps/audit/service.py +0 -0
  81. {gam7-7.13.3 → gam7-7.14.0}/src/gam/gdata/apps/contacts/__init__.py +0 -0
  82. {gam7-7.13.3 → gam7-7.14.0}/src/gam/gdata/apps/contacts/service.py +0 -0
  83. {gam7-7.13.3 → gam7-7.14.0}/src/gam/gdata/apps/service.py +0 -0
  84. {gam7-7.13.3 → gam7-7.14.0}/src/gam/gdata/service.py +0 -0
  85. {gam7-7.13.3 → gam7-7.14.0}/src/gam/gdata/urlfetch.py +0 -0
  86. {gam7-7.13.3 → gam7-7.14.0}/src/gam/googleapiclient/__init__.py +0 -0
  87. {gam7-7.13.3 → gam7-7.14.0}/src/gam/googleapiclient/_auth.py +0 -0
  88. {gam7-7.13.3 → gam7-7.14.0}/src/gam/googleapiclient/_helpers.py +0 -0
  89. {gam7-7.13.3 → gam7-7.14.0}/src/gam/googleapiclient/channel.py +0 -0
  90. {gam7-7.13.3 → gam7-7.14.0}/src/gam/googleapiclient/discovery.py +0 -0
  91. {gam7-7.13.3 → gam7-7.14.0}/src/gam/googleapiclient/discovery_cache/__init__.py +0 -0
  92. {gam7-7.13.3 → gam7-7.14.0}/src/gam/googleapiclient/discovery_cache/appengine_memcache.py +0 -0
  93. {gam7-7.13.3 → gam7-7.14.0}/src/gam/googleapiclient/discovery_cache/base.py +0 -0
  94. {gam7-7.13.3 → gam7-7.14.0}/src/gam/googleapiclient/discovery_cache/file_cache.py +0 -0
  95. {gam7-7.13.3 → gam7-7.14.0}/src/gam/googleapiclient/errors.py +0 -0
  96. {gam7-7.13.3 → gam7-7.14.0}/src/gam/googleapiclient/http.py +0 -0
  97. {gam7-7.13.3 → gam7-7.14.0}/src/gam/googleapiclient/mimeparse.py +0 -0
  98. {gam7-7.13.3 → gam7-7.14.0}/src/gam/googleapiclient/model.py +0 -0
  99. {gam7-7.13.3 → gam7-7.14.0}/src/gam/googleapiclient/schema.py +0 -0
  100. {gam7-7.13.3 → gam7-7.14.0}/src/gam/googleapiclient/version.py +0 -0
  101. {gam7-7.13.3 → gam7-7.14.0}/src/gam/iso8601/__init__.py +0 -0
  102. {gam7-7.13.3 → gam7-7.14.0}/src/gam/iso8601/iso8601.py +0 -0
  103. {gam7-7.13.3 → gam7-7.14.0}/src/gam/meet-v2beta.json +0 -0
  104. {gam7-7.13.3 → gam7-7.14.0}/src/gam/serviceaccountlookup-v1.json +0 -0
  105. {gam7-7.13.3 → gam7-7.14.0}/src/gam/six.py +0 -0
  106. {gam7-7.13.3 → gam7-7.14.0}/src/gam-install.sh +0 -0
  107. {gam7-7.13.3 → gam7-7.14.0}/src/gam-setup.bat +0 -0
  108. {gam7-7.13.3 → gam7-7.14.0}/src/gam.exe.manifest +0 -0
  109. {gam7-7.13.3 → gam7-7.14.0}/src/gam.py +0 -0
  110. {gam7-7.13.3 → gam7-7.14.0}/src/gam.spec +0 -0
  111. {gam7-7.13.3 → gam7-7.14.0}/src/gam.wxs +0 -0
  112. {gam7-7.13.3 → gam7-7.14.0}/src/license.rtf +0 -0
  113. {gam7-7.13.3 → gam7-7.14.0}/src/requirements-dev.txt +0 -0
  114. {gam7-7.13.3 → gam7-7.14.0}/src/requirements.txt +0 -0
  115. {gam7-7.13.3 → gam7-7.14.0}/src/setup.py +0 -0
  116. {gam7-7.13.3 → gam7-7.14.0}/src/tools/a_atleast_b.py +0 -0
  117. {gam7-7.13.3 → gam7-7.14.0}/src/tools/gen-wix-xml-filelist.py +0 -0
  118. {gam7-7.13.3 → gam7-7.14.0}/src/tools/mkGamRef.py +0 -0
  119. {gam7-7.13.3 → gam7-7.14.0}/src/tools/openssl.props +0 -0
  120. {gam7-7.13.3 → gam7-7.14.0}/src/version_info.txt.in +0 -0
  121. {gam7-7.13.3 → gam7-7.14.0}/wiki/00scratch.md +0 -0
  122. {gam7-7.13.3 → gam7-7.14.0}/wiki/Addresses.md +0 -0
  123. {gam7-7.13.3 → gam7-7.14.0}/wiki/Administrators.md +0 -0
  124. {gam7-7.13.3 → gam7-7.14.0}/wiki/Alert-Center.md +0 -0
  125. {gam7-7.13.3 → gam7-7.14.0}/wiki/Aliases.md +0 -0
  126. {gam7-7.13.3 → gam7-7.14.0}/wiki/Authorization.md +0 -0
  127. {gam7-7.13.3 → gam7-7.14.0}/wiki/BNF-Syntax.md +0 -0
  128. {gam7-7.13.3 → gam7-7.14.0}/wiki/Bulk-Processing.md +0 -0
  129. {gam7-7.13.3 → gam7-7.14.0}/wiki/CSV-Input-Filtering.md +0 -0
  130. {gam7-7.13.3 → gam7-7.14.0}/wiki/CSV-Output-Filtering.md +0 -0
  131. {gam7-7.13.3 → gam7-7.14.0}/wiki/CSV-Special-Characters.md +0 -0
  132. {gam7-7.13.3 → gam7-7.14.0}/wiki/Calendars-Access.md +0 -0
  133. {gam7-7.13.3 → gam7-7.14.0}/wiki/Calendars-Events.md +0 -0
  134. {gam7-7.13.3 → gam7-7.14.0}/wiki/Calendars.md +0 -0
  135. {gam7-7.13.3 → gam7-7.14.0}/wiki/Chat-Bot.md +0 -0
  136. {gam7-7.13.3 → gam7-7.14.0}/wiki/Chrome-AUE-Counts.md +0 -0
  137. {gam7-7.13.3 → gam7-7.14.0}/wiki/Chrome-Browser-Cloud-Management.md +0 -0
  138. {gam7-7.13.3 → gam7-7.14.0}/wiki/Chrome-Installed-Apps.md +0 -0
  139. {gam7-7.13.3 → gam7-7.14.0}/wiki/Chrome-Needs-Attention-Counts.md +0 -0
  140. {gam7-7.13.3 → gam7-7.14.0}/wiki/Chrome-Policies.md +0 -0
  141. {gam7-7.13.3 → gam7-7.14.0}/wiki/Chrome-Printers.md +0 -0
  142. {gam7-7.13.3 → gam7-7.14.0}/wiki/Chrome-Version-Counts.md +0 -0
  143. {gam7-7.13.3 → gam7-7.14.0}/wiki/Chrome-Version-History.md +0 -0
  144. {gam7-7.13.3 → gam7-7.14.0}/wiki/ChromeOS-Devices.md +0 -0
  145. {gam7-7.13.3 → gam7-7.14.0}/wiki/Classroom-Courses.md +0 -0
  146. {gam7-7.13.3 → gam7-7.14.0}/wiki/Classroom-Guardians.md +0 -0
  147. {gam7-7.13.3 → gam7-7.14.0}/wiki/Classroom-Invitations.md +0 -0
  148. {gam7-7.13.3 → gam7-7.14.0}/wiki/Classroom-Membership.md +0 -0
  149. {gam7-7.13.3 → gam7-7.14.0}/wiki/Cloud-Channel.md +0 -0
  150. {gam7-7.13.3 → gam7-7.14.0}/wiki/Cloud-Identity-Devices.md +0 -0
  151. {gam7-7.13.3 → gam7-7.14.0}/wiki/Cloud-Identity-Groups-Membership.md +0 -0
  152. {gam7-7.13.3 → gam7-7.14.0}/wiki/Cloud-Identity-Groups.md +0 -0
  153. {gam7-7.13.3 → gam7-7.14.0}/wiki/Cloud-Identity-Policies.md +0 -0
  154. {gam7-7.13.3 → gam7-7.14.0}/wiki/Cloud-Storage.md +0 -0
  155. {gam7-7.13.3 → gam7-7.14.0}/wiki/Collections-of-ChromeOS-Devices.md +0 -0
  156. {gam7-7.13.3 → gam7-7.14.0}/wiki/Collections-of-Users.md +0 -0
  157. {gam7-7.13.3 → gam7-7.14.0}/wiki/Command-Data-From-Google-Docs-Sheets-Storage.md +0 -0
  158. {gam7-7.13.3 → gam7-7.14.0}/wiki/Command-Line-Parsing.md +0 -0
  159. {gam7-7.13.3 → gam7-7.14.0}/wiki/Command-Logging-Progress.md +0 -0
  160. {gam7-7.13.3 → gam7-7.14.0}/wiki/Context-Aware-Access-Levels.md +0 -0
  161. {gam7-7.13.3 → gam7-7.14.0}/wiki/Customer.md +0 -0
  162. {gam7-7.13.3 → gam7-7.14.0}/wiki/Domain-People-Contacts-Profiles.md +0 -0
  163. {gam7-7.13.3 → gam7-7.14.0}/wiki/Domains-Verification.md +0 -0
  164. {gam7-7.13.3 → gam7-7.14.0}/wiki/Domains.md +0 -0
  165. {gam7-7.13.3 → gam7-7.14.0}/wiki/Downloads-Installs.md +0 -0
  166. {gam7-7.13.3 → gam7-7.14.0}/wiki/Drive-File-Selection.md +0 -0
  167. {gam7-7.13.3 → gam7-7.14.0}/wiki/Drive-Items.md +0 -0
  168. {gam7-7.13.3 → gam7-7.14.0}/wiki/Drive-REST-API-v3.md +0 -0
  169. {gam7-7.13.3 → gam7-7.14.0}/wiki/Email-Audit-Monitor.md +0 -0
  170. {gam7-7.13.3 → gam7-7.14.0}/wiki/Find-File-Owner.md +0 -0
  171. {gam7-7.13.3 → gam7-7.14.0}/wiki/GAM-Public-Chat-Room.md +0 -0
  172. {gam7-7.13.3 → gam7-7.14.0}/wiki/GAM-Return-Codes.md +0 -0
  173. {gam7-7.13.3 → gam7-7.14.0}/wiki/GAM-with-minimal-GCP-rights.md +0 -0
  174. {gam7-7.13.3 → gam7-7.14.0}/wiki/GAM7-on-Android-Devices.md +0 -0
  175. {gam7-7.13.3 → gam7-7.14.0}/wiki/GAM7-on-Chrome-OS-Devices.md +0 -0
  176. {gam7-7.13.3 → gam7-7.14.0}/wiki/Google-Data-Transfers.md +0 -0
  177. {gam7-7.13.3 → gam7-7.14.0}/wiki/Google-Network-Addresses.md +0 -0
  178. {gam7-7.13.3 → gam7-7.14.0}/wiki/Groups-Membership.md +0 -0
  179. {gam7-7.13.3 → gam7-7.14.0}/wiki/Groups.md +0 -0
  180. {gam7-7.13.3 → gam7-7.14.0}/wiki/HTTPS-Proxy.md +0 -0
  181. {gam7-7.13.3 → gam7-7.14.0}/wiki/Home.md +0 -0
  182. {gam7-7.13.3 → gam7-7.14.0}/wiki/How-to-Install-GAM7.md +0 -0
  183. {gam7-7.13.3 → gam7-7.14.0}/wiki/How-to-Uninstall-GAM7.md +0 -0
  184. {gam7-7.13.3 → gam7-7.14.0}/wiki/How-to-Update-GAM7.md +0 -0
  185. {gam7-7.13.3 → gam7-7.14.0}/wiki/How-to-Upgrade-GAMADV-XTD3-to-GAM7.md +0 -0
  186. {gam7-7.13.3 → gam7-7.14.0}/wiki/Inbound-SSO.md +0 -0
  187. {gam7-7.13.3 → gam7-7.14.0}/wiki/Install-GAM-as-Python-Library.md +0 -0
  188. {gam7-7.13.3 → gam7-7.14.0}/wiki/Licenses.md +0 -0
  189. {gam7-7.13.3 → gam7-7.14.0}/wiki/List.md +0 -0
  190. {gam7-7.13.3 → gam7-7.14.0}/wiki/Meta-Commands-and-File-Redirection.md +0 -0
  191. {gam7-7.13.3 → gam7-7.14.0}/wiki/Mobile-Devices.md +0 -0
  192. {gam7-7.13.3 → gam7-7.14.0}/wiki/Organizational-Units.md +0 -0
  193. {gam7-7.13.3 → gam7-7.14.0}/wiki/Other-Resources.md +0 -0
  194. {gam7-7.13.3 → gam7-7.14.0}/wiki/Permission-Matches.md +0 -0
  195. {gam7-7.13.3 → gam7-7.14.0}/wiki/Python-Regular-Expressions.md +0 -0
  196. {gam7-7.13.3 → gam7-7.14.0}/wiki/README.md +0 -0
  197. {gam7-7.13.3 → gam7-7.14.0}/wiki/Rclone.md +0 -0
  198. {gam7-7.13.3 → gam7-7.14.0}/wiki/Reports.md +0 -0
  199. {gam7-7.13.3 → gam7-7.14.0}/wiki/Reseller.md +0 -0
  200. {gam7-7.13.3 → gam7-7.14.0}/wiki/Resources.md +0 -0
  201. {gam7-7.13.3 → gam7-7.14.0}/wiki/Running-GAM7-securely-on-a-Google-Compute-Engine.md +0 -0
  202. {gam7-7.13.3 → gam7-7.14.0}/wiki/SSL-Root-CA-Certificates.md +0 -0
  203. {gam7-7.13.3 → gam7-7.14.0}/wiki/Schemas.md +0 -0
  204. {gam7-7.13.3 → gam7-7.14.0}/wiki/Scripts.md +0 -0
  205. {gam7-7.13.3 → gam7-7.14.0}/wiki/Send-Email.md +0 -0
  206. {gam7-7.13.3 → gam7-7.14.0}/wiki/Shared-Drives.md +0 -0
  207. {gam7-7.13.3 → gam7-7.14.0}/wiki/Sites.md +0 -0
  208. {gam7-7.13.3 → gam7-7.14.0}/wiki/Tag-Replace.md +0 -0
  209. {gam7-7.13.3 → gam7-7.14.0}/wiki/Todrive.md +0 -0
  210. {gam7-7.13.3 → gam7-7.14.0}/wiki/Unmanaged-Accounts.md +0 -0
  211. {gam7-7.13.3 → gam7-7.14.0}/wiki/Upgrade-Benefits.md +0 -0
  212. {gam7-7.13.3 → gam7-7.14.0}/wiki/Users-Analytics-Admin.md +0 -0
  213. {gam7-7.13.3 → gam7-7.14.0}/wiki/Users-Application-Specific-Passwords.md +0 -0
  214. {gam7-7.13.3 → gam7-7.14.0}/wiki/Users-Backup-Verification-Codes.md +0 -0
  215. {gam7-7.13.3 → gam7-7.14.0}/wiki/Users-Calendars-Access.md +0 -0
  216. {gam7-7.13.3 → gam7-7.14.0}/wiki/Users-Calendars-Events.md +0 -0
  217. {gam7-7.13.3 → gam7-7.14.0}/wiki/Users-Calendars.md +0 -0
  218. {gam7-7.13.3 → gam7-7.14.0}/wiki/Users-Chat.md +0 -0
  219. {gam7-7.13.3 → gam7-7.14.0}/wiki/Users-Classification-Labels.md +0 -0
  220. {gam7-7.13.3 → gam7-7.14.0}/wiki/Users-Classroom-Profile.md +0 -0
  221. {gam7-7.13.3 → gam7-7.14.0}/wiki/Users-Contacts-Delegates.md +0 -0
  222. {gam7-7.13.3 → gam7-7.14.0}/wiki/Users-Contacts.md +0 -0
  223. {gam7-7.13.3 → gam7-7.14.0}/wiki/Users-Deprovision.md +0 -0
  224. {gam7-7.13.3 → gam7-7.14.0}/wiki/Users-Drive-Activity-Settings.md +0 -0
  225. {gam7-7.13.3 → gam7-7.14.0}/wiki/Users-Drive-Cleanup.md +0 -0
  226. {gam7-7.13.3 → gam7-7.14.0}/wiki/Users-Drive-Comments.md +0 -0
  227. {gam7-7.13.3 → gam7-7.14.0}/wiki/Users-Drive-Copy-Move.md +0 -0
  228. {gam7-7.13.3 → gam7-7.14.0}/wiki/Users-Drive-Files-Display.md +0 -0
  229. {gam7-7.13.3 → gam7-7.14.0}/wiki/Users-Drive-Files-Manage.md +0 -0
  230. {gam7-7.13.3 → gam7-7.14.0}/wiki/Users-Drive-Orphans.md +0 -0
  231. {gam7-7.13.3 → gam7-7.14.0}/wiki/Users-Drive-Ownership.md +0 -0
  232. {gam7-7.13.3 → gam7-7.14.0}/wiki/Users-Drive-Permissions.md +0 -0
  233. {gam7-7.13.3 → gam7-7.14.0}/wiki/Users-Drive-Query.md +0 -0
  234. {gam7-7.13.3 → gam7-7.14.0}/wiki/Users-Drive-Revisions.md +0 -0
  235. {gam7-7.13.3 → gam7-7.14.0}/wiki/Users-Drive-Shortcuts.md +0 -0
  236. {gam7-7.13.3 → gam7-7.14.0}/wiki/Users-Drive-Transfer.md +0 -0
  237. {gam7-7.13.3 → gam7-7.14.0}/wiki/Users-Forms.md +0 -0
  238. {gam7-7.13.3 → gam7-7.14.0}/wiki/Users-Gmail-CSE.md +0 -0
  239. {gam7-7.13.3 → gam7-7.14.0}/wiki/Users-Gmail-Delegates.md +0 -0
  240. {gam7-7.13.3 → gam7-7.14.0}/wiki/Users-Gmail-Filters.md +0 -0
  241. {gam7-7.13.3 → gam7-7.14.0}/wiki/Users-Gmail-Forwarding.md +0 -0
  242. {gam7-7.13.3 → gam7-7.14.0}/wiki/Users-Gmail-Labels.md +0 -0
  243. {gam7-7.13.3 → gam7-7.14.0}/wiki/Users-Gmail-Messages-Threads.md +0 -0
  244. {gam7-7.13.3 → gam7-7.14.0}/wiki/Users-Gmail-Profile.md +0 -0
  245. {gam7-7.13.3 → gam7-7.14.0}/wiki/Users-Gmail-S-MIME.md +0 -0
  246. {gam7-7.13.3 → gam7-7.14.0}/wiki/Users-Gmail-Send-As-Signature-Vacation.md +0 -0
  247. {gam7-7.13.3 → gam7-7.14.0}/wiki/Users-Gmail-Settings.md +0 -0
  248. {gam7-7.13.3 → gam7-7.14.0}/wiki/Users-Group-Membership.md +0 -0
  249. {gam7-7.13.3 → gam7-7.14.0}/wiki/Users-Keep-Notes.md +0 -0
  250. {gam7-7.13.3 → gam7-7.14.0}/wiki/Users-Looker-Studio.md +0 -0
  251. {gam7-7.13.3 → gam7-7.14.0}/wiki/Users-Meet.md +0 -0
  252. {gam7-7.13.3 → gam7-7.14.0}/wiki/Users-People-Contacts-Profiles.md +0 -0
  253. {gam7-7.13.3 → gam7-7.14.0}/wiki/Users-Photo.md +0 -0
  254. {gam7-7.13.3 → gam7-7.14.0}/wiki/Users-Profile-Photo.md +0 -0
  255. {gam7-7.13.3 → gam7-7.14.0}/wiki/Users-Profile-Sharing.md +0 -0
  256. {gam7-7.13.3 → gam7-7.14.0}/wiki/Users-Shared-Drives.md +0 -0
  257. {gam7-7.13.3 → gam7-7.14.0}/wiki/Users-Signout-Turnoff2SV.md +0 -0
  258. {gam7-7.13.3 → gam7-7.14.0}/wiki/Users-Spreadsheets.md +0 -0
  259. {gam7-7.13.3 → gam7-7.14.0}/wiki/Users-Tasks.md +0 -0
  260. {gam7-7.13.3 → gam7-7.14.0}/wiki/Users-Tokens.md +0 -0
  261. {gam7-7.13.3 → gam7-7.14.0}/wiki/Users-YouTube.md +0 -0
  262. {gam7-7.13.3 → gam7-7.14.0}/wiki/Users.md +0 -0
  263. {gam7-7.13.3 → gam7-7.14.0}/wiki/Using-GAM7-with-a-YubiKey.md +0 -0
  264. {gam7-7.13.3 → gam7-7.14.0}/wiki/Using-GAM7-with-a-delegated-admin-service-account.md +0 -0
  265. {gam7-7.13.3 → gam7-7.14.0}/wiki/Vault-Takeout.md +0 -0
  266. {gam7-7.13.3 → gam7-7.14.0}/wiki/Verifying-a-GAM7-Build-is-Legitimate-and-Official.md +0 -0
  267. {gam7-7.13.3 → gam7-7.14.0}/wiki/l-AdminSettingsExamples.md +0 -0
  268. {gam7-7.13.3 → gam7-7.14.0}/wiki/l-Android-Installation.md +0 -0
  269. {gam7-7.13.3 → gam7-7.14.0}/wiki/l-BulkOperations.md +0 -0
  270. {gam7-7.13.3 → gam7-7.14.0}/wiki/l-CalendarExamples.md +0 -0
  271. {gam7-7.13.3 → gam7-7.14.0}/wiki/l-Chat-Bot.md +0 -0
  272. {gam7-7.13.3 → gam7-7.14.0}/wiki/l-Chrome-Browser-Management.md +0 -0
  273. {gam7-7.13.3 → gam7-7.14.0}/wiki/l-Chrome-OS-Installation.md +0 -0
  274. {gam7-7.13.3 → gam7-7.14.0}/wiki/l-Chrome-Policy-Settings.md +0 -0
  275. {gam7-7.13.3 → gam7-7.14.0}/wiki/l-Cloud-Identity-Groups.md +0 -0
  276. {gam7-7.13.3 → gam7-7.14.0}/wiki/l-Command-Reference-Calendar-Resources.md +0 -0
  277. {gam7-7.13.3 → gam7-7.14.0}/wiki/l-Command-Reference-Calendars.md +0 -0
  278. {gam7-7.13.3 → gam7-7.14.0}/wiki/l-Command-Reference-Definitions.md +0 -0
  279. {gam7-7.13.3 → gam7-7.14.0}/wiki/l-Command-Reference-Drive.md +0 -0
  280. {gam7-7.13.3 → gam7-7.14.0}/wiki/l-Command-Reference-Email.md +0 -0
  281. {gam7-7.13.3 → gam7-7.14.0}/wiki/l-Command-Reference-Group-Attributes.md +0 -0
  282. {gam7-7.13.3 → gam7-7.14.0}/wiki/l-Command-Reference-Groups.md +0 -0
  283. {gam7-7.13.3 → gam7-7.14.0}/wiki/l-Command-Reference-Users.md +0 -0
  284. {gam7-7.13.3 → gam7-7.14.0}/wiki/l-Context-Aware-Access-Levels.md +0 -0
  285. {gam7-7.13.3 → gam7-7.14.0}/wiki/l-Creating-client_secrets.json-and-oauth2service.json.md +0 -0
  286. {gam7-7.13.3 → gam7-7.14.0}/wiki/l-CreatingClientSecretsFile.md +0 -0
  287. {gam7-7.13.3 → gam7-7.14.0}/wiki/l-Custom-Schemas.md +0 -0
  288. {gam7-7.13.3 → gam7-7.14.0}/wiki/l-Data-Transfers.md +0 -0
  289. {gam7-7.13.3 → gam7-7.14.0}/wiki/l-DomainVerification.md +0 -0
  290. {gam7-7.13.3 → gam7-7.14.0}/wiki/l-ExamplesAccountAuditing.md +0 -0
  291. {gam7-7.13.3 → gam7-7.14.0}/wiki/l-ExamplesCSV.md +0 -0
  292. {gam7-7.13.3 → gam7-7.14.0}/wiki/l-ExamplesEmailSettings.md +0 -0
  293. {gam7-7.13.3 → gam7-7.14.0}/wiki/l-ExamplesOrganizations.md +0 -0
  294. {gam7-7.13.3 → gam7-7.14.0}/wiki/l-GAM-Discussion-Group.md +0 -0
  295. {gam7-7.13.3 → gam7-7.14.0}/wiki/l-GAM-on-Android-and-Chrome-OS.md +0 -0
  296. {gam7-7.13.3 → gam7-7.14.0}/wiki/l-GAM-options-files.md +0 -0
  297. {gam7-7.13.3 → gam7-7.14.0}/wiki/l-GAM-with--minimal-GCP-rights.md +0 -0
  298. {gam7-7.13.3 → gam7-7.14.0}/wiki/l-GAM3CSVListings.md +0 -0
  299. {gam7-7.13.3 → gam7-7.14.0}/wiki/l-GAM3DirectoryCommands.md +0 -0
  300. {gam7-7.13.3 → gam7-7.14.0}/wiki/l-GAM3GroupSettings.md +0 -0
  301. {gam7-7.13.3 → gam7-7.14.0}/wiki/l-GAM7-FAQ.md +0 -0
  302. {gam7-7.13.3 → gam7-7.14.0}/wiki/l-Google-Vault---Takeout-Commands.md +0 -0
  303. {gam7-7.13.3 → gam7-7.14.0}/wiki/l-GoogleDriveManagement.md +0 -0
  304. {gam7-7.13.3 → gam7-7.14.0}/wiki/l-Grouping-18-or-Older-Users.md +0 -0
  305. {gam7-7.13.3 → gam7-7.14.0}/wiki/l-Home.md +0 -0
  306. {gam7-7.13.3 → gam7-7.14.0}/wiki/l-How-to-upgrade-from-Standard-GAM.md +0 -0
  307. {gam7-7.13.3 → gam7-7.14.0}/wiki/l-Inbound-SSO-Settings.md +0 -0
  308. {gam7-7.13.3 → gam7-7.14.0}/wiki/l-LicenseExamples.md +0 -0
  309. {gam7-7.13.3 → gam7-7.14.0}/wiki/l-Managing-Admins.md +0 -0
  310. {gam7-7.13.3 → gam7-7.14.0}/wiki/l-Managing-CloudPrint-Printers.md +0 -0
  311. {gam7-7.13.3 → gam7-7.14.0}/wiki/l-Managing-Devices.md +0 -0
  312. {gam7-7.13.3 → gam7-7.14.0}/wiki/l-Managing-Google-Classroom.md +0 -0
  313. {gam7-7.13.3 → gam7-7.14.0}/wiki/l-OAuthKeyManagement.md +0 -0
  314. {gam7-7.13.3 → gam7-7.14.0}/wiki/l-Printers.md +0 -0
  315. {gam7-7.13.3 → gam7-7.14.0}/wiki/l-ResellerCommands.md +0 -0
  316. {gam7-7.13.3 → gam7-7.14.0}/wiki/l-Running-GAM-on-Google-Compute-Engine-(GCE)-Securely.md +0 -0
  317. {gam7-7.13.3 → gam7-7.14.0}/wiki/l-SecurityExamples.md +0 -0
  318. {gam7-7.13.3 → gam7-7.14.0}/wiki/l-UnmanagedUsersExamples.md +0 -0
  319. {gam7-7.13.3 → gam7-7.14.0}/wiki/l-Use-a-Yubikey.md +0 -0
  320. {gam7-7.13.3 → gam7-7.14.0}/wiki/l-Using-GAM-with-a-delegated-admin-service-account-(DASA).md +0 -0
  321. {gam7-7.13.3 → gam7-7.14.0}/wiki/l-_Footer.md +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gam7
3
- Version: 7.13.3
3
+ Version: 7.14.0
4
4
  Summary: CLI tool to manage Google Workspace
5
5
  Project-URL: Homepage, https://github.com/GAM-team/GAM
6
6
  Project-URL: Issues, https://github.com/GAM-team/GAM/issues
@@ -622,6 +622,14 @@ If an item contains spaces, it should be surrounded by ".
622
622
  gs://<StorageBucketName>/<StorageObjectName>|
623
623
  <StorageBucketName>/<StorageObjectName>
624
624
  <Tag> ::= <String>
625
+ <TagManagerAccountID> ::= <String>
626
+ <TagManagerAccountPath> ::= accounts/<TagManagerAccountID>
627
+ <TagManagerContainerID> ::= <String>
628
+ <TagManagerContainerPath> ::= accounts/<TagManagerAccountID>/containers/<TagManagerContainerID>
629
+ <TagManagerWorkspaceID> ::= <String>
630
+ <TagManagerWorkspacePath> ::= accounts/<TagManagerAccountID>/containers/<TagManagerContainerID>/workspaces/<TagManagerWorkspaceID>
631
+ <TagManagerTagID> ::= <String>
632
+ <TagManagerTagPath> ::= accounts/<TagManagerAccountID>/containers/<TagManagerContainerID>/workspaces/<TagManagerWorkspaceID>/tags/<TagManagerTagID>
625
633
  <TakeoutBucketName> ::= takeout-export-[a-f,0-9,-]*
626
634
  <TaskID> ::= <String>
627
635
  <TaskListID> ::= <String>
@@ -771,6 +779,9 @@ If an item contains spaces, it should be surrounded by ".
771
779
  <SharedDriveACLRoleList> ::= "<SharedDriveACLRole>(,<SharedDriveACLRole>)*"
772
780
  <SharedDriveIDList> ::= "<SharedDriveID>(,<SharedDriveID>)*"
773
781
  <StringList> ::= "<String>(,<String>)*"
782
+ <TagManagerAccountPathList> ::= "<TagManagerAccountPath>(,<TagManagerAccountPath>)*"
783
+ <TagManagerContainerPathList> ::= "<TagManagerContainerPath>(,<TagManagerContainerPath>)*"
784
+ <TagManagerWorkspacePathList> ::= "<TagManagerWorkspacePath>(,<TagManagerWorkspacePath>)*"
774
785
  <TasklistIDList> ::= "<TasklistID>(,<TasklistID>)*"
775
786
  <TasklistTitleList> ::= "'<TasklistTitle>'(,'<TasklistTitle>')*"
776
787
  <TasklistIDTaskIDList> ::= "<TasklistIDTaskID>(,<TasklistIDTaskID>)*"
@@ -1026,7 +1037,10 @@ Specify a collection of items by directly specifying them; the item type is dete
1026
1037
  <CalendarEntity> ::=
1027
1038
  <CalendarList> | <FileSelector> | <CSVFileSelector> | <CSVkmdSelector> | <CSVDataSelector>
1028
1039
  <ChromeProfileNameEntity> ::=
1029
- <ChromeProfileNameList> | <FileSelector> | <CSVFileSelector>
1040
+ <ChromeProfileNameList> |
1041
+ (select <FileSelector>|<CSVFileSelector>) |
1042
+ (filter <String> (filtertime<String> <Time>)* [orderby <ChromeProfileOrderByFieldName> [ascending|descending]]) |
1043
+ (commands <ChromeProfileCommandNameList>|<FileSelector>|<CSVFileSelector>)
1030
1044
  <CIPolicyNameEntity> ::=
1031
1045
  <CIPolicyNameList> | <FileSelector> | <CSVFileSelector>
1032
1046
  <ClassificationLabelNameEntity> ::=
@@ -1229,6 +1243,15 @@ Specify a collection of items by directly specifying them; the item type is dete
1229
1243
  <SiteACLScopeList> | <FileSelector> | <CSVFileSelector> | <CSVkmdSelector> | <CSVDataSelector>
1230
1244
  <SiteEntity> ::=
1231
1245
  <SiteList> | <FileSelector> | <CSVFileSelector> | <CSVkmdSelector> | <CSVDataSelector>
1246
+ <TagManagerAccountPathEntity> ::=
1247
+ <TagManagerAccountPathList> |
1248
+ (select <FileSelector>|<CSVFileSelector>) |
1249
+ <TagManagerContainerPathEntity> ::=
1250
+ <TagManagerContainerPathList> |
1251
+ (select <FileSelector>|<CSVFileSelector>) |
1252
+ <TagManagerWorkspacePathEntity> ::=
1253
+ <TagManagerWorkspacePathList> |
1254
+ (select <FileSelector>|<CSVFileSelector>) |
1232
1255
  <TasklistEntity> ::=
1233
1256
  <TasklistIDList> | <TaskListTitleList> | <FileSelector> | <CSVFileSelector>
1234
1257
  <TasklistIDTaskIDEntity> ::=
@@ -8337,6 +8360,59 @@ gam <UserTypeEntity> profile share|shared|unshare|unshared
8337
8360
 
8338
8361
  gam <UserTypeEntity> show profile
8339
8362
 
8363
+ # Users - Tag Manager
8364
+
8365
+ <TagManagerAccountID> ::= <String>
8366
+ <TagManagerAccountPath> ::= accounts/<TagManagerAccountID>
8367
+ <TagManagerAccountPathList> ::= "<TagManagerAccountPath>(,<TagManagerAccountPath>)*"
8368
+ <TagManagerAccountPathEntity> ::=
8369
+ <TagManagerAccountPathList> |
8370
+ (select <FileSelector>|<CSVFileSelector>) |
8371
+
8372
+ <TagManagerContainerID> ::= <String>
8373
+ <TagManagerContainerPath> ::= accounts/<TagManagerAccountID>/containers/<TagManagerContainerID>
8374
+ <TagManagerContainerPathList> ::= "<TagManagerContainerPath>(,<TagManagerContainerPath>)*"
8375
+ <TagManagerContainerPathEntity> ::=
8376
+ <TagManagerContainerPathList> |
8377
+ (select <FileSelector>|<CSVFileSelector>) |
8378
+
8379
+ <TagManagerWorkspaceID> ::= <String>
8380
+ <TagManagerWorkspacePath> ::= accounts/<TagManagerAccountID>/containers/<TagManagerContainerID>/workspaces/<TagManagerWorkspaceID>
8381
+ <TagManagerWorkspacePathList> ::= "<TagManagerWorkspacePath>(,<TagManagerWorkspacePath>)*"
8382
+ <TagManagerWorkspacePathEntity> ::=
8383
+ <TagManagerWorkspacePathList> |
8384
+ (select <FileSelector>|<CSVFileSelector>) |
8385
+
8386
+ <TagManagerTagID> ::= <String>
8387
+ <TagManagerTagPath> ::= accounts/<TagManagerAccountID>/containers/<TagManagerContainerID>/workspaces/<TagManagerWorkspaceID>/tags/<TagManagerTagID>
8388
+
8389
+ gam <UserTypeEntity> show tagmanageraccounts
8390
+ [includegoogletags [<Boolean>]]
8391
+ [formatjson]
8392
+ gam <UserTypeEntity> print tagmanagerccounts [todrive <ToDriveAttribute>*]
8393
+ [includegoogletags [<Boolean>]]
8394
+ [formatjson [quotechar <Character>]]
8395
+
8396
+ gam <UserTypeEntity> show tagmanagercontainers <TagManagerAccountPathEntity>
8397
+ [formatjson]
8398
+ gam <UserTypeEntity> print tagmanagercontainers <TagManagerAccountPathEntity> [todrive <ToDriveAttribute>*]
8399
+ [formatjson [quotechar <Character>]]
8400
+
8401
+ gam <UserTypeEntity> show tagmanagerworkspaces <TagManagerContainerPathEntity>
8402
+ [formatjson]
8403
+ gam <UserTypeEntity> print tagmanagerworkspaces <TagManagerContainerPathEntity> [todrive <ToDriveAttribute>*]
8404
+ [formatjson [quotechar <Character>]]
8405
+
8406
+ gam <UserTypeEntity> show tagmanagertags <TagManagerWorkspacePathEntity>
8407
+ [formatjson]
8408
+ gam <UserTypeEntity> print tagmanagertags <TagManagerWorkspacePathEntity> [todrive <ToDriveAttribute>*]
8409
+ [formatjson [quotechar <Character>]]
8410
+
8411
+ gam <UserTypeEntity> show tagmanagerpermissions <TagManagerAccountPathEntity>
8412
+ [formatjson]
8413
+ gam <UserTypeEntity> print tagmanagerpermissions <TagManagerAccountPathEntity> [todrive <ToDriveAttribute>*]
8414
+ [formatjson [quotechar <Character>]]
8415
+
8340
8416
  # Users - Tasks
8341
8417
 
8342
8418
  <TaskAttribute> ::=
@@ -1,3 +1,9 @@
1
+ 7.14.00
2
+
3
+ Added commands to display Google Tag Manager accounts, containers, workspaces and tags.
4
+
5
+ * See: https://github.com/GAM-team/GAM/wiki/Users-Tag-Manager
6
+
1
7
  7.13.03
2
8
 
3
9
  Added option `csv [todrive <ToDriveAttribute>*] [formatjson [quotechar <Character>]]]`
@@ -25,7 +25,7 @@ https://github.com/GAM-team/GAM/wiki
25
25
  """
26
26
 
27
27
  __author__ = 'GAM Team <google-apps-manager@googlegroups.com>'
28
- __version__ = '7.13.03'
28
+ __version__ = '7.14.00'
29
29
  __license__ = 'Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)'
30
30
 
31
31
  #pylint: disable=wrong-import-position
@@ -24113,7 +24113,10 @@ def infoCrOSDevices(entityList):
24113
24113
  printKeyValueList([up, ''])
24114
24114
  Ind.Increment()
24115
24115
  for key, value in sorted(iter(cros[up].items())):
24116
- printKeyValueList([key, value])
24116
+ if key not in CROS_TIME_OBJECTS:
24117
+ printKeyValueList([key, value])
24118
+ else:
24119
+ printKeyValueList([key, formatLocalTime(value)])
24117
24120
  Ind.Decrement()
24118
24121
  if not noLists:
24119
24122
  activeTimeRanges = _filterActiveTimeRanges(cros, True, listLimit, startDate, endDate, activeTimeRangesOrder)
@@ -76488,6 +76491,147 @@ def importTasklist(users):
76488
76491
  tasklist=tasklistId, parent=parent, body=task)
76489
76492
  parentIdMap[taskId] = result['id']
76490
76493
 
76494
+ TAGMANAGER_PARAMETERS = {
76495
+ Ent.TAGMANAGER_ACCOUNT: {'api': API.TAGMANAGER, 'respType': 'account', 'parentEntityType': None,
76496
+ 'name': 'name', 'idList': ['accountId']},
76497
+ Ent.TAGMANAGER_CONTAINER: {'api': API.TAGMANAGER, 'respType': 'container', 'parentEntityType': Ent.TAGMANAGER_ACCOUNT,
76498
+ 'name': 'name', 'idList': ['accountId', 'containerId']},
76499
+ Ent.TAGMANAGER_WORKSPACE: {'api': API.TAGMANAGER, 'respType': 'workspace', 'parentEntityType': Ent.TAGMANAGER_CONTAINER,
76500
+ 'name': 'name', 'idList': ['accountId', 'containerId', 'workspaceId']},
76501
+ Ent.TAGMANAGER_TAG: {'api': API.TAGMANAGER, 'respType': 'tag', 'parentEntityType': Ent.TAGMANAGER_WORKSPACE,
76502
+ 'name': 'name', 'idList': ['accountId', 'containerId', 'workspaceId', 'tagId']},
76503
+ Ent.TAGMANAGER_PERMISSION: {'api': API.TAGMANAGER_USERS, 'respType': 'userPermission', 'parentEntityType': Ent.TAGMANAGER_ACCOUNT,
76504
+ 'name': 'emailAddress', 'idList': ['accountId']},
76505
+ }
76506
+
76507
+ def printShowTagManagerObjects(users, entityType):
76508
+ csvPF = CSVPrintFile(['User']) if Act.csvFormat() else None
76509
+ FJQC = FormatJSONQuoteChar(csvPF)
76510
+ if entityType == Ent.TAGMANAGER_ACCOUNT:
76511
+ kwargs = {'includeGoogleTags': False}
76512
+ parentList = [None]
76513
+ else:
76514
+ kwargs = {'parent': None}
76515
+ if not checkArgumentPresent('select'):
76516
+ parentList = getString(Cmd.OB_TAGMANAGER_PATH_LIST).replace(',', ' ').split()
76517
+ else:
76518
+ parentList = getEntityList(Cmd.OB_TAGMANAGER_PATH_LIST)
76519
+ parameters = TAGMANAGER_PARAMETERS[entityType]
76520
+ if csvPF:
76521
+ csvPF.AddTitles([parameters['name'], 'path'])
76522
+ while Cmd.ArgumentsRemaining():
76523
+ myarg = getArgument()
76524
+ if csvPF and myarg == 'todrive':
76525
+ csvPF.GetTodriveParameters()
76526
+ elif entityType == Ent.TAGMANAGER_ACCOUNT and myarg == 'includegoogletags':
76527
+ kwargs['includeGoogleTags'] = getBoolean()
76528
+ else:
76529
+ FJQC.GetFormatJSONQuoteChar(myarg, True)
76530
+ i, count, users = getEntityArgument(users)
76531
+ for user in users:
76532
+ i += 1
76533
+ user, svc = buildGAPIServiceObject(parameters['api'], user, i, count)
76534
+ if not svc:
76535
+ continue
76536
+ if entityType == Ent.TAGMANAGER_ACCOUNT:
76537
+ svc = svc.accounts()
76538
+ elif entityType == Ent.TAGMANAGER_CONTAINER:
76539
+ svc = svc.accounts().containers()
76540
+ elif entityType == Ent.TAGMANAGER_WORKSPACE:
76541
+ svc = svc.accounts().containers().workspaces()
76542
+ elif entityType == Ent.TAGMANAGER_TAG:
76543
+ svc = svc.accounts().containers().workspaces().tags()
76544
+ else: #elif entityType == Ent.TAGMANAGER_PERMISSION:
76545
+ svc = svc.accounts().user_permissions()
76546
+ jcount = len(parentList)
76547
+ j = 0
76548
+ for parent in parentList:
76549
+ j += 1
76550
+ if entityType == Ent.TAGMANAGER_ACCOUNT:
76551
+ printGettingAllEntityItemsForWhom(entityType, user, i, count)
76552
+ else:
76553
+ kwargs['parent'] = parent
76554
+ qualifier = f' for {Ent.Singular(parameters["parentEntityType"])}: {parent}'
76555
+ printGettingAllEntityItemsForWhom(entityType, user, i, count, qualifier=qualifier)
76556
+ try:
76557
+ results = callGAPIpages(svc, 'list', parameters['respType'],
76558
+ pageMessage=getPageMessageForWhom(),
76559
+ throwReasons=GAPI.TAGMANAGER_THROW_REASONS,
76560
+ **kwargs)
76561
+ except (GAPI.badRequest, GAPI.invalid, GAPI.notFound) as e:
76562
+ entityActionFailedWarning([Ent.USER, user, entityType, kwargs['parent']], str(e), j, jcount)
76563
+ continue
76564
+ kcount = len(results)
76565
+ if not csvPF:
76566
+ if not FJQC.formatJSON:
76567
+ entityPerformActionNumItems([Ent.USER, user], kcount, entityType, j, jcount)
76568
+ Ind.Increment()
76569
+ k = 0
76570
+ for result in results:
76571
+ k += 1
76572
+ if not FJQC.formatJSON:
76573
+ printEntity([entityType, result['path']], k, kcount)
76574
+ Ind.Increment()
76575
+ printKeyValueList([parameters['name'], result.pop(parameters['name'])])
76576
+ for tmid in parameters['idList']:
76577
+ printKeyValueList([tmid, result.pop(tmid)])
76578
+ showJSON(None, result)
76579
+ Ind.Decrement()
76580
+ else:
76581
+ printLine(json.dumps(cleanJSON(result), ensure_ascii=False, sort_keys=True))
76582
+ Ind.Decrement()
76583
+ else:
76584
+ for result in results:
76585
+ baseRow = {'User': user}
76586
+ for tmid in parameters['idList']:
76587
+ baseRow[tmid] = result.pop(tmid)
76588
+ row = flattenJSON(result, flattened=baseRow)
76589
+ if not FJQC.formatJSON:
76590
+ csvPF.WriteRowTitles(row)
76591
+ elif csvPF.CheckRowTitles(row):
76592
+ row = {'User': user, parameters['name']: result[parameters['name']], 'path': result['path']}
76593
+ row['JSON'] = json.dumps(cleanJSON(result), ensure_ascii=False, sort_keys=True)
76594
+ csvPF.WriteRowNoFilter(row)
76595
+ if csvPF:
76596
+ csvPF.writeCSVfile(Ent.Plural(entityType))
76597
+
76598
+ # gam <UserTypeEntity> show tagmanageraccounts
76599
+ # [includegoogletags [<Boolean>]]
76600
+ # [formatjson]
76601
+ # gam <UserTypeEntity> print tagmanagerccounts [todrive <ToDriveAttribute>*]
76602
+ # [includegoogletags [<Boolean>]]
76603
+ # [formatjson [quotechar <Character>]]
76604
+ def printShowTagManagerAccounts(users):
76605
+ printShowTagManagerObjects(users, Ent.TAGMANAGER_ACCOUNT)
76606
+
76607
+ # gam <UserTypeEntity> show tagmanagercontainers <TagManagerAccountPathEntity>
76608
+ # [formatjson]
76609
+ # gam <UserTypeEntity> print tagmanagercontainers <TagManagerAccountPathEntity> [todrive <ToDriveAttribute>*]
76610
+ # [formatjson [quotechar <Character>]]
76611
+ def printShowTagManagerContainers(users):
76612
+ printShowTagManagerObjects(users, Ent.TAGMANAGER_CONTAINER)
76613
+
76614
+ # gam <UserTypeEntity> show tagmanagerworkspaces <TagManagerContainerPathEntity>
76615
+ # [formatjson]
76616
+ # gam <UserTypeEntity> print tagmanagerworkspaces <TagManagerContainerPathEntity>
76617
+ # [formatjson [quotechar <Character>]]
76618
+ def printShowTagManagerWorkspaces(users):
76619
+ printShowTagManagerObjects(users, Ent.TAGMANAGER_WORKSPACE)
76620
+
76621
+ # gam <UserTypeEntity> show tagmanagertags <TagManagerWorkspacePathEntity>
76622
+ # [formatjson]
76623
+ # gam <UserTypeEntity> print tagmanagertags <TagManagerWorkspacePathEntity> [todrive <ToDriveAttribute>*]
76624
+ # [formatjson [quotechar <Character>]]
76625
+ def printShowTagManagerTags(users):
76626
+ printShowTagManagerObjects(users, Ent.TAGMANAGER_TAG)
76627
+
76628
+ # gam <UserTypeEntity> show tagmanagerpermissions <TagManagerAccountPathEntity>
76629
+ # [formatjson]
76630
+ # gam <UserTypeEntity> print tagmanagerpermissions <TagManagerAccountPathEntity> [todrive <ToDriveAttribute>*]
76631
+ # [formatjson [quotechar <Character>]]
76632
+ def printShowTagManagerPermissions(users):
76633
+ printShowTagManagerObjects(users, Ent.TAGMANAGER_PERMISSION)
76634
+
76491
76635
  def getCRMOrgId():
76492
76636
  setTrueCustomerId()
76493
76637
  _, crm = buildGAPIServiceObject(API.CLOUDRESOURCEMANAGER, None)
@@ -78216,6 +78360,11 @@ USER_COMMANDS_WITH_OBJECTS = {
78216
78360
  Cmd.ARG_SITE: deprecatedUserSites,
78217
78361
  Cmd.ARG_SITEACL: deprecatedUserSites,
78218
78362
  Cmd.ARG_SITEACTIVITY: deprecatedUserSites,
78363
+ Cmd.ARG_TAGMANAGERACCOUNT: printShowTagManagerAccounts,
78364
+ Cmd.ARG_TAGMANAGERCONTAINER: printShowTagManagerContainers,
78365
+ Cmd.ARG_TAGMANAGERPERMISSION: printShowTagManagerPermissions,
78366
+ Cmd.ARG_TAGMANAGERTAG: printShowTagManagerTags,
78367
+ Cmd.ARG_TAGMANAGERWORKSPACE: printShowTagManagerWorkspaces,
78219
78368
  Cmd.ARG_TASK: printShowTasks,
78220
78369
  Cmd.ARG_TASKLIST: printShowTasklists,
78221
78370
  Cmd.ARG_THREAD: printShowThreads,
@@ -78323,6 +78472,11 @@ USER_COMMANDS_WITH_OBJECTS = {
78323
78472
  Cmd.ARG_SITE: deprecatedUserSites,
78324
78473
  Cmd.ARG_SITEACL: deprecatedUserSites,
78325
78474
  Cmd.ARG_SMIME: printShowSmimes,
78475
+ Cmd.ARG_TAGMANAGERACCOUNT: printShowTagManagerAccounts,
78476
+ Cmd.ARG_TAGMANAGERCONTAINER: printShowTagManagerContainers,
78477
+ Cmd.ARG_TAGMANAGERPERMISSION: printShowTagManagerPermissions,
78478
+ Cmd.ARG_TAGMANAGERTAG: printShowTagManagerTags,
78479
+ Cmd.ARG_TAGMANAGERWORKSPACE: printShowTagManagerWorkspaces,
78326
78480
  Cmd.ARG_TASK: printShowTasks,
78327
78481
  Cmd.ARG_TASKLIST: printShowTasklists,
78328
78482
  Cmd.ARG_THREAD: printShowThreads,
@@ -78562,6 +78716,11 @@ USER_COMMANDS_OBJ_ALIASES = {
78562
78716
  Cmd.ARG_SITES: Cmd.ARG_SITE,
78563
78717
  Cmd.ARG_SITEACLS: Cmd.ARG_SITEACL,
78564
78718
  Cmd.ARG_SMIMES: Cmd.ARG_SMIME,
78719
+ Cmd.ARG_TAGMANAGERACCOUNTS: Cmd.ARG_TAGMANAGERACCOUNT,
78720
+ Cmd.ARG_TAGMANAGERCONTAINERS: Cmd.ARG_TAGMANAGERCONTAINER,
78721
+ Cmd.ARG_TAGMANAGERPERMISSIONS: Cmd.ARG_TAGMANAGERPERMISSION,
78722
+ Cmd.ARG_TAGMANAGERTAGS: Cmd.ARG_TAGMANAGERTAG,
78723
+ Cmd.ARG_TAGMANAGERWORKSPACES: Cmd.ARG_TAGMANAGERWORKSPACE,
78565
78724
  Cmd.ARG_TASKS: Cmd.ARG_TASK,
78566
78725
  Cmd.ARG_TASKLISTS: Cmd.ARG_TASKLIST,
78567
78726
  Cmd.ARG_TEAMDRIVE: Cmd.ARG_SHAREDDRIVE,
@@ -94,6 +94,8 @@ SITEVERIFICATION = 'siteVerification'
94
94
  STORAGE = 'storage'
95
95
  STORAGEREAD = 'storageread'
96
96
  STORAGEWRITE = 'storagewrite'
97
+ TAGMANAGER = 'tagmanager'
98
+ TAGMANAGER_USERS = 'tagmanagerusers'
97
99
  TASKS = 'tasks'
98
100
  VAULT = 'vault'
99
101
  YOUTUBE = 'youtube'
@@ -199,6 +201,7 @@ PROJECT_APIS = [
199
201
  'sheets.googleapis.com',
200
202
  'siteverification.googleapis.com',
201
203
  'storage-api.googleapis.com',
204
+ 'tagmanager.googleapis.com',
202
205
  'tasks.googleapis.com',
203
206
  'vault.googleapis.com',
204
207
  'youtube.googleapis.com',
@@ -277,6 +280,8 @@ _INFO = {
277
280
  STORAGE: {'name': 'Cloud Storage API', 'version': 'v1', 'v2discovery': True},
278
281
  STORAGEREAD: {'name': 'Cloud Storage API - Read', 'version': 'v1', 'v2discovery': True, 'mappedAPI': STORAGE},
279
282
  STORAGEWRITE: {'name': 'Cloud Storage API - Write', 'version': 'v1', 'v2discovery': True, 'mappedAPI': STORAGE},
283
+ TAGMANAGER: {'name': 'Tag Manager API', 'version': 'v2', 'v2discovery': True},
284
+ TAGMANAGER_USERS: {'name': 'Tag Manager API - Users', 'version': 'v2', 'v2discovery': True, 'mappedAPI': TAGMANAGER},
280
285
  TASKS: {'name': 'Tasks API', 'version': 'v1', 'v2discovery': True},
281
286
  VAULT: {'name': 'Vault API', 'version': 'v1', 'v2discovery': True},
282
287
  YOUTUBE: {'name': 'Youtube API', 'version': 'v3', 'v2discovery': True},
@@ -696,6 +701,16 @@ _SVCACCT_SCOPES = [
696
701
  'api': SHEETS,
697
702
  'subscopes': READONLY,
698
703
  'scope': 'https://www.googleapis.com/auth/spreadsheets'},
704
+ {'name': 'Tag Manager API - read only',
705
+ 'api': TAGMANAGER,
706
+ 'subscopes': [],
707
+ 'offByDefault': True,
708
+ 'scope': 'https://www.googleapis.com/auth/tagmanager.readonly'},
709
+ {'name': 'Tag Manager API - Users',
710
+ 'api': TAGMANAGER_USERS,
711
+ 'subscopes': [],
712
+ 'offByDefault': True,
713
+ 'scope': 'https://www.googleapis.com/auth/tagmanager.manage.users'},
699
714
  {'name': 'Tasks API',
700
715
  'api': TASKS,
701
716
  'subscopes': READONLY,
@@ -782,6 +782,16 @@ class GamCLArgs():
782
782
  ARG_SUSPENDED = 'suspended'
783
783
  ARG_SVCACCT = 'svcacct'
784
784
  ARG_SVCACCTS = 'svcaccts'
785
+ ARG_TAGMANAGERACCOUNT = 'tagmanageraccount'
786
+ ARG_TAGMANAGERACCOUNTS = 'tagmanageraccounts'
787
+ ARG_TAGMANAGERCONTAINER = 'tagmanagercontainer'
788
+ ARG_TAGMANAGERCONTAINERS = 'tagmanagercontainers'
789
+ ARG_TAGMANAGERPERMISSION = 'tagmanagerpermission'
790
+ ARG_TAGMANAGERPERMISSIONS = 'tagmanagerpermissions'
791
+ ARG_TAGMANAGERTAG = 'tagmanagertag'
792
+ ARG_TAGMANAGERTAGS = 'tagmanagertags'
793
+ ARG_TAGMANAGERWORKSPACE = 'tagmanagerworkspace'
794
+ ARG_TAGMANAGERWORKSPACES = 'tagmanagerworkspaces'
785
795
  ARG_TASK = 'task'
786
796
  ARG_TASKS = 'tasks'
787
797
  ARG_TASKLIST = 'tasklist'
@@ -1039,6 +1049,7 @@ class GamCLArgs():
1039
1049
  OB_STRING_LIST = 'StringList'
1040
1050
  OB_STUDENT_ITEM = 'StudentItem'
1041
1051
  OB_TAG = 'Tag'
1052
+ OB_TAGMANAGER_PATH_LIST = 'TagManagerPathList'
1042
1053
  OB_TASK_ID = 'TaskID'
1043
1054
  OB_TASKLIST_ID = 'TaskListID'
1044
1055
  OB_TASKLIST_ID_ENTITY = 'TaskListIDEntity'
@@ -358,7 +358,12 @@ class GamEntity():
358
358
  SUBSCRIPTION = 'subs'
359
359
  SVCACCT = 'svac'
360
360
  SVCACCT_KEY = 'svky'
361
- TARGET_USER = 'tgt'
361
+ TAGMANAGER_ACCOUNT = 'tmac'
362
+ TAGMANAGER_CONTAINER = 'tmco'
363
+ TAGMANAGER_PERMISSION = 'tmpm'
364
+ TAGMANAGER_TAG = 'tmtg'
365
+ TAGMANAGER_WORKSPACE = 'tmws'
366
+ TARGET_USER = 'tgt '
362
367
  TASK = 'task'
363
368
  TASKLIST = 'tali'
364
369
  TEACHER = 'teac'
@@ -710,6 +715,11 @@ class GamEntity():
710
715
  SUBSCRIPTION: ['Subscriptions', 'Subscription'],
711
716
  SVCACCT: ['Service Accounts', 'Service Account'],
712
717
  SVCACCT_KEY: ['Service Account Keys', 'Service Account Key'],
718
+ TAGMANAGER_ACCOUNT: ['Tag Manager Accounts', 'Tag Manager Account'],
719
+ TAGMANAGER_CONTAINER: ['Tag Manager Containers', 'Tag Manager Container'],
720
+ TAGMANAGER_PERMISSION: ['Tag Manager Permissions', 'Tag Manager Permission'],
721
+ TAGMANAGER_TAG: ['Tag Manager Tags', 'Tag Manager Tag'],
722
+ TAGMANAGER_WORKSPACE: ['Tag Manager Workspaces', 'Tag Manager Workspace'],
713
723
  TARGET_USER: ['Target Users', 'Target User'],
714
724
  TASK: ['Tasks', 'Task'],
715
725
  TASKLIST: ['Tasklists', 'Tasklist'],
@@ -287,6 +287,7 @@ PEOPLE_ACCESS_THROW_REASONS = [SERVICE_NOT_AVAILABLE, FORBIDDEN, PERMISSION_DENI
287
287
  RESELLER_THROW_REASONS = [BAD_REQUEST, RESOURCE_NOT_FOUND, FORBIDDEN, INVALID]
288
288
  SHEETS_ACCESS_THROW_REASONS = DRIVE_USER_THROW_REASONS+[NOT_FOUND, PERMISSION_DENIED, FORBIDDEN, INTERNAL_ERROR, INSUFFICIENT_FILE_PERMISSIONS,
289
289
  BAD_REQUEST, INVALID, INVALID_ARGUMENT, FAILED_PRECONDITION]
290
+ TAGMANAGER_THROW_REASONS = [BAD_REQUEST, PERMISSION_DENIED, INVALID, NOT_FOUND, ACCESS_NOT_CONFIGURED]
290
291
  TASK_THROW_REASONS = [BAD_REQUEST, PERMISSION_DENIED, INVALID, NOT_FOUND, ACCESS_NOT_CONFIGURED]
291
292
  TASKLIST_THROW_REASONS = [BAD_REQUEST, PERMISSION_DENIED, INVALID, NOT_FOUND, ACCESS_NOT_CONFIGURED]
292
293
  USER_GET_THROW_REASONS = [USER_NOT_FOUND, DOMAIN_NOT_FOUND, DOMAIN_CANNOT_USE_APIS, FORBIDDEN, BAD_REQUEST, SYSTEM_ERROR]
@@ -1,7 +1,7 @@
1
1
  [metadata]
2
2
  name = GAM for Google Workspace
3
3
  #version = attr: gam.var.GAM_VERSION
4
- version = 7.13.02
4
+ version = 7.14.
5
5
  description = Command line management for Google Workspaces
6
6
  long_description = file: readme.md
7
7
  long_description_content_type = text/markdown
@@ -519,6 +519,14 @@
519
519
  gs://<StorageBucketName>/<StorageObjectName>|
520
520
  <StorageBucketName>/<StorageObjectName>
521
521
  <Tag> ::= <String>
522
+ <TagManagerAccountID> ::= <String>
523
+ <TagManagerAccountPath> ::= accounts/<TagManagerAccountID>
524
+ <TagManagerContainerID> ::= <String>
525
+ <TagManagerContainerPath> ::= accounts/<TagManagerAccountID>/containers/<TagManagerContainerID>
526
+ <TagManagerWorkspaceID> ::= <String>
527
+ <TagManagerWorkspacePath> ::= accounts/<TagManagerAccountID>/containers/<TagManagerContainerID>/workspaces/<TagManagerWorkspaceID>
528
+ <TagManagerTagID> ::= <String>
529
+ <TagManagerTagPath> ::= accounts/<TagManagerAccountID>/containers/<TagManagerContainerID>/workspaces/<TagManagerWorkspaceID>/tags/<TagManagerTagID>
522
530
  <TakeoutBucketName> ::= takeout-export-[a-f,0-9,-]*
523
531
  <TaskID> ::= <String>
524
532
  <TaskListID> ::= <String>
@@ -34,12 +34,14 @@ Follow instructions at: Turn on managed profile reporting
34
34
  <CustomerID> ::= <String>
35
35
  <ChromeProfilePermanentID> ::= <String>
36
36
  <ChromeProfileName> ::= customers/<CustomerID>/profiles/<ChromeProfilePermanentID> | <ChromeProfilePermanentID>
37
- <ChromeProfileCommandName> ::= <ChomeProfileName>/commands/<String>
38
37
  <ChromeProfileNameList> ::= "<ChromeProfileName>(,<ChromeProfileName>)*"
38
+ <ChromeProfileCommandName> ::= <ChomeProfileName>/commands/<String>
39
+ <ChromeProfileCommandNameList> ::= "<ChromeProfileCommandName>(,<ChromeProfileCommandName>)*"
39
40
  <ChromeProfileNameEntity> ::=
40
41
  <ChromeProfileNameList> |
41
42
  (select <FileSelector>|<CSVFileSelector>) |
42
- (filter <String> (filtertime<String> <Time>)* [orderby <ChromeProfileOrderByFieldName> [ascending|descending]])
43
+ (filter <String> (filtertime<String> <Time>)* [orderby <ChromeProfileOrderByFieldName> [ascending|descending]]) |
44
+ (commands <ChromeProfileCommandNameList>|<FileSelector>|<CSVFileSelector>)
43
45
 
44
46
  <ChromeProfileFieldName> ::=
45
47
  affiliationstate|
@@ -209,12 +211,16 @@ gam print chromeprofiles filter "osPlatformType=WINDOWS"
209
211
  ```
210
212
  <ChromeProfileNameEntity> ::=
211
213
  <ChromeProfileNameList> |
212
- (select <FileSelector>|<CSVFileSelector>) |
213
- (filter <String> (filtertime<String> <Time>)* [orderby <ChromeProfileOrderByFieldName> [ascending|descending]])
214
+ (select <ChromeProfileNameList>|<FileSelector>|<CSVFileSelector>) |
215
+ (filter <String> (filtertime<String> <Time>)* [orderby <ChromeProfileOrderByFieldName> [ascending|descending]]) |
216
+ (commands <ChromeProfileCommandNameList>|<FileSelector>|<CSVFileSelector>)
214
217
  ```
215
- * `<ChromeProfileNameList>` - List of Chrome profile names
218
+ * `<ChromeProfileNameList>` - A list of Chrome profile names
219
+ * `select <ChromeProfileNameList>` - A list of Chrome profile names
216
220
  * `select <FileSelector>|<CSVFileSelector>` - A flat or CSV file containing Chrome profile names
217
221
  * `filter <String> (filtertime<String> <Time>)*` - A filter to select Chrome profiles
222
+ * `commands <ChromeProfileCommandNameList>` - A list of Chrome profile command names
223
+ * `commands <FileSelector>|<CSVFileSelector>` - A flat or CSV file containing Chrome profile command names
218
224
 
219
225
  Use the `filtertime<String> <Time>` option to allow times, usually relative, to be substituted into the `filter <String>` option.
220
226
  The `filtertime<String> <Time>` value replaces the string `#filtertime<String>#` in the `filter <String>`.
@@ -225,8 +231,12 @@ Clear a Chrome Browser profile cache and/or cookies.
225
231
  ```
226
232
  gam create chromeprofilecommand <ChromeProfileNameEntity>
227
233
  [clearcache [<Boolean>]] [clearcookies [<Boolean>]]
228
- [formatjson]
234
+ [csv [todrive <ToDriveAttribute>*] [formatjson [quotechar <Character>]]]
229
235
  ```
236
+ By default, when a Chrome profile command is created, GAM outputs details of the command as indented keywords and values.
237
+ * `formatjson` - Display the details in JSON format.
238
+ * `csv [todrive <ToDriveAttribute>*] [formatjson [quotechar <Character>]]` - Output the details in CSV format.
239
+
230
240
  ## Display Chrome Profile commands
231
241
  Display the status of a specific Chrome Browser profile command.
232
242
  ```
@@ -266,7 +276,7 @@ Clear cache and cookies for two specific Chrome profiles:
266
276
  gam create chromeprofilecommand 4c6c0a9f-de78-4285-be86-713fca8cffff,aa03151c-7c1d-41fe-b793-5753e167ffff clearcache clearcookies
267
277
  ```
268
278
 
269
- Display the status for those Chrome profiles:
279
+ Display the command status for those Chrome profiles:
270
280
  ```
271
281
  gam show chromeprofilecommand 4c6c0a9f-de78-4285-be86-713fca8cffff,aa03151c-7c1d-41fe-b793-5753e167ffff
272
282
  gam print chromeprofilecommand 4c6c0a9f-de78-4285-be86-713fca8cffff,aa03151c-7c1d-41fe-b793-5753e167ffff
@@ -277,7 +287,7 @@ Clear cache and cookies for Chrome profiles in a CSV file named `ChromeProfiles.
277
287
  gam create chromeprofilecommand select csvfile ChromeProfiles.csv:name clearcache clearcookies
278
288
  ```
279
289
 
280
- Display the status for those Chrome profiles:
290
+ Display the command status for those Chrome profiles:
281
291
  ```
282
292
  gam show chromeprofilecommand select csvfile ChromeProfiles.csv:name
283
293
  gam print chromeprofilecommand select csvfile ChromeProfiles.csv:name
@@ -288,8 +298,19 @@ Clear cache and cookies for Chrome profiles with last activity more that 60 days
288
298
  gam create chromeprofilecommand filter "lastActivityTime < \"#filtertime1#\"" filtertime1 -60d clearcache clearcookies
289
299
  ```
290
300
 
291
- Display the status for those Chrome profiles:
301
+ Display the command status for those Chrome profiles:
292
302
  ```
293
303
  gam show chromeprofilecommand filter "lastActivityTime < \"#filtertime1#\"" filtertime1 -60d
294
304
  gam print chromeprofilecommand filter "lastActivityTime < \"#filtertime1#\"" filtertime1 -60d
295
305
  ```
306
+
307
+ Clear cache and cookies for Chrome profiles with last activity more that 60 days ago:
308
+ ```
309
+ gam redirect csv ./ChromeProfileCmds.csv create chromeprofilecommand filter "lastActivityTime < \"#filtertime1#\"" filtertime1 -60d clearcache clearcookies csv
310
+ ```
311
+
312
+ Display the command status for those Chrome profile commands
313
+ ```
314
+ gam show chromeprofilecommand commands ChromeProfileCmds.csv:name
315
+ gam print chromeprofilecommand commands ChromeProfileCmds.csv:name
316
+ ```
@@ -147,7 +147,8 @@ Data fields identified in a `csvkmd` argument.
147
147
  <ChromeProfileNameEntity> ::=
148
148
  <ChromeProfileNameList> |
149
149
  (select <FileSelector>|<CSVFileSelector>) |
150
- (filter <String> (filtertime<String> <Time>)* [orderby <ChromeProfileOrderByFieldName> [ascending|descending]])
150
+ (filter <String> (filtertime<String> <Time>)* [orderby <ChromeProfileOrderByFieldName> [ascending|descending]]) |
151
+ (commands <ChromeProfileCommandNameList>|<FileSelector>|<CSVFileSelector>)
151
152
  <CIPolicyNameEntity> ::=
152
153
  <CIPolicyNameList> | <FileSelector> | <CSVFileSelector>
153
154
  <ClassificationLabelNameEntity> ::=
@@ -350,6 +351,15 @@ Data fields identified in a `csvkmd` argument.
350
351
  <SiteACLScopeList> | <FileSelector> | <CSVFileSelector> | <CSVkmdSelector> | <CSVDataSelector>
351
352
  <SiteEntity> ::=
352
353
  <SiteList> | <FileSelector> | <CSVFileSelector> | <CSVkmdSelector> | <CSVDataSelector>
354
+ <TagManagerAccountPathEntity> ::=
355
+ <TagManagerAccountPathList> |
356
+ (select <FileSelector>|<CSVFileSelector>) |
357
+ <TagManagerContainerPathEntity> ::=
358
+ <TagManagerContainerPathList> |
359
+ (select <FileSelector>|<CSVFileSelector>) |
360
+ <TagManagerWorkspacePathEntity> ::=
361
+ <TagManagerWorkspacePathList> |
362
+ (select <FileSelector>|<CSVFileSelector>) |
353
363
  <TasklistEntity> ::=
354
364
  <TasklistIDList> | <TaskListTitleList> | <FileSelector> | <CSVFileSelector>
355
365
  <TasklistIDTaskIDEntity> ::=
@@ -308,12 +308,3 @@ the quote character itself, the column delimiter (comma by default) and new-line
308
308
  When using the `formatjson` option, double quotes are used extensively in the data resulting in hard to read/process output.
309
309
  The `quotechar <Character>` option allows you to choose an alternate quote character, single quote for instance, that makes for readable/processable output.
310
310
  `quotechar` defaults to `gam.cfg/csv_output_quote_char`. When uploading CSV files to Google, double quote `"` should be used.
311
-
312
- ## Display global address list
313
- As of mid-October 2024, Google deprecated the API that retrieved the Global Address List.
314
-
315
- These commands are a work-around.
316
- ```
317
- gam config csv_output_row_filter "includeInGlobalAddressList:boolean:true" redirect csv ./UserGAL.csv print users fields name,gal
318
- gam config csv_output_row_filter "includeInGlobalAddressList:boolean:true" batch_size 25 redirect csv ./GroupGAL.csv print groups fields name,gal
319
- ```
@@ -10,6 +10,21 @@ Add the `-s` option to the end of the above commands to suppress creating the `g
10
10
 
11
11
  See [Downloads-Installs-GAM7](https://github.com/GAM-team/GAM/wiki/Downloads-Installs) for Windows or other options, including manual installation
12
12
 
13
+ ### 7.14.00
14
+
15
+ Added commands to display Google Tag Manager accounts, containers, workspaces and tags.
16
+
17
+ * See: https://github.com/GAM-team/GAM/wiki/Users-Tag-Manager
18
+
19
+ ### 7.13.03
20
+
21
+ Added option `csv [todrive <ToDriveAttribute>*] [formatjson [quotechar <Character>]]]`
22
+ to `gam create chromeprofilecommand` so that command details are displayed in CSV format.
23
+
24
+ Added option `commands <ChromeProfileCommandNameList>|<FileSelector>|<CSVFileSelector>` to `<ChromeProfileNameEntity>`
25
+ so that `gam print|show chromeprofilecommands` can directly display the commands generated by
26
+ `gam create chromeprofilecommand` with the `csv` option.
27
+
13
28
  ### 7.13.02
14
29
 
15
30
  Fixed bug in `gam create chromeprofilecommand` where `select|filter` were not recognized.
@@ -0,0 +1,17 @@
1
+ # Global Address List
2
+
3
+ As of mid-October 2024, Google deprecated the API that retrieved the Global Address List.
4
+
5
+ These commands are a work-around.
6
+
7
+ Display users/groups in GAL.
8
+ ```
9
+ gam config csv_output_row_filter "includeInGlobalAddressList:boolean:true" redirect csv ./UserGAL.csv print users fields name,gal
10
+ gam config csv_output_row_filter "includeInGlobalAddressList:boolean:true" batch_size 25 redirect csv ./GroupGAL.csv print groups fields name,gal
11
+ ```
12
+
13
+ Display users/groups not in GAL.
14
+ ```
15
+ gam config csv_output_row_filter "includeInGlobalAddressList:boolean:false" redirect csv ./UserNotGAL.csv print users fields name,gal
16
+ gam config csv_output_row_filter "includeInGlobalAddressList:boolean:false" batch_size 25 redirect csv ./GroupNotGAL.csv print groups fields name,gal
17
+ ```