gam7 7.7.12__tar.gz → 7.7.14__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 (318) hide show
  1. {gam7-7.7.12 → gam7-7.7.14}/.github/workflows/build.yml +1 -1
  2. {gam7-7.7.12 → gam7-7.7.14}/PKG-INFO +2 -2
  3. {gam7-7.7.12 → gam7-7.7.14}/pyproject.toml +1 -1
  4. {gam7-7.7.12 → gam7-7.7.14}/src/GamUpdate.txt +12 -0
  5. {gam7-7.7.12 → gam7-7.7.14}/src/gam/__init__.py +20 -3
  6. {gam7-7.7.12 → gam7-7.7.14}/src/gam/gamlib/glmsgs.py +4 -2
  7. {gam7-7.7.12 → gam7-7.7.14}/src/gam.spec +5 -1
  8. {gam7-7.7.12 → gam7-7.7.14}/src/requirements.txt +0 -1
  9. {gam7-7.7.12 → gam7-7.7.14}/src/setup.cfg +0 -1
  10. {gam7-7.7.12 → gam7-7.7.14}/wiki/GamUpdates.md +11 -0
  11. {gam7-7.7.12 → gam7-7.7.14}/wiki/How-to-Upgrade-Legacy-GAM-to-GAM7.md +2 -2
  12. {gam7-7.7.12 → gam7-7.7.14}/wiki/Shared-Drives.md +57 -10
  13. {gam7-7.7.12 → gam7-7.7.14}/wiki/Users-Drive-Copy-Move.md +17 -1
  14. {gam7-7.7.12 → gam7-7.7.14}/wiki/Users-Drive-Permissions.md +12 -1
  15. {gam7-7.7.12 → gam7-7.7.14}/wiki/Users-Shared-Drives.md +30 -0
  16. {gam7-7.7.12 → gam7-7.7.14}/wiki/Version-and-Help.md +6 -6
  17. {gam7-7.7.12 → gam7-7.7.14}/.github/ISSUE_TEMPLATE/aa-question.md +0 -0
  18. {gam7-7.7.12 → gam7-7.7.14}/.github/ISSUE_TEMPLATE/za-bug-report.md +0 -0
  19. {gam7-7.7.12 → gam7-7.7.14}/.github/ISSUE_TEMPLATE/zz-feature-request.md +0 -0
  20. {gam7-7.7.12 → gam7-7.7.14}/.github/ISSUE_TEMPLATE.txt +0 -0
  21. {gam7-7.7.12 → gam7-7.7.14}/.github/actions/decrypt.sh +0 -0
  22. {gam7-7.7.12 → gam7-7.7.14}/.github/actions/entitlements.plist +0 -0
  23. {gam7-7.7.12 → gam7-7.7.14}/.github/actions/package_exclusions.txt +0 -0
  24. {gam7-7.7.12 → gam7-7.7.14}/.github/stale.yml +0 -0
  25. {gam7-7.7.12 → gam7-7.7.14}/.github/workflows/codeql-analysis.yml +0 -0
  26. {gam7-7.7.12 → gam7-7.7.14}/.github/workflows/get-cacerts.yml +0 -0
  27. {gam7-7.7.12 → gam7-7.7.14}/.github/workflows/pushwiki.yml +0 -0
  28. {gam7-7.7.12 → gam7-7.7.14}/.github/workflows/pypi.yml +0 -0
  29. {gam7-7.7.12 → gam7-7.7.14}/.pre-commit-config.yaml +0 -0
  30. {gam7-7.7.12 → gam7-7.7.14}/LICENSE +0 -0
  31. {gam7-7.7.12 → gam7-7.7.14}/README.md +0 -0
  32. {gam7-7.7.12 → gam7-7.7.14}/src/.gitignore +0 -0
  33. {gam7-7.7.12 → gam7-7.7.14}/src/GamCommands.txt +0 -0
  34. {gam7-7.7.12 → gam7-7.7.14}/src/LICENSE +0 -0
  35. {gam7-7.7.12 → gam7-7.7.14}/src/cacerts.pem +0 -0
  36. {gam7-7.7.12 → gam7-7.7.14}/src/callgam.py +0 -0
  37. {gam7-7.7.12 → gam7-7.7.14}/src/gam/__main__.py +0 -0
  38. {gam7-7.7.12 → gam7-7.7.14}/src/gam/atom/__init__.py +0 -0
  39. {gam7-7.7.12 → gam7-7.7.14}/src/gam/atom/auth.py +0 -0
  40. {gam7-7.7.12 → gam7-7.7.14}/src/gam/atom/client.py +0 -0
  41. {gam7-7.7.12 → gam7-7.7.14}/src/gam/atom/core.py +0 -0
  42. {gam7-7.7.12 → gam7-7.7.14}/src/gam/atom/data.py +0 -0
  43. {gam7-7.7.12 → gam7-7.7.14}/src/gam/atom/http.py +0 -0
  44. {gam7-7.7.12 → gam7-7.7.14}/src/gam/atom/http_core.py +0 -0
  45. {gam7-7.7.12 → gam7-7.7.14}/src/gam/atom/http_interface.py +0 -0
  46. {gam7-7.7.12 → gam7-7.7.14}/src/gam/atom/mock_http.py +0 -0
  47. {gam7-7.7.12 → gam7-7.7.14}/src/gam/atom/mock_http_core.py +0 -0
  48. {gam7-7.7.12 → gam7-7.7.14}/src/gam/atom/mock_service.py +0 -0
  49. {gam7-7.7.12 → gam7-7.7.14}/src/gam/atom/service.py +0 -0
  50. {gam7-7.7.12 → gam7-7.7.14}/src/gam/atom/token_store.py +0 -0
  51. {gam7-7.7.12 → gam7-7.7.14}/src/gam/atom/url.py +0 -0
  52. {gam7-7.7.12 → gam7-7.7.14}/src/gam/cacerts.pem +0 -0
  53. {gam7-7.7.12 → gam7-7.7.14}/src/gam/cbcm-v1.1beta1.json +0 -0
  54. {gam7-7.7.12 → gam7-7.7.14}/src/gam/contactdelegation-v1.json +0 -0
  55. {gam7-7.7.12 → gam7-7.7.14}/src/gam/datastudio-v1.json +0 -0
  56. {gam7-7.7.12 → gam7-7.7.14}/src/gam/gamlib/__init__.py +0 -0
  57. {gam7-7.7.12 → gam7-7.7.14}/src/gam/gamlib/glaction.py +0 -0
  58. {gam7-7.7.12 → gam7-7.7.14}/src/gam/gamlib/glapi.py +0 -0
  59. {gam7-7.7.12 → gam7-7.7.14}/src/gam/gamlib/glcfg.py +0 -0
  60. {gam7-7.7.12 → gam7-7.7.14}/src/gam/gamlib/glclargs.py +0 -0
  61. {gam7-7.7.12 → gam7-7.7.14}/src/gam/gamlib/glentity.py +0 -0
  62. {gam7-7.7.12 → gam7-7.7.14}/src/gam/gamlib/glgapi.py +0 -0
  63. {gam7-7.7.12 → gam7-7.7.14}/src/gam/gamlib/glgdata.py +0 -0
  64. {gam7-7.7.12 → gam7-7.7.14}/src/gam/gamlib/glglobals.py +0 -0
  65. {gam7-7.7.12 → gam7-7.7.14}/src/gam/gamlib/glindent.py +0 -0
  66. {gam7-7.7.12 → gam7-7.7.14}/src/gam/gamlib/glskus.py +0 -0
  67. {gam7-7.7.12 → gam7-7.7.14}/src/gam/gamlib/gluprop.py +0 -0
  68. {gam7-7.7.12 → gam7-7.7.14}/src/gam/gamlib/glverlibs.py +0 -0
  69. {gam7-7.7.12 → gam7-7.7.14}/src/gam/gamlib/yubikey.py +0 -0
  70. {gam7-7.7.12 → gam7-7.7.14}/src/gam/gdata/__init__.py +0 -0
  71. {gam7-7.7.12 → gam7-7.7.14}/src/gam/gdata/alt/__init__.py +0 -0
  72. {gam7-7.7.12 → gam7-7.7.14}/src/gam/gdata/alt/app_engine.py +0 -0
  73. {gam7-7.7.12 → gam7-7.7.14}/src/gam/gdata/alt/appengine.py +0 -0
  74. {gam7-7.7.12 → gam7-7.7.14}/src/gam/gdata/apps/__init__.py +0 -0
  75. {gam7-7.7.12 → gam7-7.7.14}/src/gam/gdata/apps/audit/__init__.py +0 -0
  76. {gam7-7.7.12 → gam7-7.7.14}/src/gam/gdata/apps/audit/service.py +0 -0
  77. {gam7-7.7.12 → gam7-7.7.14}/src/gam/gdata/apps/contacts/__init__.py +0 -0
  78. {gam7-7.7.12 → gam7-7.7.14}/src/gam/gdata/apps/contacts/service.py +0 -0
  79. {gam7-7.7.12 → gam7-7.7.14}/src/gam/gdata/apps/service.py +0 -0
  80. {gam7-7.7.12 → gam7-7.7.14}/src/gam/gdata/service.py +0 -0
  81. {gam7-7.7.12 → gam7-7.7.14}/src/gam/gdata/urlfetch.py +0 -0
  82. {gam7-7.7.12 → gam7-7.7.14}/src/gam/googleapiclient/__init__.py +0 -0
  83. {gam7-7.7.12 → gam7-7.7.14}/src/gam/googleapiclient/_auth.py +0 -0
  84. {gam7-7.7.12 → gam7-7.7.14}/src/gam/googleapiclient/_helpers.py +0 -0
  85. {gam7-7.7.12 → gam7-7.7.14}/src/gam/googleapiclient/channel.py +0 -0
  86. {gam7-7.7.12 → gam7-7.7.14}/src/gam/googleapiclient/discovery.py +0 -0
  87. {gam7-7.7.12 → gam7-7.7.14}/src/gam/googleapiclient/discovery_cache/__init__.py +0 -0
  88. {gam7-7.7.12 → gam7-7.7.14}/src/gam/googleapiclient/discovery_cache/appengine_memcache.py +0 -0
  89. {gam7-7.7.12 → gam7-7.7.14}/src/gam/googleapiclient/discovery_cache/base.py +0 -0
  90. {gam7-7.7.12 → gam7-7.7.14}/src/gam/googleapiclient/discovery_cache/file_cache.py +0 -0
  91. {gam7-7.7.12 → gam7-7.7.14}/src/gam/googleapiclient/errors.py +0 -0
  92. {gam7-7.7.12 → gam7-7.7.14}/src/gam/googleapiclient/http.py +0 -0
  93. {gam7-7.7.12 → gam7-7.7.14}/src/gam/googleapiclient/mimeparse.py +0 -0
  94. {gam7-7.7.12 → gam7-7.7.14}/src/gam/googleapiclient/model.py +0 -0
  95. {gam7-7.7.12 → gam7-7.7.14}/src/gam/googleapiclient/schema.py +0 -0
  96. {gam7-7.7.12 → gam7-7.7.14}/src/gam/googleapiclient/version.py +0 -0
  97. {gam7-7.7.12 → gam7-7.7.14}/src/gam/iso8601/__init__.py +0 -0
  98. {gam7-7.7.12 → gam7-7.7.14}/src/gam/iso8601/iso8601.py +0 -0
  99. {gam7-7.7.12 → gam7-7.7.14}/src/gam/meet-v2beta.json +0 -0
  100. {gam7-7.7.12 → gam7-7.7.14}/src/gam/serviceaccountlookup-v1.json +0 -0
  101. {gam7-7.7.12 → gam7-7.7.14}/src/gam/six.py +0 -0
  102. {gam7-7.7.12 → gam7-7.7.14}/src/gam-install.sh +0 -0
  103. {gam7-7.7.12 → gam7-7.7.14}/src/gam-setup.bat +0 -0
  104. {gam7-7.7.12 → gam7-7.7.14}/src/gam.exe.manifest +0 -0
  105. {gam7-7.7.12 → gam7-7.7.14}/src/gam.py +0 -0
  106. {gam7-7.7.12 → gam7-7.7.14}/src/gam.wxs +0 -0
  107. {gam7-7.7.12 → gam7-7.7.14}/src/license.rtf +0 -0
  108. {gam7-7.7.12 → gam7-7.7.14}/src/requirements-dev.txt +0 -0
  109. {gam7-7.7.12 → gam7-7.7.14}/src/setup.py +0 -0
  110. {gam7-7.7.12 → gam7-7.7.14}/src/tools/a_atleast_b.py +0 -0
  111. {gam7-7.7.12 → gam7-7.7.14}/src/tools/gen-wix-xml-filelist.py +0 -0
  112. {gam7-7.7.12 → gam7-7.7.14}/src/tools/mkGamRef.py +0 -0
  113. {gam7-7.7.12 → gam7-7.7.14}/src/tools/openssl.props +0 -0
  114. {gam7-7.7.12 → gam7-7.7.14}/src/version_info.txt.in +0 -0
  115. {gam7-7.7.12 → gam7-7.7.14}/wiki/00scratch.md +0 -0
  116. {gam7-7.7.12 → gam7-7.7.14}/wiki/Addresses.md +0 -0
  117. {gam7-7.7.12 → gam7-7.7.14}/wiki/Administrators.md +0 -0
  118. {gam7-7.7.12 → gam7-7.7.14}/wiki/Alert-Center.md +0 -0
  119. {gam7-7.7.12 → gam7-7.7.14}/wiki/Aliases.md +0 -0
  120. {gam7-7.7.12 → gam7-7.7.14}/wiki/Authorization.md +0 -0
  121. {gam7-7.7.12 → gam7-7.7.14}/wiki/BNF-Syntax.md +0 -0
  122. {gam7-7.7.12 → gam7-7.7.14}/wiki/Basic-Items.md +0 -0
  123. {gam7-7.7.12 → gam7-7.7.14}/wiki/Bulk-Processing.md +0 -0
  124. {gam7-7.7.12 → gam7-7.7.14}/wiki/CSV-Input-Filtering.md +0 -0
  125. {gam7-7.7.12 → gam7-7.7.14}/wiki/CSV-Output-Filtering.md +0 -0
  126. {gam7-7.7.12 → gam7-7.7.14}/wiki/CSV-Special-Characters.md +0 -0
  127. {gam7-7.7.12 → gam7-7.7.14}/wiki/Calendars-Access.md +0 -0
  128. {gam7-7.7.12 → gam7-7.7.14}/wiki/Calendars-Events.md +0 -0
  129. {gam7-7.7.12 → gam7-7.7.14}/wiki/Calendars.md +0 -0
  130. {gam7-7.7.12 → gam7-7.7.14}/wiki/Chat-Bot.md +0 -0
  131. {gam7-7.7.12 → gam7-7.7.14}/wiki/Chrome-AUE-Counts.md +0 -0
  132. {gam7-7.7.12 → gam7-7.7.14}/wiki/Chrome-Browser-Cloud-Management.md +0 -0
  133. {gam7-7.7.12 → gam7-7.7.14}/wiki/Chrome-Installed-Apps.md +0 -0
  134. {gam7-7.7.12 → gam7-7.7.14}/wiki/Chrome-Needs-Attention-Counts.md +0 -0
  135. {gam7-7.7.12 → gam7-7.7.14}/wiki/Chrome-Policies.md +0 -0
  136. {gam7-7.7.12 → gam7-7.7.14}/wiki/Chrome-Printers.md +0 -0
  137. {gam7-7.7.12 → gam7-7.7.14}/wiki/Chrome-Profile-Management.md +0 -0
  138. {gam7-7.7.12 → gam7-7.7.14}/wiki/Chrome-Version-Counts.md +0 -0
  139. {gam7-7.7.12 → gam7-7.7.14}/wiki/Chrome-Version-History.md +0 -0
  140. {gam7-7.7.12 → gam7-7.7.14}/wiki/ChromeOS-Devices.md +0 -0
  141. {gam7-7.7.12 → gam7-7.7.14}/wiki/Classroom-Courses.md +0 -0
  142. {gam7-7.7.12 → gam7-7.7.14}/wiki/Classroom-Guardians.md +0 -0
  143. {gam7-7.7.12 → gam7-7.7.14}/wiki/Classroom-Invitations.md +0 -0
  144. {gam7-7.7.12 → gam7-7.7.14}/wiki/Classroom-Membership.md +0 -0
  145. {gam7-7.7.12 → gam7-7.7.14}/wiki/Cloud-Channel.md +0 -0
  146. {gam7-7.7.12 → gam7-7.7.14}/wiki/Cloud-Identity-Devices.md +0 -0
  147. {gam7-7.7.12 → gam7-7.7.14}/wiki/Cloud-Identity-Groups-Membership.md +0 -0
  148. {gam7-7.7.12 → gam7-7.7.14}/wiki/Cloud-Identity-Groups.md +0 -0
  149. {gam7-7.7.12 → gam7-7.7.14}/wiki/Cloud-Identity-Policies.md +0 -0
  150. {gam7-7.7.12 → gam7-7.7.14}/wiki/Cloud-Storage.md +0 -0
  151. {gam7-7.7.12 → gam7-7.7.14}/wiki/Collections-of-ChromeOS-Devices.md +0 -0
  152. {gam7-7.7.12 → gam7-7.7.14}/wiki/Collections-of-Items.md +0 -0
  153. {gam7-7.7.12 → gam7-7.7.14}/wiki/Collections-of-Users.md +0 -0
  154. {gam7-7.7.12 → gam7-7.7.14}/wiki/Command-Data-From-Google-Docs-Sheets-Storage.md +0 -0
  155. {gam7-7.7.12 → gam7-7.7.14}/wiki/Command-Line-Parsing.md +0 -0
  156. {gam7-7.7.12 → gam7-7.7.14}/wiki/Command-Logging-Progress.md +0 -0
  157. {gam7-7.7.12 → gam7-7.7.14}/wiki/Context-Aware-Access-Levels.md +0 -0
  158. {gam7-7.7.12 → gam7-7.7.14}/wiki/Customer.md +0 -0
  159. {gam7-7.7.12 → gam7-7.7.14}/wiki/Domain-People-Contacts-Profiles.md +0 -0
  160. {gam7-7.7.12 → gam7-7.7.14}/wiki/Domain-SharedContacts.md +0 -0
  161. {gam7-7.7.12 → gam7-7.7.14}/wiki/Domains-Verification.md +0 -0
  162. {gam7-7.7.12 → gam7-7.7.14}/wiki/Domains.md +0 -0
  163. {gam7-7.7.12 → gam7-7.7.14}/wiki/Downloads-Installs.md +0 -0
  164. {gam7-7.7.12 → gam7-7.7.14}/wiki/Drive-File-Selection.md +0 -0
  165. {gam7-7.7.12 → gam7-7.7.14}/wiki/Drive-Items.md +0 -0
  166. {gam7-7.7.12 → gam7-7.7.14}/wiki/Drive-REST-API-v3.md +0 -0
  167. {gam7-7.7.12 → gam7-7.7.14}/wiki/Email-Audit-Monitor.md +0 -0
  168. {gam7-7.7.12 → gam7-7.7.14}/wiki/Find-File-Owner.md +0 -0
  169. {gam7-7.7.12 → gam7-7.7.14}/wiki/GAM-Public-Chat-Room.md +0 -0
  170. {gam7-7.7.12 → gam7-7.7.14}/wiki/GAM-Return-Codes.md +0 -0
  171. {gam7-7.7.12 → gam7-7.7.14}/wiki/GAM-with-minimal-GCP-rights.md +0 -0
  172. {gam7-7.7.12 → gam7-7.7.14}/wiki/GAM7-on-Android-Devices.md +0 -0
  173. {gam7-7.7.12 → gam7-7.7.14}/wiki/GAM7-on-Chrome-OS-Devices.md +0 -0
  174. {gam7-7.7.12 → gam7-7.7.14}/wiki/Google-Data-Transfers.md +0 -0
  175. {gam7-7.7.12 → gam7-7.7.14}/wiki/Google-Network-Addresses.md +0 -0
  176. {gam7-7.7.12 → gam7-7.7.14}/wiki/Groups-Membership.md +0 -0
  177. {gam7-7.7.12 → gam7-7.7.14}/wiki/Groups.md +0 -0
  178. {gam7-7.7.12 → gam7-7.7.14}/wiki/HTTPS-Proxy.md +0 -0
  179. {gam7-7.7.12 → gam7-7.7.14}/wiki/Home.md +0 -0
  180. {gam7-7.7.12 → gam7-7.7.14}/wiki/How-to-Install-GAM7.md +0 -0
  181. {gam7-7.7.12 → gam7-7.7.14}/wiki/How-to-Uninstall-GAM7.md +0 -0
  182. {gam7-7.7.12 → gam7-7.7.14}/wiki/How-to-Update-GAM7.md +0 -0
  183. {gam7-7.7.12 → gam7-7.7.14}/wiki/How-to-Upgrade-GAMADV-XTD3-to-GAM7.md +0 -0
  184. {gam7-7.7.12 → gam7-7.7.14}/wiki/Inbound-SSO.md +0 -0
  185. {gam7-7.7.12 → gam7-7.7.14}/wiki/Install-GAM-as-Python-Library.md +0 -0
  186. {gam7-7.7.12 → gam7-7.7.14}/wiki/Licenses.md +0 -0
  187. {gam7-7.7.12 → gam7-7.7.14}/wiki/List-Items.md +0 -0
  188. {gam7-7.7.12 → gam7-7.7.14}/wiki/List.md +0 -0
  189. {gam7-7.7.12 → gam7-7.7.14}/wiki/Meta-Commands-and-File-Redirection.md +0 -0
  190. {gam7-7.7.12 → gam7-7.7.14}/wiki/Mobile-Devices.md +0 -0
  191. {gam7-7.7.12 → gam7-7.7.14}/wiki/Organizational-Units.md +0 -0
  192. {gam7-7.7.12 → gam7-7.7.14}/wiki/Other-Resources.md +0 -0
  193. {gam7-7.7.12 → gam7-7.7.14}/wiki/Permission-Matches.md +0 -0
  194. {gam7-7.7.12 → gam7-7.7.14}/wiki/Python-Regular-Expressions.md +0 -0
  195. {gam7-7.7.12 → gam7-7.7.14}/wiki/README.md +0 -0
  196. {gam7-7.7.12 → gam7-7.7.14}/wiki/Rclone.md +0 -0
  197. {gam7-7.7.12 → gam7-7.7.14}/wiki/Reports.md +0 -0
  198. {gam7-7.7.12 → gam7-7.7.14}/wiki/Reseller.md +0 -0
  199. {gam7-7.7.12 → gam7-7.7.14}/wiki/Resources.md +0 -0
  200. {gam7-7.7.12 → gam7-7.7.14}/wiki/Running-GAM7-securely-on-a-Google-Compute-Engine.md +0 -0
  201. {gam7-7.7.12 → gam7-7.7.14}/wiki/SSL-Root-CA-Certificates.md +0 -0
  202. {gam7-7.7.12 → gam7-7.7.14}/wiki/Schemas.md +0 -0
  203. {gam7-7.7.12 → gam7-7.7.14}/wiki/Scripts.md +0 -0
  204. {gam7-7.7.12 → gam7-7.7.14}/wiki/Send-Email.md +0 -0
  205. {gam7-7.7.12 → gam7-7.7.14}/wiki/Sites.md +0 -0
  206. {gam7-7.7.12 → gam7-7.7.14}/wiki/Tag-Replace.md +0 -0
  207. {gam7-7.7.12 → gam7-7.7.14}/wiki/Todrive.md +0 -0
  208. {gam7-7.7.12 → gam7-7.7.14}/wiki/Unmanaged-Accounts.md +0 -0
  209. {gam7-7.7.12 → gam7-7.7.14}/wiki/Upgrade-Benefits.md +0 -0
  210. {gam7-7.7.12 → gam7-7.7.14}/wiki/Users-Analytics-Admin.md +0 -0
  211. {gam7-7.7.12 → gam7-7.7.14}/wiki/Users-Application-Specific-Passwords.md +0 -0
  212. {gam7-7.7.12 → gam7-7.7.14}/wiki/Users-Backup-Verification-Codes.md +0 -0
  213. {gam7-7.7.12 → gam7-7.7.14}/wiki/Users-Calendars-Access.md +0 -0
  214. {gam7-7.7.12 → gam7-7.7.14}/wiki/Users-Calendars-Events.md +0 -0
  215. {gam7-7.7.12 → gam7-7.7.14}/wiki/Users-Calendars.md +0 -0
  216. {gam7-7.7.12 → gam7-7.7.14}/wiki/Users-Chat.md +0 -0
  217. {gam7-7.7.12 → gam7-7.7.14}/wiki/Users-Classification-Labels.md +0 -0
  218. {gam7-7.7.12 → gam7-7.7.14}/wiki/Users-Classroom-Profile.md +0 -0
  219. {gam7-7.7.12 → gam7-7.7.14}/wiki/Users-Contacts-Delegates.md +0 -0
  220. {gam7-7.7.12 → gam7-7.7.14}/wiki/Users-Contacts.md +0 -0
  221. {gam7-7.7.12 → gam7-7.7.14}/wiki/Users-Deprovision.md +0 -0
  222. {gam7-7.7.12 → gam7-7.7.14}/wiki/Users-Drive-Activity-Settings.md +0 -0
  223. {gam7-7.7.12 → gam7-7.7.14}/wiki/Users-Drive-Cleanup.md +0 -0
  224. {gam7-7.7.12 → gam7-7.7.14}/wiki/Users-Drive-Comments.md +0 -0
  225. {gam7-7.7.12 → gam7-7.7.14}/wiki/Users-Drive-Files-Display.md +0 -0
  226. {gam7-7.7.12 → gam7-7.7.14}/wiki/Users-Drive-Files-Manage.md +0 -0
  227. {gam7-7.7.12 → gam7-7.7.14}/wiki/Users-Drive-Orphans.md +0 -0
  228. {gam7-7.7.12 → gam7-7.7.14}/wiki/Users-Drive-Ownership.md +0 -0
  229. {gam7-7.7.12 → gam7-7.7.14}/wiki/Users-Drive-Query.md +0 -0
  230. {gam7-7.7.12 → gam7-7.7.14}/wiki/Users-Drive-Revisions.md +0 -0
  231. {gam7-7.7.12 → gam7-7.7.14}/wiki/Users-Drive-Shortcuts.md +0 -0
  232. {gam7-7.7.12 → gam7-7.7.14}/wiki/Users-Drive-Transfer.md +0 -0
  233. {gam7-7.7.12 → gam7-7.7.14}/wiki/Users-Forms.md +0 -0
  234. {gam7-7.7.12 → gam7-7.7.14}/wiki/Users-Gmail-CSE.md +0 -0
  235. {gam7-7.7.12 → gam7-7.7.14}/wiki/Users-Gmail-Delegates.md +0 -0
  236. {gam7-7.7.12 → gam7-7.7.14}/wiki/Users-Gmail-Filters.md +0 -0
  237. {gam7-7.7.12 → gam7-7.7.14}/wiki/Users-Gmail-Forwarding.md +0 -0
  238. {gam7-7.7.12 → gam7-7.7.14}/wiki/Users-Gmail-Labels.md +0 -0
  239. {gam7-7.7.12 → gam7-7.7.14}/wiki/Users-Gmail-Messages-Threads.md +0 -0
  240. {gam7-7.7.12 → gam7-7.7.14}/wiki/Users-Gmail-Profile.md +0 -0
  241. {gam7-7.7.12 → gam7-7.7.14}/wiki/Users-Gmail-S-MIME.md +0 -0
  242. {gam7-7.7.12 → gam7-7.7.14}/wiki/Users-Gmail-Send-As-Signature-Vacation.md +0 -0
  243. {gam7-7.7.12 → gam7-7.7.14}/wiki/Users-Gmail-Settings.md +0 -0
  244. {gam7-7.7.12 → gam7-7.7.14}/wiki/Users-Group-Membership.md +0 -0
  245. {gam7-7.7.12 → gam7-7.7.14}/wiki/Users-Keep-Notes.md +0 -0
  246. {gam7-7.7.12 → gam7-7.7.14}/wiki/Users-Looker-Studio.md +0 -0
  247. {gam7-7.7.12 → gam7-7.7.14}/wiki/Users-Meet.md +0 -0
  248. {gam7-7.7.12 → gam7-7.7.14}/wiki/Users-People-Contacts-Profiles.md +0 -0
  249. {gam7-7.7.12 → gam7-7.7.14}/wiki/Users-Photo.md +0 -0
  250. {gam7-7.7.12 → gam7-7.7.14}/wiki/Users-Profile-Photo.md +0 -0
  251. {gam7-7.7.12 → gam7-7.7.14}/wiki/Users-Profile-Sharing.md +0 -0
  252. {gam7-7.7.12 → gam7-7.7.14}/wiki/Users-Signout-Turnoff2SV.md +0 -0
  253. {gam7-7.7.12 → gam7-7.7.14}/wiki/Users-Spreadsheets.md +0 -0
  254. {gam7-7.7.12 → gam7-7.7.14}/wiki/Users-Tasks.md +0 -0
  255. {gam7-7.7.12 → gam7-7.7.14}/wiki/Users-Tokens.md +0 -0
  256. {gam7-7.7.12 → gam7-7.7.14}/wiki/Users-YouTube.md +0 -0
  257. {gam7-7.7.12 → gam7-7.7.14}/wiki/Users.md +0 -0
  258. {gam7-7.7.12 → gam7-7.7.14}/wiki/Using-GAM7-with-a-YubiKey.md +0 -0
  259. {gam7-7.7.12 → gam7-7.7.14}/wiki/Using-GAM7-with-a-delegated-admin-service-account.md +0 -0
  260. {gam7-7.7.12 → gam7-7.7.14}/wiki/Vault-Takeout.md +0 -0
  261. {gam7-7.7.12 → gam7-7.7.14}/wiki/Verifying-a-GAM7-Build-is-Legitimate-and-Official.md +0 -0
  262. {gam7-7.7.12 → gam7-7.7.14}/wiki/_Sidebar.md +0 -0
  263. {gam7-7.7.12 → gam7-7.7.14}/wiki/gam.cfg.md +0 -0
  264. {gam7-7.7.12 → gam7-7.7.14}/wiki/l-AdminSettingsExamples.md +0 -0
  265. {gam7-7.7.12 → gam7-7.7.14}/wiki/l-Android-Installation.md +0 -0
  266. {gam7-7.7.12 → gam7-7.7.14}/wiki/l-BulkOperations.md +0 -0
  267. {gam7-7.7.12 → gam7-7.7.14}/wiki/l-CalendarExamples.md +0 -0
  268. {gam7-7.7.12 → gam7-7.7.14}/wiki/l-Chat-Bot.md +0 -0
  269. {gam7-7.7.12 → gam7-7.7.14}/wiki/l-Chrome-Browser-Management.md +0 -0
  270. {gam7-7.7.12 → gam7-7.7.14}/wiki/l-Chrome-OS-Installation.md +0 -0
  271. {gam7-7.7.12 → gam7-7.7.14}/wiki/l-Chrome-Policy-Settings.md +0 -0
  272. {gam7-7.7.12 → gam7-7.7.14}/wiki/l-Cloud-Identity-Groups.md +0 -0
  273. {gam7-7.7.12 → gam7-7.7.14}/wiki/l-Command-Reference-Calendar-Resources.md +0 -0
  274. {gam7-7.7.12 → gam7-7.7.14}/wiki/l-Command-Reference-Calendars.md +0 -0
  275. {gam7-7.7.12 → gam7-7.7.14}/wiki/l-Command-Reference-Definitions.md +0 -0
  276. {gam7-7.7.12 → gam7-7.7.14}/wiki/l-Command-Reference-Drive.md +0 -0
  277. {gam7-7.7.12 → gam7-7.7.14}/wiki/l-Command-Reference-Email.md +0 -0
  278. {gam7-7.7.12 → gam7-7.7.14}/wiki/l-Command-Reference-Group-Attributes.md +0 -0
  279. {gam7-7.7.12 → gam7-7.7.14}/wiki/l-Command-Reference-Groups.md +0 -0
  280. {gam7-7.7.12 → gam7-7.7.14}/wiki/l-Command-Reference-Users.md +0 -0
  281. {gam7-7.7.12 → gam7-7.7.14}/wiki/l-Context-Aware-Access-Levels.md +0 -0
  282. {gam7-7.7.12 → gam7-7.7.14}/wiki/l-Creating-client_secrets.json-and-oauth2service.json.md +0 -0
  283. {gam7-7.7.12 → gam7-7.7.14}/wiki/l-CreatingClientSecretsFile.md +0 -0
  284. {gam7-7.7.12 → gam7-7.7.14}/wiki/l-Custom-Schemas.md +0 -0
  285. {gam7-7.7.12 → gam7-7.7.14}/wiki/l-Data-Transfers.md +0 -0
  286. {gam7-7.7.12 → gam7-7.7.14}/wiki/l-DomainVerification.md +0 -0
  287. {gam7-7.7.12 → gam7-7.7.14}/wiki/l-ExamplesAccountAuditing.md +0 -0
  288. {gam7-7.7.12 → gam7-7.7.14}/wiki/l-ExamplesCSV.md +0 -0
  289. {gam7-7.7.12 → gam7-7.7.14}/wiki/l-ExamplesEmailSettings.md +0 -0
  290. {gam7-7.7.12 → gam7-7.7.14}/wiki/l-ExamplesOrganizations.md +0 -0
  291. {gam7-7.7.12 → gam7-7.7.14}/wiki/l-GAM-Discussion-Group.md +0 -0
  292. {gam7-7.7.12 → gam7-7.7.14}/wiki/l-GAM-on-Android-and-Chrome-OS.md +0 -0
  293. {gam7-7.7.12 → gam7-7.7.14}/wiki/l-GAM-options-files.md +0 -0
  294. {gam7-7.7.12 → gam7-7.7.14}/wiki/l-GAM-with--minimal-GCP-rights.md +0 -0
  295. {gam7-7.7.12 → gam7-7.7.14}/wiki/l-GAM3CSVListings.md +0 -0
  296. {gam7-7.7.12 → gam7-7.7.14}/wiki/l-GAM3DirectoryCommands.md +0 -0
  297. {gam7-7.7.12 → gam7-7.7.14}/wiki/l-GAM3GroupSettings.md +0 -0
  298. {gam7-7.7.12 → gam7-7.7.14}/wiki/l-GAM7-FAQ.md +0 -0
  299. {gam7-7.7.12 → gam7-7.7.14}/wiki/l-Google-Vault---Takeout-Commands.md +0 -0
  300. {gam7-7.7.12 → gam7-7.7.14}/wiki/l-GoogleDriveManagement.md +0 -0
  301. {gam7-7.7.12 → gam7-7.7.14}/wiki/l-Grouping-18-or-Older-Users.md +0 -0
  302. {gam7-7.7.12 → gam7-7.7.14}/wiki/l-Home.md +0 -0
  303. {gam7-7.7.12 → gam7-7.7.14}/wiki/l-How-to-upgrade-from-Standard-GAM.md +0 -0
  304. {gam7-7.7.12 → gam7-7.7.14}/wiki/l-Inbound-SSO-Settings.md +0 -0
  305. {gam7-7.7.12 → gam7-7.7.14}/wiki/l-LicenseExamples.md +0 -0
  306. {gam7-7.7.12 → gam7-7.7.14}/wiki/l-Managing-Admins.md +0 -0
  307. {gam7-7.7.12 → gam7-7.7.14}/wiki/l-Managing-CloudPrint-Printers.md +0 -0
  308. {gam7-7.7.12 → gam7-7.7.14}/wiki/l-Managing-Devices.md +0 -0
  309. {gam7-7.7.12 → gam7-7.7.14}/wiki/l-Managing-Google-Classroom.md +0 -0
  310. {gam7-7.7.12 → gam7-7.7.14}/wiki/l-OAuthKeyManagement.md +0 -0
  311. {gam7-7.7.12 → gam7-7.7.14}/wiki/l-Printers.md +0 -0
  312. {gam7-7.7.12 → gam7-7.7.14}/wiki/l-ResellerCommands.md +0 -0
  313. {gam7-7.7.12 → gam7-7.7.14}/wiki/l-Running-GAM-on-Google-Compute-Engine-(GCE)-Securely.md +0 -0
  314. {gam7-7.7.12 → gam7-7.7.14}/wiki/l-SecurityExamples.md +0 -0
  315. {gam7-7.7.12 → gam7-7.7.14}/wiki/l-UnmanagedUsersExamples.md +0 -0
  316. {gam7-7.7.12 → gam7-7.7.14}/wiki/l-Use-a-Yubikey.md +0 -0
  317. {gam7-7.7.12 → gam7-7.7.14}/wiki/l-Using-GAM-with-a-delegated-admin-service-account-(DASA).md +0 -0
  318. {gam7-7.7.12 → gam7-7.7.14}/wiki/l-_Footer.md +0 -0
@@ -449,7 +449,7 @@ jobs:
449
449
  "$PYTHON" get-pip.py
450
450
  "$PYTHON" -m pip install --upgrade pip
451
451
  "$PYTHON" -m pip install --upgrade wheel
452
- "$PYTHON" -m pip install --upgrade setuptools
452
+ "$PYTHON" -m pip install setuptools
453
453
  "$PYTHON" -m pip install --upgrade importlib-metadata
454
454
  "$PYTHON" -m pip install --upgrade setuptools-scm
455
455
  "$PYTHON" -m pip list
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gam7
3
- Version: 7.7.12
3
+ Version: 7.7.14
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
@@ -30,8 +30,8 @@ Requires-Dist: httplib2>=0.22.0
30
30
  Requires-Dist: lxml>=5.4.0
31
31
  Requires-Dist: passlib>=1.7.4
32
32
  Requires-Dist: pathvalidate>=3.2.3
33
- Requires-Dist: pyscard==2.2.1
34
33
  Requires-Dist: python-dateutil
34
+ Requires-Dist: yubikey-manager>=5.6.1
35
35
  Provides-Extra: yubikey
36
36
  Requires-Dist: yubikey-manager>=5.6.1; extra == 'yubikey'
37
37
  Description-Content-Type: text/markdown
@@ -21,8 +21,8 @@ dependencies = [
21
21
  "lxml>=5.4.0",
22
22
  "passlib>=1.7.4",
23
23
  "pathvalidate>=3.2.3",
24
- "pyscard==2.2.1",
25
24
  "python-dateutil",
25
+ "yubikey-manager>=5.6.1",
26
26
  ]
27
27
  description = "CLI tool to manage Google Workspace"
28
28
  readme = "README.md"
@@ -1,3 +1,15 @@
1
+ 7.07.14
2
+
3
+ Update `gam setup chat` output to include the following that shows the actual Cloud Pub/Sub Topic Name.
4
+ ```
5
+ You'll use projects/<ProjectID>/topics/no-topic in Connection settings Cloud Pub/Sub Topic Name
6
+ ```
7
+
8
+ 7.07.13
9
+
10
+ Added option `showitemcountonly` to `gam [<UserTypeEntity>] print|show shareddrives` that causes GAM to display the
11
+ number of Shared Drives on stdout; no CSV file is written.
12
+
1
13
  7.07.12
2
14
 
3
15
  Fixed bug in `gam print|show oushareddrives` that caused a trap.
@@ -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.07.12'
28
+ __version__ = '7.07.14'
29
29
  __license__ = 'Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)'
30
30
 
31
31
  #pylint: disable=wrong-import-position
@@ -25949,7 +25949,7 @@ def _printChatItem(user, citem, parent, entityType, csvPF, FJQC, addCSVData=None
25949
25949
  def doSetupChat():
25950
25950
  checkForExtraneousArguments()
25951
25951
  _, chat , _ = buildChatServiceObject()
25952
- writeStdout(Msg.TO_SET_UP_GOOGLE_CHAT.format(setupChatURL(chat)))
25952
+ writeStdout(Msg.TO_SET_UP_GOOGLE_CHAT.format(setupChatURL(chat), GM.Globals[GM.OAUTH2SERVICE_JSON_DATA]['project_id']))
25953
25953
 
25954
25954
  def getSpaceName(myarg):
25955
25955
  if myarg == 'space':
@@ -59838,6 +59838,7 @@ def copyDriveFile(users):
59838
59838
  # Source at root of Shared Drive?
59839
59839
  sourceMimeType = source['mimeType']
59840
59840
  if sourceMimeType == MIMETYPE_GA_FOLDER and source.get('driveId') and source['name'] == TEAM_DRIVE and not source.get('parents', []):
59841
+ copyMoveOptions['sourceIsMyDriveSharedDrive'] = True
59841
59842
  source['name'] = _getSharedDriveNameFromId(drive, source['driveId'])
59842
59843
  sourceName = source['name']
59843
59844
  sourceNameId = f"{sourceName}({source['id']})"
@@ -65416,12 +65417,14 @@ SHAREDDRIVE_ACL_ROLES_MAP = {
65416
65417
  # (role|roles <SharedDriveACLRoleList>)*
65417
65418
  # [fields <SharedDriveFieldNameList>] [noorgunits [<Boolean>]]
65418
65419
  # [guiroles [<Boolean>]] [formatjson [quotechar <Character>]]
65420
+ # [showitemcountonly]
65419
65421
  # gam <UserTypeEntity> show shareddrives
65420
65422
  # [asadmin [shareddriveadminquery|query <QuerySharedDrive>]]
65421
65423
  # [matchname <REMatchPattrn>] [orgunit|org|ou <OrgUnitPath>]
65422
65424
  # (role|roles <SharedDriveACLRoleLIst>)*
65423
65425
  # [fields <SharedDriveFieldNameList>] [noorgunits [<Boolean>]]
65424
65426
  # [guiroles [<Boolean>]] [formatjson]
65427
+ # [showitemcountonly]
65425
65428
  def printShowSharedDrives(users, useDomainAdminAccess=False):
65426
65429
  def stripNonShowFields(shareddrive):
65427
65430
  if orgUnitIdToPathMap:
@@ -65445,7 +65448,7 @@ def printShowSharedDrives(users, useDomainAdminAccess=False):
65445
65448
  SHAREDDRIVE_FIELDS_CHOICE_MAP.update(SHAREDDRIVE_LIST_FIELDS_CHOICE_MAP)
65446
65449
  showOrgUnitPaths = True
65447
65450
  orgUnitIdToPathMap = None
65448
- guiRoles = False
65451
+ guiRoles = showItemCountOnly = False
65449
65452
  while Cmd.ArgumentsRemaining():
65450
65453
  myarg = getArgument()
65451
65454
  if csvPF and myarg == 'todrive':
@@ -65475,6 +65478,9 @@ def printShowSharedDrives(users, useDomainAdminAccess=False):
65475
65478
  showOrgUnitPaths = not getBoolean()
65476
65479
  elif myarg == 'guiroles':
65477
65480
  guiRoles = getBoolean()
65481
+ elif myarg == 'showitemcountonly':
65482
+ showItemCountOnly = True
65483
+ showOrgUnitPaths = False
65478
65484
  else:
65479
65485
  FJQC.GetFormatJSONQuoteChar(myarg, True)
65480
65486
  if query and not useDomainAdminAccess:
@@ -65544,6 +65550,9 @@ def printShowSharedDrives(users, useDomainAdminAccess=False):
65544
65550
  jcount = len(matchedFeed)
65545
65551
  if jcount == 0:
65546
65552
  setSysExitRC(NO_ENTITIES_FOUND_RC)
65553
+ if showItemCountOnly:
65554
+ writeStdout(f'{jcount}\n')
65555
+ return
65547
65556
  if not csvPF:
65548
65557
  if not FJQC.formatJSON:
65549
65558
  entityPerformActionNumItems([Ent.USER, user], jcount, Ent.SHAREDDRIVE, i, count)
@@ -65574,9 +65583,11 @@ def doPrintShowSharedDrives():
65574
65583
  # gam print oushareddrives [todrive <ToDriveAttribute>*]
65575
65584
  # [ou|org|orgunit <OrgUnitPath>]
65576
65585
  # [formatjson [quotechar <Character>]]
65586
+ # [showitemcountonly]
65577
65587
  # gam show oushareddrives
65578
65588
  # [ou|org|orgunit <OrgUnitPath>]
65579
65589
  # [formatjson]
65590
+ # [showitemcountonly]
65580
65591
  def doPrintShowOrgunitSharedDrives():
65581
65592
  def _getOrgUnitSharedDriveInfo(shareddrive):
65582
65593
  shareddrive['driveId'] = shareddrive['name'].rsplit(';')[1]
@@ -65605,12 +65616,15 @@ def doPrintShowOrgunitSharedDrives():
65605
65616
  csvPF = CSVPrintFile(['name', 'type', 'member', 'memberUri', 'driveId', 'driveName', 'orgUnitPath']) if Act.csvFormat() else None
65606
65617
  FJQC = FormatJSONQuoteChar(csvPF)
65607
65618
  orgUnitPath = '/'
65619
+ showItemCountOnly = False
65608
65620
  while Cmd.ArgumentsRemaining():
65609
65621
  myarg = getArgument()
65610
65622
  if csvPF and myarg == 'todrive':
65611
65623
  csvPF.GetTodriveParameters()
65612
65624
  elif myarg in {'ou', 'org', 'orgunit'}:
65613
65625
  orgUnitPath = getString(Cmd.OB_ORGUNIT_ITEM)
65626
+ elif myarg == 'showitemcountonly':
65627
+ showItemCountOnly = True
65614
65628
  else:
65615
65629
  FJQC.GetFormatJSONQuoteChar(myarg, True)
65616
65630
  if csvPF and FJQC.formatJSON:
@@ -65625,6 +65639,9 @@ def doPrintShowOrgunitSharedDrives():
65625
65639
  jcount = len(sds)
65626
65640
  if jcount == 0:
65627
65641
  setSysExitRC(NO_ENTITIES_FOUND_RC)
65642
+ if showItemCountOnly:
65643
+ writeStdout(f'{jcount}\n')
65644
+ return
65628
65645
  if not csvPF:
65629
65646
  if not FJQC.formatJSON:
65630
65647
  entityPerformActionNumItems([Ent.ORGANIZATIONAL_UNIT, orgUnitPath], jcount, Ent.SHAREDDRIVE)
@@ -1,6 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
2
 
3
- # Copyright (C) 2024 Ross Scroggs All Rights Reserved.
3
+ # Copyright (C) 2025 Ross Scroggs All Rights Reserved.
4
4
  #
5
5
  # All Rights Reserved.
6
6
  #
@@ -504,13 +504,15 @@ TO = 'To'
504
504
  TO_LC = 'to'
505
505
  TO_MAXIMUM_OF = 'to maximum of'
506
506
  TO_SET_UP_GOOGLE_CHAT = """
507
- To set up Google Chat for your API project, please go to:
507
+ To set up Google Chat for your current project, please go to:
508
508
 
509
509
  {0}
510
510
 
511
511
  and follow the instructions at:
512
512
 
513
513
  https://github.com/GAM-team/GAM/wiki/Chat-Bot#set-up-a-chat-bot
514
+
515
+ You'll use projects/{1}/topics/no-topic in Connection settings Cloud Pub/Sub Topic Name
514
516
  """
515
517
  TOTAL_ITEMS_IN_ENTITY = 'Total {0} in {1}'
516
518
  TRIMMED_MESSAGE_FROM_LENGTH_TO_MAXIMUM = 'Trimmed message of length {0} to maximum length {1}'
@@ -38,6 +38,10 @@ hiddenimports = [
38
38
  'gam.gamlib.yubikey',
39
39
  ]
40
40
 
41
+ excludes = [
42
+ 'pkg_resources',
43
+ ]
44
+
41
45
  runtime_hooks = []
42
46
  a = Analysis(
43
47
  ['gam/__main__.py'],
@@ -48,7 +52,7 @@ a = Analysis(
48
52
  hookspath=[],
49
53
  hooksconfig={},
50
54
  runtime_hooks=runtime_hooks,
51
- excludes=[],
55
+ excludes=excludes,
52
56
  win_no_prefer_redirects=False,
53
57
  win_private_assemblies=False,
54
58
  cipher=None,
@@ -10,6 +10,5 @@ httplib2>=0.22.0
10
10
  lxml>=5.4.0
11
11
  passlib>=1.7.4
12
12
  pathvalidate>=3.2.3
13
- pyscard==2.2.1
14
13
  python-dateutil
15
14
  yubikey-manager>=5.6.1
@@ -37,7 +37,6 @@ install_requires =
37
37
  lxml >= 5.4.0
38
38
  passlib >= 1.7.4
39
39
  pathvalidate >= 3.2.3
40
- pyscard == 2.2.1
41
40
  python-dateutil
42
41
  yubikey-manager >= 5.6.1
43
42
 
@@ -10,6 +10,17 @@ 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.07.13
14
+
15
+ Added option `showitemcountonly` to `gam [<UserTypeEntity>] print|show shareddrives` that causes GAM to display the
16
+ number of Shared Drives on stdout; no CSV file is written.
17
+
18
+ ### 7.07.12
19
+
20
+ Fixed bug in `gam print|show oushareddrives` that caused a trap.
21
+
22
+ Improved getting Shared Drive names from IDs when accessing Shared Drives in external workspaces.
23
+
13
24
  ### 7.07.11
14
25
 
15
26
  Updated `gam calendars <CalendarEntity> update events` and `gam <UserTypeEntity> update events <UserCalendarEntity>`
@@ -251,7 +251,7 @@ writes the credentials into the file oauth2.txt.
251
251
  admin@server:/Users/admin$ rm -f /Users/admin/GAMConfig/oauth2.txt
252
252
  admin@server:/Users/admin$ gam version
253
253
  WARNING: Config File: /Users/admin/GAMConfig/gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: /Users/admin/GAMConfig/oauth2.txt, Not Found
254
- GAM 7.07.11 - https://github.com/GAM-team/GAM - pyinstaller
254
+ GAM 7.07.13 - https://github.com/GAM-team/GAM - pyinstaller
255
255
  GAM Team <google-apps-manager@googlegroups.com>
256
256
  Python 3.13.3 64-bit final
257
257
  MacOS Sequoia 15.5 x86_64
@@ -989,7 +989,7 @@ writes the credentials into the file oauth2.txt.
989
989
  C:\>del C:\GAMConfig\oauth2.txt
990
990
  C:\>gam version
991
991
  WARNING: Config File: C:\GAMConfig\gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: C:\GAMConfig\oauth2.txt, Not Found
992
- GAM 7.07.11 - https://github.com/GAM-team/GAM - pythonsource
992
+ GAM 7.07.13 - https://github.com/GAM-team/GAM - pythonsource
993
993
  GAM Team <google-apps-manager@googlegroups.com>
994
994
  Python 3.13.3 64-bit final
995
995
  Windows-10-10.0.17134 AMD64
@@ -12,8 +12,9 @@
12
12
  - [Delete a Shared Drive](#delete-a-shared-drive)
13
13
  - [Change Shared Drive visibility](#change-shared-drive-visibility)
14
14
  - [Display Shared Drives](#display-shared-drives)
15
- - [Display List of Shared Drives in an Organizational Unit other than /](#display-list-of-shared-drives-in-an-organizational-unit-other-than-)
15
+ - [Display Shared Drive Counts](#display-shared-drive-counts)
16
16
  - [Display List of Shared Drives in an Organizational Unit](#display-list-of-shared-drives-in-an-organizational-unit)
17
+ - [Display Count of Shared Drives in an Organizational Unit](#display-count-of-shared-drives-in-an-organizational-unit)
17
18
  - [Display all Shared Drives with no members](#display-all-shared-drives-with-no-members)
18
19
  - [Display all Shared Drives with no organizers](#display-all-shared-drives-with-no-organizers)
19
20
  - [Display all Shared Drives with a specific organizer](#display-all-shared-drives-with-a-specific-organizer)
@@ -416,6 +417,36 @@ gam print teamdrives query "memberCount = 0"
416
417
  gam print teamdrives query "organizerCount = 0"
417
418
  ```
418
419
 
420
+ ## Display Shared Drive Counts
421
+ Display the number of Shared Drives.
422
+ ```
423
+ gam [<UserTypeEntity>] show|print shareddrives
424
+ [adminaccess|asadmin] [teamdriveadminquery|query <QueryTeamDrive>]
425
+ [matchname <REMatchPattern>] [orgunit|org|ou <OrgUnitPath>]
426
+ showitemcountonly
427
+ ```
428
+ By default, all Shared Drives are counted; use the following options to select a subset of Shared Drives:
429
+ * `teamdriveadminquery|query <QueryTeamDrive>` - Use a query to select Shared Drives
430
+ * `matchname <REMatchPattern>` - Retrieve Shared Drives with names that match a pattern.
431
+ * `orgunit|org|ou <OrgUnitPath>` - Only Shared Drives in the specified Org Unit are selected
432
+
433
+ Example
434
+ ```
435
+ $ gam print shareddrives showitemcountonly
436
+ Getting all Shared Drives, may take some time on a large Google Workspace Account...
437
+ Got 12 Shared Drives...
438
+ 12
439
+ ```
440
+ The `Getting` and `Got` messages are written to stderr, the count is writtem to stdout.
441
+
442
+ To retrieve the count with `showitemcountonly`:
443
+ ```
444
+ Linux/MacOS
445
+ count=$(gam print shareddrives showitemcountonly)
446
+ Windows PowerShell
447
+ count = & gam print shareddrives showitemcountonly
448
+ ```
449
+
419
450
  ## Display all Shared Drives with a specific organizer
420
451
  Substitute actual email address for `organizer@domain.com`.
421
452
  ```
@@ -428,18 +459,9 @@ Substitute actual email address for `organizer@domain.com`.
428
459
  gam config csv_output_header_filter "id,name" print teamdriveacls pm emailaddress organizer@domain.com role organizer em pma skip pmselect
429
460
  ```
430
461
 
431
- ## Display List of Shared Drives in an Organizational Unit other than /
432
- Get the orgUnitID of OU / and use it (without the id:) in the print|show command. Adjust fields as desired.
433
- ```
434
- gam info ou / nousers
435
- gam show teamdrives query "orgUnitId!='00gjdgxs2p9cxyz'" fields id,name,orgunit,createdtime
436
- gam print teamdrives query "orgUnitId!='00gjdgxs2p9cxyz'" fields id,name,orgunit,createdtime
437
- ```
438
-
439
462
  ## Display List of Shared Drives in an Organizational Unit
440
463
  Get the orgUnitID of the desired OU and use it (without the id:) in the print|show command. Adjust fields as desired.
441
464
  ```
442
- gam info ou <OrgUnitPath> nousers
443
465
  gam show teamdrives query "orgUnitId='03ph8a2z21rexy'" fields id,name,orgunit,createdtime
444
466
  gam print teamdrives query "orgUnitId='03ph8a2z21rexy'" fields id,name,orgunit,createdtime
445
467
  ```
@@ -453,6 +475,31 @@ gam print oushareddrives [todrive <ToDriveAttribute>*]
453
475
  [formatjson [quotechar <Character>]]
454
476
  ```
455
477
 
478
+ ## Display Count of Shared Drives in an Organizational Unit
479
+ ```
480
+ gam print|show oushareddrives
481
+ [ou|org|orgunit <OrgUnitPath>]
482
+ showitemcountonly
483
+ ```
484
+ `<OrgUnitPath>` defaults to `"/"`.
485
+
486
+ Example
487
+ ```
488
+ $ gam print oushareddrives showitemcountonly
489
+ Getting all Shared Drives for /, may take some time on a large Organizational Unit...
490
+ Got 9 Shared Drives for /...
491
+ 9
492
+ ```
493
+ The `Getting` and `Got` messages are written to stderr, the count is writtem to stdout.
494
+
495
+ To retrieve the count with `showitemcountonly`:
496
+ ```
497
+ Linux/MacOS
498
+ count=$(gam print oushareddrives showitemcountonly)
499
+ Windows PowerShell
500
+ count = & gam print oushareddrives showitemcountonly
501
+ ```
502
+
456
503
  ## Manage Shared Drive access
457
504
  These commands are used to manage the ACLs on Shared Drives themselves, not the files/folders on the Shared Drives.
458
505
 
@@ -662,7 +662,7 @@ When moving a folder you can use the `retainsourcefolders` option to cause GAM t
662
662
  Moving a Drive folder to a Shared Drive is not directly supported by the API; GAM has to make a copy of the folder on the Shared Drive and
663
663
  recursively adjust the files/folders within it to point to the new parent folder. Once the original folder is emptied, it is deleted unless `retainsourcefolders` is specified.
664
664
 
665
- ### Move content of a Shared Drive to another Shared Drive
665
+ ## Move content of a Shared Drive to another Shared Drive
666
666
  Suppose you have a source Shared Drive with ID 0AC_1AB with multiple files and folders, and want to move all of its content to the target Shared Drive with ID 0AE_9ZX.
667
667
 
668
668
  The following command will change the parents of the top level files and folders from 0AC_1AB to 0AE_9ZX; the sub files and folders will move along with their top level folder.
@@ -676,3 +676,19 @@ If you want the source Shared Drive with ID 0AC_1AB to be contained in a top lev
676
676
  ```
677
677
  gam user user@domain.com move drivefile teamdriveid 0AC_1AB teamdriveparentid 0AE_9ZX
678
678
  ```
679
+
680
+ ### Inter-workspace moves
681
+ Due to a restructuring, you want to move data from Shared Drive A in domaina.com to Shared Drive B in domainb.com.
682
+ * Shared Drive A in domaina.com has the following unchecked: `Allow people outside of Domain A to access files`
683
+ * Shared Drive B in domainb.com has the following checked: `Allow people outside of Domain B to access files`
684
+ * `user@domaina.com` is a manager of both Shared Drives.
685
+
686
+ ```
687
+ $ gam user user@domaina move drivefile teamdriveid <SharedDriveAID> teamdriveparentid <SharedDriveBID> mergewithparent
688
+ User: user@domaina.com, Move 1 Drive File/Folder
689
+ User: user@domaina.com, Drive Folder: Shared Drive A(<SharedDriveAID>), Move(Merge) contents with Drive Folder: Shared Drive B(<SharedDriveBID>)
690
+ User: user@domaina.com, Drive File: Filename(<FileID>), Move Failed: Bad Request. User message: "shareOutNotPermitted"
691
+ ...
692
+ User: user@domaina.com, Drive Folder: Shared Drive A(<SharedDriveAID>), Retained
693
+ ```
694
+ To get this to work, you must check `Allow people outside of Domain A to access files` on Shared Drive A in domaina.com
@@ -7,6 +7,7 @@
7
7
  - [Manage file permissions/sharing](#manage-file-permissionssharing)
8
8
  - [Display file permissions/sharing](#display-file-permissionssharing)
9
9
  - [Delete all ACLs except owner from a file](#delete-all-acls-except-owner-from-a-file)
10
+ - [Delete all ACLs except owner from a user's My Drive](#delete-all-acls-except-owner-from-a-users-my-drive)
10
11
  - [Change shares to User1 to shares to User2](#change-shares-to-user1-to-shares-to-user2)
11
12
  - [Map All ACLs from an old domain to a new domain](#map-all-acls-from-an-old-domain-to-a-new-domain)
12
13
 
@@ -318,13 +319,23 @@ gam redirect csv ./TeamDriveACLs.csv multiprocess csv ./TeamDrives.csv gam print
318
319
  ## Delete all ACLs except owner from a file
319
320
  Get the current ACLs.
320
321
  ```
321
- gam redirect csv ./Permissions.csv user <UserItem> print drivefileacls <DriveFileID> oneitemperrow
322
+ gam redirect csv ./Permissions.csv user user@domain.com print drivefileacls <DriveFileID> oneitemperrow
322
323
  ```
323
324
  Inspect Permissions.csv, verify that you want to proceed.
324
325
  ```
325
326
  gam config csv_input_row_drop_filter "permission.role:regex:(owner)|(organizer)" csv ./Permissions.csv gam user "~Owner" delete drivefileacl "~id" "id:~~permission.id~~"
326
327
  ```
327
328
 
329
+ ## Delete all ACLs except owner from a user's My Drive
330
+ Get the current ACLs.
331
+ ```
332
+ gam redirect csv ./Permissions.csv user user@domain.com print filelist fields id,name,mimetype,basicpermissions pm not role owner em pmfilter oneitemperrow
333
+ ```
334
+ Inspect Permissions.csv, verify that you want to proceed.
335
+ ```
336
+ gam redirect stdout ./DeletePermissions.txt multiprocess redirect stderr stdout csv Permissions.csv.csv gam user "~Owner" delete drivefileacls "~id" "id:~~permission.id~~"
337
+ ```
338
+
328
339
  ## Change shares to User1 to shares to User2
329
340
  ```
330
341
  # Get files shared to User1
@@ -11,6 +11,7 @@
11
11
  - [Delete a Shared Drive](#delete-a-shared-drive)
12
12
  - [Change Shared Drive visibility](#change-shared-drive-visibility)
13
13
  - [Display Shared Drives](#display-shared-drives)
14
+ - [Display Shared Drive Counts](#display-shared-drive-counts)
14
15
  - [Manage Shared Drive access](#manage-shared-drive-access)
15
16
  - [Display Shared Drive access](#display-shared-drive-access)
16
17
  - [Display Shared Drive access for specific Shared Drives](#display-shared-drive-access-for-specific-shared-drives)
@@ -356,6 +357,35 @@ When using the `formatjson` option, double quotes are used extensively in the da
356
357
  The `quotechar <Character>` option allows you to choose an alternate quote character, single quote for instance, that makes for readable/processable output.
357
358
  `quotechar` defaults to `gam.cfg/csv_output_quote_char`. When uploading CSV files to Google, double quote `"` should be used.
358
359
 
360
+ ## Display Shared Drive Counts
361
+ Display the number of Shared Drives.
362
+ ```
363
+ gam <UserTypeEntity> show|print shareddrives
364
+ [teamdriveadminquery|query <QueryTeamDrive>]
365
+ [matchname <REMatchPattern>] [orgunit|org|ou <OrgUnitPath>]
366
+ showitemcountonly
367
+ ```
368
+ By default, all Shared Drives are counted; use the following options to select a subset of Shared Drives:
369
+ * `teamdriveadminquery|query <QueryTeamDrive>` - Use a query to select Shared Drives
370
+ * `matchname <REMatchPattern>` - Retrieve Shared Drives with names that match a pattern.
371
+ * `orgunit|org|ou <OrgUnitPath>` - Only Shared Drives in the specified Org Unit are selected
372
+
373
+ Example
374
+ ```
375
+ $ gam user user@domain.com print shareddrives showitemcountonly
376
+ Getting all Shared Drives for user@domain.com
377
+ Got 4 Shared Drives for user@domain.com ...
378
+ 4
379
+ ```
380
+ The `Getting` and `Got` messages are written to stderr, the count is writtem to stdout.
381
+
382
+ To retrieve the count with `showitemcountonly`:
383
+ ```
384
+ Linux/MacOS
385
+ count=$(gam user user@domain.com print shareddrives showitemcountonly)
386
+ Windows PowerShell
387
+ count = & gam user user@domain.com print shareddrives showitemcountonly
388
+ ```
359
389
  ## Manage Shared Drive access
360
390
  These commands must be issued by a user with Shared Drive permission role organizer.
361
391
  ### Process single ACLs.
@@ -3,7 +3,7 @@
3
3
  Print the current version of Gam with details
4
4
  ```
5
5
  gam version
6
- GAM 7.07.11 - https://github.com/GAM-team/GAM - pyinstaller
6
+ GAM 7.07.13 - https://github.com/GAM-team/GAM - pyinstaller
7
7
  GAM Team <google-apps-manager@googlegroups.com>
8
8
  Python 3.13.3 64-bit final
9
9
  MacOS Sequoia 15.5 x86_64
@@ -15,7 +15,7 @@ Time: 2023-06-02T21:10:00-07:00
15
15
  Print the current version of Gam with details and time offset information
16
16
  ```
17
17
  gam version timeoffset
18
- GAM 7.07.11 - https://github.com/GAM-team/GAM - pyinstaller
18
+ GAM 7.07.13 - https://github.com/GAM-team/GAM - pyinstaller
19
19
  GAM Team <google-apps-manager@googlegroups.com>
20
20
  Python 3.13.3 64-bit final
21
21
  MacOS Sequoia 15.5 x86_64
@@ -27,7 +27,7 @@ Your system time differs from www.googleapis.com by less than 1 second
27
27
  Print the current version of Gam with extended details and SSL information
28
28
  ```
29
29
  gam version extended
30
- GAM 7.07.11 - https://github.com/GAM-team/GAM - pyinstaller
30
+ GAM 7.07.13 - https://github.com/GAM-team/GAM - pyinstaller
31
31
  GAM Team <google-apps-manager@googlegroups.com>
32
32
  Python 3.13.3 64-bit final
33
33
  MacOS Sequoia 15.5 x86_64
@@ -64,7 +64,7 @@ MacOS High Sierra 10.13.6 x86_64
64
64
  Path: /Users/Admin/bin/gam7
65
65
  Version Check:
66
66
  Current: 5.35.08
67
- Latest: 7.07.11
67
+ Latest: 7.07.13
68
68
  echo $?
69
69
  1
70
70
  ```
@@ -72,7 +72,7 @@ echo $?
72
72
  Print the current version number without details
73
73
  ```
74
74
  gam version simple
75
- 7.07.11
75
+ 7.07.13
76
76
  ```
77
77
  In Linux/MacOS you can do:
78
78
  ```
@@ -82,7 +82,7 @@ echo $VER
82
82
  Print the current version of Gam and address of this Wiki
83
83
  ```
84
84
  gam help
85
- GAM 7.07.11 - https://github.com/GAM-team/GAM
85
+ GAM 7.07.13 - https://github.com/GAM-team/GAM
86
86
  GAM Team <google-apps-manager@googlegroups.com>
87
87
  Python 3.13.3 64-bit final
88
88
  MacOS Sequoia 15.5 x86_64
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes