gam7 7.7.17__tar.gz → 7.8.1__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.17 → gam7-7.8.1}/PKG-INFO +1 -1
  2. {gam7-7.7.17 → gam7-7.8.1}/src/GamCommands.txt +25 -1
  3. {gam7-7.7.17 → gam7-7.8.1}/src/GamUpdate.txt +33 -0
  4. {gam7-7.7.17 → gam7-7.8.1}/src/gam/__init__.py +192 -3
  5. {gam7-7.7.17 → gam7-7.8.1}/src/gam/gamlib/glclargs.py +4 -1
  6. {gam7-7.7.17 → gam7-7.8.1}/wiki/Cloud-Identity-Devices.md +4 -1
  7. {gam7-7.7.17 → gam7-7.8.1}/wiki/GamUpdates.md +41 -0
  8. {gam7-7.7.17 → gam7-7.8.1}/wiki/How-to-Upgrade-Legacy-GAM-to-GAM7.md +2 -2
  9. {gam7-7.7.17 → gam7-7.8.1}/wiki/Shared-Drives.md +110 -48
  10. {gam7-7.7.17 → gam7-7.8.1}/wiki/Users-Gmail-Delegates.md +6 -0
  11. {gam7-7.7.17 → gam7-7.8.1}/wiki/Users-Shared-Drives.md +64 -19
  12. {gam7-7.7.17 → gam7-7.8.1}/wiki/Version-and-Help.md +6 -6
  13. {gam7-7.7.17 → gam7-7.8.1}/.github/ISSUE_TEMPLATE/aa-question.md +0 -0
  14. {gam7-7.7.17 → gam7-7.8.1}/.github/ISSUE_TEMPLATE/za-bug-report.md +0 -0
  15. {gam7-7.7.17 → gam7-7.8.1}/.github/ISSUE_TEMPLATE/zz-feature-request.md +0 -0
  16. {gam7-7.7.17 → gam7-7.8.1}/.github/ISSUE_TEMPLATE.txt +0 -0
  17. {gam7-7.7.17 → gam7-7.8.1}/.github/actions/decrypt.sh +0 -0
  18. {gam7-7.7.17 → gam7-7.8.1}/.github/actions/entitlements.plist +0 -0
  19. {gam7-7.7.17 → gam7-7.8.1}/.github/actions/package_exclusions.txt +0 -0
  20. {gam7-7.7.17 → gam7-7.8.1}/.github/stale.yml +0 -0
  21. {gam7-7.7.17 → gam7-7.8.1}/.github/workflows/build.yml +0 -0
  22. {gam7-7.7.17 → gam7-7.8.1}/.github/workflows/codeql-analysis.yml +0 -0
  23. {gam7-7.7.17 → gam7-7.8.1}/.github/workflows/get-cacerts.yml +0 -0
  24. {gam7-7.7.17 → gam7-7.8.1}/.github/workflows/pushwiki.yml +0 -0
  25. {gam7-7.7.17 → gam7-7.8.1}/.github/workflows/pypi.yml +0 -0
  26. {gam7-7.7.17 → gam7-7.8.1}/.pre-commit-config.yaml +0 -0
  27. {gam7-7.7.17 → gam7-7.8.1}/LICENSE +0 -0
  28. {gam7-7.7.17 → gam7-7.8.1}/README.md +0 -0
  29. {gam7-7.7.17 → gam7-7.8.1}/pyproject.toml +0 -0
  30. {gam7-7.7.17 → gam7-7.8.1}/src/.gitignore +0 -0
  31. {gam7-7.7.17 → gam7-7.8.1}/src/LICENSE +0 -0
  32. {gam7-7.7.17 → gam7-7.8.1}/src/cacerts.pem +0 -0
  33. {gam7-7.7.17 → gam7-7.8.1}/src/callgam.py +0 -0
  34. {gam7-7.7.17 → gam7-7.8.1}/src/gam/__main__.py +0 -0
  35. {gam7-7.7.17 → gam7-7.8.1}/src/gam/atom/__init__.py +0 -0
  36. {gam7-7.7.17 → gam7-7.8.1}/src/gam/atom/auth.py +0 -0
  37. {gam7-7.7.17 → gam7-7.8.1}/src/gam/atom/client.py +0 -0
  38. {gam7-7.7.17 → gam7-7.8.1}/src/gam/atom/core.py +0 -0
  39. {gam7-7.7.17 → gam7-7.8.1}/src/gam/atom/data.py +0 -0
  40. {gam7-7.7.17 → gam7-7.8.1}/src/gam/atom/http.py +0 -0
  41. {gam7-7.7.17 → gam7-7.8.1}/src/gam/atom/http_core.py +0 -0
  42. {gam7-7.7.17 → gam7-7.8.1}/src/gam/atom/http_interface.py +0 -0
  43. {gam7-7.7.17 → gam7-7.8.1}/src/gam/atom/mock_http.py +0 -0
  44. {gam7-7.7.17 → gam7-7.8.1}/src/gam/atom/mock_http_core.py +0 -0
  45. {gam7-7.7.17 → gam7-7.8.1}/src/gam/atom/mock_service.py +0 -0
  46. {gam7-7.7.17 → gam7-7.8.1}/src/gam/atom/service.py +0 -0
  47. {gam7-7.7.17 → gam7-7.8.1}/src/gam/atom/token_store.py +0 -0
  48. {gam7-7.7.17 → gam7-7.8.1}/src/gam/atom/url.py +0 -0
  49. {gam7-7.7.17 → gam7-7.8.1}/src/gam/cacerts.pem +0 -0
  50. {gam7-7.7.17 → gam7-7.8.1}/src/gam/cbcm-v1.1beta1.json +0 -0
  51. {gam7-7.7.17 → gam7-7.8.1}/src/gam/contactdelegation-v1.json +0 -0
  52. {gam7-7.7.17 → gam7-7.8.1}/src/gam/datastudio-v1.json +0 -0
  53. {gam7-7.7.17 → gam7-7.8.1}/src/gam/gamlib/__init__.py +0 -0
  54. {gam7-7.7.17 → gam7-7.8.1}/src/gam/gamlib/glaction.py +0 -0
  55. {gam7-7.7.17 → gam7-7.8.1}/src/gam/gamlib/glapi.py +0 -0
  56. {gam7-7.7.17 → gam7-7.8.1}/src/gam/gamlib/glcfg.py +0 -0
  57. {gam7-7.7.17 → gam7-7.8.1}/src/gam/gamlib/glentity.py +0 -0
  58. {gam7-7.7.17 → gam7-7.8.1}/src/gam/gamlib/glgapi.py +0 -0
  59. {gam7-7.7.17 → gam7-7.8.1}/src/gam/gamlib/glgdata.py +0 -0
  60. {gam7-7.7.17 → gam7-7.8.1}/src/gam/gamlib/glglobals.py +0 -0
  61. {gam7-7.7.17 → gam7-7.8.1}/src/gam/gamlib/glindent.py +0 -0
  62. {gam7-7.7.17 → gam7-7.8.1}/src/gam/gamlib/glmsgs.py +0 -0
  63. {gam7-7.7.17 → gam7-7.8.1}/src/gam/gamlib/glskus.py +0 -0
  64. {gam7-7.7.17 → gam7-7.8.1}/src/gam/gamlib/gluprop.py +0 -0
  65. {gam7-7.7.17 → gam7-7.8.1}/src/gam/gamlib/glverlibs.py +0 -0
  66. {gam7-7.7.17 → gam7-7.8.1}/src/gam/gamlib/yubikey.py +0 -0
  67. {gam7-7.7.17 → gam7-7.8.1}/src/gam/gdata/__init__.py +0 -0
  68. {gam7-7.7.17 → gam7-7.8.1}/src/gam/gdata/alt/__init__.py +0 -0
  69. {gam7-7.7.17 → gam7-7.8.1}/src/gam/gdata/alt/app_engine.py +0 -0
  70. {gam7-7.7.17 → gam7-7.8.1}/src/gam/gdata/alt/appengine.py +0 -0
  71. {gam7-7.7.17 → gam7-7.8.1}/src/gam/gdata/apps/__init__.py +0 -0
  72. {gam7-7.7.17 → gam7-7.8.1}/src/gam/gdata/apps/audit/__init__.py +0 -0
  73. {gam7-7.7.17 → gam7-7.8.1}/src/gam/gdata/apps/audit/service.py +0 -0
  74. {gam7-7.7.17 → gam7-7.8.1}/src/gam/gdata/apps/contacts/__init__.py +0 -0
  75. {gam7-7.7.17 → gam7-7.8.1}/src/gam/gdata/apps/contacts/service.py +0 -0
  76. {gam7-7.7.17 → gam7-7.8.1}/src/gam/gdata/apps/service.py +0 -0
  77. {gam7-7.7.17 → gam7-7.8.1}/src/gam/gdata/service.py +0 -0
  78. {gam7-7.7.17 → gam7-7.8.1}/src/gam/gdata/urlfetch.py +0 -0
  79. {gam7-7.7.17 → gam7-7.8.1}/src/gam/googleapiclient/__init__.py +0 -0
  80. {gam7-7.7.17 → gam7-7.8.1}/src/gam/googleapiclient/_auth.py +0 -0
  81. {gam7-7.7.17 → gam7-7.8.1}/src/gam/googleapiclient/_helpers.py +0 -0
  82. {gam7-7.7.17 → gam7-7.8.1}/src/gam/googleapiclient/channel.py +0 -0
  83. {gam7-7.7.17 → gam7-7.8.1}/src/gam/googleapiclient/discovery.py +0 -0
  84. {gam7-7.7.17 → gam7-7.8.1}/src/gam/googleapiclient/discovery_cache/__init__.py +0 -0
  85. {gam7-7.7.17 → gam7-7.8.1}/src/gam/googleapiclient/discovery_cache/appengine_memcache.py +0 -0
  86. {gam7-7.7.17 → gam7-7.8.1}/src/gam/googleapiclient/discovery_cache/base.py +0 -0
  87. {gam7-7.7.17 → gam7-7.8.1}/src/gam/googleapiclient/discovery_cache/file_cache.py +0 -0
  88. {gam7-7.7.17 → gam7-7.8.1}/src/gam/googleapiclient/errors.py +0 -0
  89. {gam7-7.7.17 → gam7-7.8.1}/src/gam/googleapiclient/http.py +0 -0
  90. {gam7-7.7.17 → gam7-7.8.1}/src/gam/googleapiclient/mimeparse.py +0 -0
  91. {gam7-7.7.17 → gam7-7.8.1}/src/gam/googleapiclient/model.py +0 -0
  92. {gam7-7.7.17 → gam7-7.8.1}/src/gam/googleapiclient/schema.py +0 -0
  93. {gam7-7.7.17 → gam7-7.8.1}/src/gam/googleapiclient/version.py +0 -0
  94. {gam7-7.7.17 → gam7-7.8.1}/src/gam/iso8601/__init__.py +0 -0
  95. {gam7-7.7.17 → gam7-7.8.1}/src/gam/iso8601/iso8601.py +0 -0
  96. {gam7-7.7.17 → gam7-7.8.1}/src/gam/meet-v2beta.json +0 -0
  97. {gam7-7.7.17 → gam7-7.8.1}/src/gam/serviceaccountlookup-v1.json +0 -0
  98. {gam7-7.7.17 → gam7-7.8.1}/src/gam/six.py +0 -0
  99. {gam7-7.7.17 → gam7-7.8.1}/src/gam-install.sh +0 -0
  100. {gam7-7.7.17 → gam7-7.8.1}/src/gam-setup.bat +0 -0
  101. {gam7-7.7.17 → gam7-7.8.1}/src/gam.exe.manifest +0 -0
  102. {gam7-7.7.17 → gam7-7.8.1}/src/gam.py +0 -0
  103. {gam7-7.7.17 → gam7-7.8.1}/src/gam.spec +0 -0
  104. {gam7-7.7.17 → gam7-7.8.1}/src/gam.wxs +0 -0
  105. {gam7-7.7.17 → gam7-7.8.1}/src/license.rtf +0 -0
  106. {gam7-7.7.17 → gam7-7.8.1}/src/requirements-dev.txt +0 -0
  107. {gam7-7.7.17 → gam7-7.8.1}/src/requirements.txt +0 -0
  108. {gam7-7.7.17 → gam7-7.8.1}/src/setup.cfg +0 -0
  109. {gam7-7.7.17 → gam7-7.8.1}/src/setup.py +0 -0
  110. {gam7-7.7.17 → gam7-7.8.1}/src/tools/a_atleast_b.py +0 -0
  111. {gam7-7.7.17 → gam7-7.8.1}/src/tools/gen-wix-xml-filelist.py +0 -0
  112. {gam7-7.7.17 → gam7-7.8.1}/src/tools/mkGamRef.py +0 -0
  113. {gam7-7.7.17 → gam7-7.8.1}/src/tools/openssl.props +0 -0
  114. {gam7-7.7.17 → gam7-7.8.1}/src/version_info.txt.in +0 -0
  115. {gam7-7.7.17 → gam7-7.8.1}/wiki/00scratch.md +0 -0
  116. {gam7-7.7.17 → gam7-7.8.1}/wiki/Addresses.md +0 -0
  117. {gam7-7.7.17 → gam7-7.8.1}/wiki/Administrators.md +0 -0
  118. {gam7-7.7.17 → gam7-7.8.1}/wiki/Alert-Center.md +0 -0
  119. {gam7-7.7.17 → gam7-7.8.1}/wiki/Aliases.md +0 -0
  120. {gam7-7.7.17 → gam7-7.8.1}/wiki/Authorization.md +0 -0
  121. {gam7-7.7.17 → gam7-7.8.1}/wiki/BNF-Syntax.md +0 -0
  122. {gam7-7.7.17 → gam7-7.8.1}/wiki/Basic-Items.md +0 -0
  123. {gam7-7.7.17 → gam7-7.8.1}/wiki/Bulk-Processing.md +0 -0
  124. {gam7-7.7.17 → gam7-7.8.1}/wiki/CSV-Input-Filtering.md +0 -0
  125. {gam7-7.7.17 → gam7-7.8.1}/wiki/CSV-Output-Filtering.md +0 -0
  126. {gam7-7.7.17 → gam7-7.8.1}/wiki/CSV-Special-Characters.md +0 -0
  127. {gam7-7.7.17 → gam7-7.8.1}/wiki/Calendars-Access.md +0 -0
  128. {gam7-7.7.17 → gam7-7.8.1}/wiki/Calendars-Events.md +0 -0
  129. {gam7-7.7.17 → gam7-7.8.1}/wiki/Calendars.md +0 -0
  130. {gam7-7.7.17 → gam7-7.8.1}/wiki/Chat-Bot.md +0 -0
  131. {gam7-7.7.17 → gam7-7.8.1}/wiki/Chrome-AUE-Counts.md +0 -0
  132. {gam7-7.7.17 → gam7-7.8.1}/wiki/Chrome-Browser-Cloud-Management.md +0 -0
  133. {gam7-7.7.17 → gam7-7.8.1}/wiki/Chrome-Installed-Apps.md +0 -0
  134. {gam7-7.7.17 → gam7-7.8.1}/wiki/Chrome-Needs-Attention-Counts.md +0 -0
  135. {gam7-7.7.17 → gam7-7.8.1}/wiki/Chrome-Policies.md +0 -0
  136. {gam7-7.7.17 → gam7-7.8.1}/wiki/Chrome-Printers.md +0 -0
  137. {gam7-7.7.17 → gam7-7.8.1}/wiki/Chrome-Profile-Management.md +0 -0
  138. {gam7-7.7.17 → gam7-7.8.1}/wiki/Chrome-Version-Counts.md +0 -0
  139. {gam7-7.7.17 → gam7-7.8.1}/wiki/Chrome-Version-History.md +0 -0
  140. {gam7-7.7.17 → gam7-7.8.1}/wiki/ChromeOS-Devices.md +0 -0
  141. {gam7-7.7.17 → gam7-7.8.1}/wiki/Classroom-Courses.md +0 -0
  142. {gam7-7.7.17 → gam7-7.8.1}/wiki/Classroom-Guardians.md +0 -0
  143. {gam7-7.7.17 → gam7-7.8.1}/wiki/Classroom-Invitations.md +0 -0
  144. {gam7-7.7.17 → gam7-7.8.1}/wiki/Classroom-Membership.md +0 -0
  145. {gam7-7.7.17 → gam7-7.8.1}/wiki/Cloud-Channel.md +0 -0
  146. {gam7-7.7.17 → gam7-7.8.1}/wiki/Cloud-Identity-Groups-Membership.md +0 -0
  147. {gam7-7.7.17 → gam7-7.8.1}/wiki/Cloud-Identity-Groups.md +0 -0
  148. {gam7-7.7.17 → gam7-7.8.1}/wiki/Cloud-Identity-Policies.md +0 -0
  149. {gam7-7.7.17 → gam7-7.8.1}/wiki/Cloud-Storage.md +0 -0
  150. {gam7-7.7.17 → gam7-7.8.1}/wiki/Collections-of-ChromeOS-Devices.md +0 -0
  151. {gam7-7.7.17 → gam7-7.8.1}/wiki/Collections-of-Items.md +0 -0
  152. {gam7-7.7.17 → gam7-7.8.1}/wiki/Collections-of-Users.md +0 -0
  153. {gam7-7.7.17 → gam7-7.8.1}/wiki/Command-Data-From-Google-Docs-Sheets-Storage.md +0 -0
  154. {gam7-7.7.17 → gam7-7.8.1}/wiki/Command-Line-Parsing.md +0 -0
  155. {gam7-7.7.17 → gam7-7.8.1}/wiki/Command-Logging-Progress.md +0 -0
  156. {gam7-7.7.17 → gam7-7.8.1}/wiki/Context-Aware-Access-Levels.md +0 -0
  157. {gam7-7.7.17 → gam7-7.8.1}/wiki/Customer.md +0 -0
  158. {gam7-7.7.17 → gam7-7.8.1}/wiki/Domain-People-Contacts-Profiles.md +0 -0
  159. {gam7-7.7.17 → gam7-7.8.1}/wiki/Domain-SharedContacts.md +0 -0
  160. {gam7-7.7.17 → gam7-7.8.1}/wiki/Domains-Verification.md +0 -0
  161. {gam7-7.7.17 → gam7-7.8.1}/wiki/Domains.md +0 -0
  162. {gam7-7.7.17 → gam7-7.8.1}/wiki/Downloads-Installs.md +0 -0
  163. {gam7-7.7.17 → gam7-7.8.1}/wiki/Drive-File-Selection.md +0 -0
  164. {gam7-7.7.17 → gam7-7.8.1}/wiki/Drive-Items.md +0 -0
  165. {gam7-7.7.17 → gam7-7.8.1}/wiki/Drive-REST-API-v3.md +0 -0
  166. {gam7-7.7.17 → gam7-7.8.1}/wiki/Email-Audit-Monitor.md +0 -0
  167. {gam7-7.7.17 → gam7-7.8.1}/wiki/Find-File-Owner.md +0 -0
  168. {gam7-7.7.17 → gam7-7.8.1}/wiki/GAM-Public-Chat-Room.md +0 -0
  169. {gam7-7.7.17 → gam7-7.8.1}/wiki/GAM-Return-Codes.md +0 -0
  170. {gam7-7.7.17 → gam7-7.8.1}/wiki/GAM-with-minimal-GCP-rights.md +0 -0
  171. {gam7-7.7.17 → gam7-7.8.1}/wiki/GAM7-on-Android-Devices.md +0 -0
  172. {gam7-7.7.17 → gam7-7.8.1}/wiki/GAM7-on-Chrome-OS-Devices.md +0 -0
  173. {gam7-7.7.17 → gam7-7.8.1}/wiki/Google-Data-Transfers.md +0 -0
  174. {gam7-7.7.17 → gam7-7.8.1}/wiki/Google-Network-Addresses.md +0 -0
  175. {gam7-7.7.17 → gam7-7.8.1}/wiki/Groups-Membership.md +0 -0
  176. {gam7-7.7.17 → gam7-7.8.1}/wiki/Groups.md +0 -0
  177. {gam7-7.7.17 → gam7-7.8.1}/wiki/HTTPS-Proxy.md +0 -0
  178. {gam7-7.7.17 → gam7-7.8.1}/wiki/Home.md +0 -0
  179. {gam7-7.7.17 → gam7-7.8.1}/wiki/How-to-Install-GAM7.md +0 -0
  180. {gam7-7.7.17 → gam7-7.8.1}/wiki/How-to-Uninstall-GAM7.md +0 -0
  181. {gam7-7.7.17 → gam7-7.8.1}/wiki/How-to-Update-GAM7.md +0 -0
  182. {gam7-7.7.17 → gam7-7.8.1}/wiki/How-to-Upgrade-GAMADV-XTD3-to-GAM7.md +0 -0
  183. {gam7-7.7.17 → gam7-7.8.1}/wiki/Inbound-SSO.md +0 -0
  184. {gam7-7.7.17 → gam7-7.8.1}/wiki/Install-GAM-as-Python-Library.md +0 -0
  185. {gam7-7.7.17 → gam7-7.8.1}/wiki/Licenses.md +0 -0
  186. {gam7-7.7.17 → gam7-7.8.1}/wiki/List-Items.md +0 -0
  187. {gam7-7.7.17 → gam7-7.8.1}/wiki/List.md +0 -0
  188. {gam7-7.7.17 → gam7-7.8.1}/wiki/Meta-Commands-and-File-Redirection.md +0 -0
  189. {gam7-7.7.17 → gam7-7.8.1}/wiki/Mobile-Devices.md +0 -0
  190. {gam7-7.7.17 → gam7-7.8.1}/wiki/Organizational-Units.md +0 -0
  191. {gam7-7.7.17 → gam7-7.8.1}/wiki/Other-Resources.md +0 -0
  192. {gam7-7.7.17 → gam7-7.8.1}/wiki/Permission-Matches.md +0 -0
  193. {gam7-7.7.17 → gam7-7.8.1}/wiki/Python-Regular-Expressions.md +0 -0
  194. {gam7-7.7.17 → gam7-7.8.1}/wiki/README.md +0 -0
  195. {gam7-7.7.17 → gam7-7.8.1}/wiki/Rclone.md +0 -0
  196. {gam7-7.7.17 → gam7-7.8.1}/wiki/Reports.md +0 -0
  197. {gam7-7.7.17 → gam7-7.8.1}/wiki/Reseller.md +0 -0
  198. {gam7-7.7.17 → gam7-7.8.1}/wiki/Resources.md +0 -0
  199. {gam7-7.7.17 → gam7-7.8.1}/wiki/Running-GAM7-securely-on-a-Google-Compute-Engine.md +0 -0
  200. {gam7-7.7.17 → gam7-7.8.1}/wiki/SSL-Root-CA-Certificates.md +0 -0
  201. {gam7-7.7.17 → gam7-7.8.1}/wiki/Schemas.md +0 -0
  202. {gam7-7.7.17 → gam7-7.8.1}/wiki/Scripts.md +0 -0
  203. {gam7-7.7.17 → gam7-7.8.1}/wiki/Send-Email.md +0 -0
  204. {gam7-7.7.17 → gam7-7.8.1}/wiki/Sites.md +0 -0
  205. {gam7-7.7.17 → gam7-7.8.1}/wiki/Tag-Replace.md +0 -0
  206. {gam7-7.7.17 → gam7-7.8.1}/wiki/Todrive.md +0 -0
  207. {gam7-7.7.17 → gam7-7.8.1}/wiki/Unmanaged-Accounts.md +0 -0
  208. {gam7-7.7.17 → gam7-7.8.1}/wiki/Upgrade-Benefits.md +0 -0
  209. {gam7-7.7.17 → gam7-7.8.1}/wiki/Users-Analytics-Admin.md +0 -0
  210. {gam7-7.7.17 → gam7-7.8.1}/wiki/Users-Application-Specific-Passwords.md +0 -0
  211. {gam7-7.7.17 → gam7-7.8.1}/wiki/Users-Backup-Verification-Codes.md +0 -0
  212. {gam7-7.7.17 → gam7-7.8.1}/wiki/Users-Calendars-Access.md +0 -0
  213. {gam7-7.7.17 → gam7-7.8.1}/wiki/Users-Calendars-Events.md +0 -0
  214. {gam7-7.7.17 → gam7-7.8.1}/wiki/Users-Calendars.md +0 -0
  215. {gam7-7.7.17 → gam7-7.8.1}/wiki/Users-Chat.md +0 -0
  216. {gam7-7.7.17 → gam7-7.8.1}/wiki/Users-Classification-Labels.md +0 -0
  217. {gam7-7.7.17 → gam7-7.8.1}/wiki/Users-Classroom-Profile.md +0 -0
  218. {gam7-7.7.17 → gam7-7.8.1}/wiki/Users-Contacts-Delegates.md +0 -0
  219. {gam7-7.7.17 → gam7-7.8.1}/wiki/Users-Contacts.md +0 -0
  220. {gam7-7.7.17 → gam7-7.8.1}/wiki/Users-Deprovision.md +0 -0
  221. {gam7-7.7.17 → gam7-7.8.1}/wiki/Users-Drive-Activity-Settings.md +0 -0
  222. {gam7-7.7.17 → gam7-7.8.1}/wiki/Users-Drive-Cleanup.md +0 -0
  223. {gam7-7.7.17 → gam7-7.8.1}/wiki/Users-Drive-Comments.md +0 -0
  224. {gam7-7.7.17 → gam7-7.8.1}/wiki/Users-Drive-Copy-Move.md +0 -0
  225. {gam7-7.7.17 → gam7-7.8.1}/wiki/Users-Drive-Files-Display.md +0 -0
  226. {gam7-7.7.17 → gam7-7.8.1}/wiki/Users-Drive-Files-Manage.md +0 -0
  227. {gam7-7.7.17 → gam7-7.8.1}/wiki/Users-Drive-Orphans.md +0 -0
  228. {gam7-7.7.17 → gam7-7.8.1}/wiki/Users-Drive-Ownership.md +0 -0
  229. {gam7-7.7.17 → gam7-7.8.1}/wiki/Users-Drive-Permissions.md +0 -0
  230. {gam7-7.7.17 → gam7-7.8.1}/wiki/Users-Drive-Query.md +0 -0
  231. {gam7-7.7.17 → gam7-7.8.1}/wiki/Users-Drive-Revisions.md +0 -0
  232. {gam7-7.7.17 → gam7-7.8.1}/wiki/Users-Drive-Shortcuts.md +0 -0
  233. {gam7-7.7.17 → gam7-7.8.1}/wiki/Users-Drive-Transfer.md +0 -0
  234. {gam7-7.7.17 → gam7-7.8.1}/wiki/Users-Forms.md +0 -0
  235. {gam7-7.7.17 → gam7-7.8.1}/wiki/Users-Gmail-CSE.md +0 -0
  236. {gam7-7.7.17 → gam7-7.8.1}/wiki/Users-Gmail-Filters.md +0 -0
  237. {gam7-7.7.17 → gam7-7.8.1}/wiki/Users-Gmail-Forwarding.md +0 -0
  238. {gam7-7.7.17 → gam7-7.8.1}/wiki/Users-Gmail-Labels.md +0 -0
  239. {gam7-7.7.17 → gam7-7.8.1}/wiki/Users-Gmail-Messages-Threads.md +0 -0
  240. {gam7-7.7.17 → gam7-7.8.1}/wiki/Users-Gmail-Profile.md +0 -0
  241. {gam7-7.7.17 → gam7-7.8.1}/wiki/Users-Gmail-S-MIME.md +0 -0
  242. {gam7-7.7.17 → gam7-7.8.1}/wiki/Users-Gmail-Send-As-Signature-Vacation.md +0 -0
  243. {gam7-7.7.17 → gam7-7.8.1}/wiki/Users-Gmail-Settings.md +0 -0
  244. {gam7-7.7.17 → gam7-7.8.1}/wiki/Users-Group-Membership.md +0 -0
  245. {gam7-7.7.17 → gam7-7.8.1}/wiki/Users-Keep-Notes.md +0 -0
  246. {gam7-7.7.17 → gam7-7.8.1}/wiki/Users-Looker-Studio.md +0 -0
  247. {gam7-7.7.17 → gam7-7.8.1}/wiki/Users-Meet.md +0 -0
  248. {gam7-7.7.17 → gam7-7.8.1}/wiki/Users-People-Contacts-Profiles.md +0 -0
  249. {gam7-7.7.17 → gam7-7.8.1}/wiki/Users-Photo.md +0 -0
  250. {gam7-7.7.17 → gam7-7.8.1}/wiki/Users-Profile-Photo.md +0 -0
  251. {gam7-7.7.17 → gam7-7.8.1}/wiki/Users-Profile-Sharing.md +0 -0
  252. {gam7-7.7.17 → gam7-7.8.1}/wiki/Users-Signout-Turnoff2SV.md +0 -0
  253. {gam7-7.7.17 → gam7-7.8.1}/wiki/Users-Spreadsheets.md +0 -0
  254. {gam7-7.7.17 → gam7-7.8.1}/wiki/Users-Tasks.md +0 -0
  255. {gam7-7.7.17 → gam7-7.8.1}/wiki/Users-Tokens.md +0 -0
  256. {gam7-7.7.17 → gam7-7.8.1}/wiki/Users-YouTube.md +0 -0
  257. {gam7-7.7.17 → gam7-7.8.1}/wiki/Users.md +0 -0
  258. {gam7-7.7.17 → gam7-7.8.1}/wiki/Using-GAM7-with-a-YubiKey.md +0 -0
  259. {gam7-7.7.17 → gam7-7.8.1}/wiki/Using-GAM7-with-a-delegated-admin-service-account.md +0 -0
  260. {gam7-7.7.17 → gam7-7.8.1}/wiki/Vault-Takeout.md +0 -0
  261. {gam7-7.7.17 → gam7-7.8.1}/wiki/Verifying-a-GAM7-Build-is-Legitimate-and-Official.md +0 -0
  262. {gam7-7.7.17 → gam7-7.8.1}/wiki/_Sidebar.md +0 -0
  263. {gam7-7.7.17 → gam7-7.8.1}/wiki/gam.cfg.md +0 -0
  264. {gam7-7.7.17 → gam7-7.8.1}/wiki/l-AdminSettingsExamples.md +0 -0
  265. {gam7-7.7.17 → gam7-7.8.1}/wiki/l-Android-Installation.md +0 -0
  266. {gam7-7.7.17 → gam7-7.8.1}/wiki/l-BulkOperations.md +0 -0
  267. {gam7-7.7.17 → gam7-7.8.1}/wiki/l-CalendarExamples.md +0 -0
  268. {gam7-7.7.17 → gam7-7.8.1}/wiki/l-Chat-Bot.md +0 -0
  269. {gam7-7.7.17 → gam7-7.8.1}/wiki/l-Chrome-Browser-Management.md +0 -0
  270. {gam7-7.7.17 → gam7-7.8.1}/wiki/l-Chrome-OS-Installation.md +0 -0
  271. {gam7-7.7.17 → gam7-7.8.1}/wiki/l-Chrome-Policy-Settings.md +0 -0
  272. {gam7-7.7.17 → gam7-7.8.1}/wiki/l-Cloud-Identity-Groups.md +0 -0
  273. {gam7-7.7.17 → gam7-7.8.1}/wiki/l-Command-Reference-Calendar-Resources.md +0 -0
  274. {gam7-7.7.17 → gam7-7.8.1}/wiki/l-Command-Reference-Calendars.md +0 -0
  275. {gam7-7.7.17 → gam7-7.8.1}/wiki/l-Command-Reference-Definitions.md +0 -0
  276. {gam7-7.7.17 → gam7-7.8.1}/wiki/l-Command-Reference-Drive.md +0 -0
  277. {gam7-7.7.17 → gam7-7.8.1}/wiki/l-Command-Reference-Email.md +0 -0
  278. {gam7-7.7.17 → gam7-7.8.1}/wiki/l-Command-Reference-Group-Attributes.md +0 -0
  279. {gam7-7.7.17 → gam7-7.8.1}/wiki/l-Command-Reference-Groups.md +0 -0
  280. {gam7-7.7.17 → gam7-7.8.1}/wiki/l-Command-Reference-Users.md +0 -0
  281. {gam7-7.7.17 → gam7-7.8.1}/wiki/l-Context-Aware-Access-Levels.md +0 -0
  282. {gam7-7.7.17 → gam7-7.8.1}/wiki/l-Creating-client_secrets.json-and-oauth2service.json.md +0 -0
  283. {gam7-7.7.17 → gam7-7.8.1}/wiki/l-CreatingClientSecretsFile.md +0 -0
  284. {gam7-7.7.17 → gam7-7.8.1}/wiki/l-Custom-Schemas.md +0 -0
  285. {gam7-7.7.17 → gam7-7.8.1}/wiki/l-Data-Transfers.md +0 -0
  286. {gam7-7.7.17 → gam7-7.8.1}/wiki/l-DomainVerification.md +0 -0
  287. {gam7-7.7.17 → gam7-7.8.1}/wiki/l-ExamplesAccountAuditing.md +0 -0
  288. {gam7-7.7.17 → gam7-7.8.1}/wiki/l-ExamplesCSV.md +0 -0
  289. {gam7-7.7.17 → gam7-7.8.1}/wiki/l-ExamplesEmailSettings.md +0 -0
  290. {gam7-7.7.17 → gam7-7.8.1}/wiki/l-ExamplesOrganizations.md +0 -0
  291. {gam7-7.7.17 → gam7-7.8.1}/wiki/l-GAM-Discussion-Group.md +0 -0
  292. {gam7-7.7.17 → gam7-7.8.1}/wiki/l-GAM-on-Android-and-Chrome-OS.md +0 -0
  293. {gam7-7.7.17 → gam7-7.8.1}/wiki/l-GAM-options-files.md +0 -0
  294. {gam7-7.7.17 → gam7-7.8.1}/wiki/l-GAM-with--minimal-GCP-rights.md +0 -0
  295. {gam7-7.7.17 → gam7-7.8.1}/wiki/l-GAM3CSVListings.md +0 -0
  296. {gam7-7.7.17 → gam7-7.8.1}/wiki/l-GAM3DirectoryCommands.md +0 -0
  297. {gam7-7.7.17 → gam7-7.8.1}/wiki/l-GAM3GroupSettings.md +0 -0
  298. {gam7-7.7.17 → gam7-7.8.1}/wiki/l-GAM7-FAQ.md +0 -0
  299. {gam7-7.7.17 → gam7-7.8.1}/wiki/l-Google-Vault---Takeout-Commands.md +0 -0
  300. {gam7-7.7.17 → gam7-7.8.1}/wiki/l-GoogleDriveManagement.md +0 -0
  301. {gam7-7.7.17 → gam7-7.8.1}/wiki/l-Grouping-18-or-Older-Users.md +0 -0
  302. {gam7-7.7.17 → gam7-7.8.1}/wiki/l-Home.md +0 -0
  303. {gam7-7.7.17 → gam7-7.8.1}/wiki/l-How-to-upgrade-from-Standard-GAM.md +0 -0
  304. {gam7-7.7.17 → gam7-7.8.1}/wiki/l-Inbound-SSO-Settings.md +0 -0
  305. {gam7-7.7.17 → gam7-7.8.1}/wiki/l-LicenseExamples.md +0 -0
  306. {gam7-7.7.17 → gam7-7.8.1}/wiki/l-Managing-Admins.md +0 -0
  307. {gam7-7.7.17 → gam7-7.8.1}/wiki/l-Managing-CloudPrint-Printers.md +0 -0
  308. {gam7-7.7.17 → gam7-7.8.1}/wiki/l-Managing-Devices.md +0 -0
  309. {gam7-7.7.17 → gam7-7.8.1}/wiki/l-Managing-Google-Classroom.md +0 -0
  310. {gam7-7.7.17 → gam7-7.8.1}/wiki/l-OAuthKeyManagement.md +0 -0
  311. {gam7-7.7.17 → gam7-7.8.1}/wiki/l-Printers.md +0 -0
  312. {gam7-7.7.17 → gam7-7.8.1}/wiki/l-ResellerCommands.md +0 -0
  313. {gam7-7.7.17 → gam7-7.8.1}/wiki/l-Running-GAM-on-Google-Compute-Engine-(GCE)-Securely.md +0 -0
  314. {gam7-7.7.17 → gam7-7.8.1}/wiki/l-SecurityExamples.md +0 -0
  315. {gam7-7.7.17 → gam7-7.8.1}/wiki/l-UnmanagedUsersExamples.md +0 -0
  316. {gam7-7.7.17 → gam7-7.8.1}/wiki/l-Use-a-Yubikey.md +0 -0
  317. {gam7-7.7.17 → gam7-7.8.1}/wiki/l-Using-GAM-with-a-delegated-admin-service-account-(DASA).md +0 -0
  318. {gam7-7.7.17 → gam7-7.8.1}/wiki/l-_Footer.md +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gam7
3
- Version: 7.7.17
3
+ Version: 7.8.1
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
@@ -1383,7 +1383,7 @@ gam show projects [[admin] <EmailAddress>] [all|<ProjectIDEntity>]
1383
1383
  [states all|active|deleterequested] [showiampolicies 0|1|3]
1384
1384
  gam print projects [[admin] <EmailAddress>] [all|<ProjectIDEntity>] [todrive <ToDriveAttribute>*]
1385
1385
  [states all|active|deleterequested] [showiampolicies 0|1|3 [onememberperrow]]
1386
- [delimiter <Character>]] [[formatjson [quotechar <Character>]]
1386
+ [delimiter <Character>] [[formatjson [quotechar <Character>]]
1387
1387
  gam info currentprojectid
1388
1388
 
1389
1389
  gam create|add svcacct [[admin] <EmailAddress>] [<ProjectIDEntity>]
@@ -4819,6 +4819,17 @@ gam show shareddrives
4819
4819
  [fields <SharedDriveFieldNameList>] [noorgunits [<Boolean>]]
4820
4820
  [formatjson] [noorgunits [<Boolean>]]
4821
4821
 
4822
+ gam print shareddriveorganizers [todrive <ToDriveAttribute>*]
4823
+ [(shareddriveadminquery|query <QuerySharedDrive>) |
4824
+ (shareddrives|teamdrives (<SharedDriveIDList>|(select <FileSelector>|<CSVFileSelector>)))]
4825
+ [orgunit|org|ou <OrgUnitPath>]
4826
+ [matchname <REMatchPattern>]
4827
+ [domainlist <DomainList>]
4828
+ [includetypes <OrganizerTypeList>]
4829
+ [oneorganizer [<Boolean>]]
4830
+ [shownorganizerdrives [false|true|only]]
4831
+ [includefileorganizers [<Boolean>]]
4832
+ [delimiter <Character>]
4822
4833
  gam print oushareddrives [todrive <ToDriveAttribute>*]
4823
4834
  [ou|org|orgunit <OrgUnitPath>]
4824
4835
  [formatjson [quotechar <Character>]]
@@ -8326,6 +8337,19 @@ gam <UserTypeEntity> show shareddrives
8326
8337
  [fields <SharedDriveFieldNameList>] [noorgunits [<Boolean>]]
8327
8338
  [formatjson]
8328
8339
 
8340
+ gam <UserTypeEntity> print shareddriveorganizers [todrive <ToDriveAttribute>*]
8341
+ [adminaccess|asadmin]
8342
+ [(shareddriveadminquery|query <QuerySharedDrive>) |
8343
+ (shareddrives|teamdrives (<SharedDriveIDList>|(select <FileSelector>|<CSVFileSelector>)))]
8344
+ [orgunit|org|ou <OrgUnitPath>]
8345
+ [matchname <REMatchPattern>]
8346
+ [domainlist <DomainList>]
8347
+ [includetypes <OrganizerTypeList>]
8348
+ [oneorganizer [<Boolean>]]
8349
+ [shownorganizerdrives [false|true|only]]
8350
+ [includefileorganizers [<Boolean>]]
8351
+ [delimiter <Character>]
8352
+
8329
8353
  # Users - Force Signout and Turn Off 2-Step Verification
8330
8354
 
8331
8355
  gam <UserTypeEntity> signout
@@ -1,3 +1,36 @@
1
+ 7.08.01
2
+
3
+ Added option `shareddrives (<SharedDriveIDList>|(select <FileSelector>|<CSVFileSelector>))` to
4
+ `gam print shareddriveorganizers` that displays organizers for a specific list of Shared Drive IDs.
5
+
6
+ 7.08.00
7
+
8
+ Added the following command that can be used instead of the `GetTeamDriveOrganizers.py` script.
9
+
10
+ ```
11
+ gam [<UserTypeEntity>] print shareddriveorganizers [todrive <ToDriveAttribute>*]
12
+ [adminaccess|asadmin] [shareddriveadminquery|query <QuerySharedDrive>]
13
+ [orgunit|org|ou <OrgUnitPath>]
14
+ [matchname <REMatchPattern>]
15
+ [domainlist <DomainList>]
16
+ [includetypes <OrganizerTypeList>]
17
+ [oneorganizer [<Boolean>]]
18
+ [shownorganizerdrives [false|true|only]]
19
+ [includefileorganizers [<Boolean>]]
20
+ [delimiter <Character>]
21
+ ```
22
+ The command defaults match the script defaults:
23
+ * `domainlist` - All domains
24
+ * `includetypes` - user,group
25
+ * `oneorganizer` - False
26
+ * `shownoorganizerdrives` - True
27
+ * `includefileorganizers` - False
28
+
29
+ For example, to get a single organizer from your domain for all Shared Drives including no organizer drives:
30
+ ```
31
+ gam redirect csv ./TeamDriveOrganizers.csv print shareddriveorganizers domainlist mydomain.com includetypes user oneorganizer shownoorganizerdrives
32
+ ```
33
+
1
34
  7.07.17
2
35
 
3
36
  Added option `oneuserperrow` to `gam print devices` to have each of a
@@ -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.17'
28
+ __version__ = '7.08.01'
29
29
  __license__ = 'Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)'
30
30
 
31
31
  #pylint: disable=wrong-import-position
@@ -17102,11 +17102,11 @@ DATA_TRANSFER_SORT_TITLES = ['id', 'requestTime', 'oldOwnerUserEmail', 'newOwner
17102
17102
 
17103
17103
  # gam print datatransfers|transfers [todrive <ToDriveAttribute>*]
17104
17104
  # [olduser|oldowner <UserItem>] [newuser|newowner <UserItem>]
17105
- # [status <String>] [delimiter <Character>]]
17105
+ # [status <String>] [delimiter <Character>]
17106
17106
  # (addcsvdata <FieldName> <String>)*
17107
17107
  # gam show datatransfers|transfers
17108
17108
  # [olduser|oldowner <UserItem>] [newuser|newowner <UserItem>]
17109
- # [status <String>] [delimiter <Character>]]
17109
+ # [status <String>] [delimiter <Character>]
17110
17110
  def doPrintShowDataTransfers():
17111
17111
  dt = buildGAPIObject(API.DATATRANSFER)
17112
17112
  apps = getTransferApplications(dt)
@@ -66050,6 +66050,191 @@ def printShowSharedDriveACLs(users, useDomainAdminAccess=False):
66050
66050
  def doPrintShowSharedDriveACLs():
66051
66051
  printShowSharedDriveACLs([_getAdminEmail()], True)
66052
66052
 
66053
+ PRINT_ORGANIZER_TYPES = {'group', 'user'}
66054
+
66055
+ # gam [<UserTypeEntity>] print shareddriveorganizers [todrive <ToDriveAttribute>*]
66056
+ # [adminaccess|asadmin]
66057
+ # [(shareddriveadminquery|query <QuerySharedDrive>) |
66058
+ # (shareddrives|teamdrives (<SharedDriveIDList>|(select <FileSelector>|<CSVFileSelector>)))]
66059
+ # [matchname <REMatchPattern>] [orgunit|org|ou <OrgUnitPath>]
66060
+ # [domainlist <DomainList>]
66061
+ # [includetypes user|group]
66062
+ # [oneorganizer [<Boolean>]]
66063
+ # [shownorganizerdrives false|true|only]
66064
+ # [includefileorganizers [<Boolean>]]
66065
+ # [delimiter <Character>]
66066
+ def printSharedDriveOrganizers(users, useDomainAdminAccess=False):
66067
+ csvPF = CSVPrintFile(['id', 'name', 'organizers', 'createdTime'], 'sortall')
66068
+ delimiter = GC.Values[GC.CSV_OUTPUT_FIELD_DELIMITER]
66069
+ roles = set(['organizer'])
66070
+ includeTypes = set()
66071
+ showNoOrganizerDrives = SHOW_NO_PERMISSIONS_DRIVES_CHOICE_MAP['false']
66072
+ fieldsList = ['role', 'type', 'emailAddress']
66073
+ cd = entityList = orgUnitId = query = matchPattern = None
66074
+ domainList = []
66075
+ oneOrganizer = False
66076
+ while Cmd.ArgumentsRemaining():
66077
+ myarg = getArgument()
66078
+ if csvPF and myarg == 'todrive':
66079
+ csvPF.GetTodriveParameters()
66080
+ elif myarg == 'delimiter':
66081
+ delimiter = getCharacter()
66082
+ elif myarg in {'shareddrive', 'shareddrives', 'teamdrive', 'teamdrives'}:
66083
+ sharedDriveArg = myarg
66084
+ itemList = getString(Cmd.OB_SHAREDDRIVE_ID_LIST)
66085
+ if itemList != 'select':
66086
+ entityList = itemList.replace(',', ' ').split()
66087
+ else:
66088
+ entityList = getEntityList(Cmd.OB_SHAREDDRIVE_ID_LIST)
66089
+ elif myarg in {'teamdriveadminquery', 'shareddriveadminquery', 'query'}:
66090
+ queryArg = myarg
66091
+ queryLocation = Cmd.Location()
66092
+ query = getString(Cmd.OB_QUERY, minLen=0) or None
66093
+ if query:
66094
+ query = mapQueryRelativeTimes(query, ['createdTime'])
66095
+ elif myarg == 'matchname':
66096
+ matchPattern = getREPattern(re.IGNORECASE)
66097
+ elif myarg in {'ou', 'org', 'orgunit'}:
66098
+ orgLocation = Cmd.Location()
66099
+ if cd is None:
66100
+ cd = buildGAPIObject(API.DIRECTORY)
66101
+ orgUnitPath, orgUnitId = getOrgUnitId(cd)
66102
+ orgUnitId = orgUnitId[3:]
66103
+ orgUnitInfo = {'orgUnit': orgUnitPath, 'orgUnitId': orgUnitId}
66104
+ elif myarg in ADMIN_ACCESS_OPTIONS:
66105
+ useDomainAdminAccess = True
66106
+ elif myarg == 'domainlist':
66107
+ domainList = set(getString(Cmd.OB_DOMAIN_NAME_LIST).replace(',', ' ').lower().split())
66108
+ elif myarg == 'includetypes':
66109
+ for itype in getString(Cmd.OB_ORGANIZER_TYPE_LIST).lower().replace(',', ' ').split():
66110
+ if itype in PRINT_ORGANIZER_TYPES:
66111
+ includeTypes.add(itype)
66112
+ else:
66113
+ invalidChoiceExit(itype, PRINT_ORGANIZER_TYPES, True)
66114
+ elif myarg == 'oneorganizer':
66115
+ oneOrganizer = getBoolean()
66116
+ elif myarg == 'shownoorganizerdrives':
66117
+ showNoOrganizerDrives = getChoice(SHOW_NO_PERMISSIONS_DRIVES_CHOICE_MAP, defaultChoice=1, mapChoice=True)
66118
+ elif myarg in {'includefileorganizers', 'includecontentmanagers'}:
66119
+ if getBoolean():
66120
+ roles.add('fileOrganizer')
66121
+ else:
66122
+ unknownArgumentExit()
66123
+ if query:
66124
+ if not useDomainAdminAccess:
66125
+ Cmd.SetLocation(queryLocation-1)
66126
+ usageErrorExit(Msg.ONLY_ADMINISTRATORS_CAN_PERFORM_SHARED_DRIVE_QUERIES)
66127
+ if entityList:
66128
+ Cmd.SetLocation(queryLocation-1)
66129
+ usageErrorExit(Msg.ARE_MUTUALLY_EXCLUSIVE.format(queryArg, sharedDriveArg))
66130
+ if orgUnitId is not None:
66131
+ if not useDomainAdminAccess:
66132
+ Cmd.SetLocation(orgLocation-1)
66133
+ usageErrorExit(Msg.ONLY_ADMINISTRATORS_CAN_SPECIFY_SHARED_DRIVE_ORGUNIT)
66134
+ csvPF.AddTitles(['orgUnit', 'orgUnitId'])
66135
+ if not includeTypes:
66136
+ includeTypes = PRINT_ORGANIZER_TYPES
66137
+ fields = getItemFieldsFromFieldsList('permissions', fieldsList, True)
66138
+ i, count, users = getEntityArgument(users)
66139
+ for user in users:
66140
+ i += 1
66141
+ user, drive = buildGAPIServiceObject(API.DRIVE3, user, i, count)
66142
+ if not drive:
66143
+ continue
66144
+ if entityList is None:
66145
+ if useDomainAdminAccess:
66146
+ printGettingAllAccountEntities(Ent.SHAREDDRIVE, query)
66147
+ pageMessage = getPageMessage()
66148
+ else:
66149
+ printGettingAllEntityItemsForWhom(Ent.SHAREDDRIVE, user, i, count, query)
66150
+ pageMessage = getPageMessageForWhom()
66151
+ try:
66152
+ feed = callGAPIpages(drive.drives(), 'list', 'drives',
66153
+ pageMessage=pageMessage,
66154
+ throwReasons=GAPI.DRIVE_USER_THROW_REASONS+[GAPI.INVALID_QUERY, GAPI.INVALID,
66155
+ GAPI.QUERY_REQUIRES_ADMIN_CREDENTIALS,
66156
+ GAPI.NO_LIST_TEAMDRIVES_ADMINISTRATOR_PRIVILEGE,
66157
+ GAPI.FILE_NOT_FOUND],
66158
+ q=query, useDomainAdminAccess=useDomainAdminAccess,
66159
+ fields='nextPageToken,drives(id,name,createdTime,orgUnitId)', pageSize=100)
66160
+ except (GAPI.invalidQuery, GAPI.invalid, GAPI.queryRequiresAdminCredentials,
66161
+ GAPI.noListTeamDrivesAdministratorPrivilege, GAPI.fileNotFound) as e:
66162
+ entityActionFailedWarning([Ent.USER, user, Ent.SHAREDDRIVE, None], str(e), i, count)
66163
+ continue
66164
+ except (GAPI.serviceNotAvailable, GAPI.authError, GAPI.domainPolicy) as e:
66165
+ userDriveServiceNotEnabledWarning(user, str(e), i, count)
66166
+ continue
66167
+ else:
66168
+ feed = []
66169
+ jcount = len(entityList)
66170
+ j = 0
66171
+ for driveId in entityList:
66172
+ j +=1
66173
+ try:
66174
+ feed.append(callGAPI(drive.drives(), 'get',
66175
+ throwReasons=GAPI.DRIVE_USER_THROW_REASONS+[GAPI.NOT_FOUND],
66176
+ useDomainAdminAccess=useDomainAdminAccess,
66177
+ driveId=driveId, fields='id,name,createdTime,orgUnitId'))
66178
+ except (GAPI.fileNotFound, GAPI.notFound) as e:
66179
+ entityActionNotPerformedWarning([Ent.USER, user, Ent.SHAREDDRIVE_ID, driveId], str(e), j, jcount)
66180
+ continue
66181
+ except (GAPI.serviceNotAvailable, GAPI.authError, GAPI.domainPolicy) as e:
66182
+ userDriveServiceNotEnabledWarning(user, str(e), i, count)
66183
+ break
66184
+ matchFeed = []
66185
+ jcount = len(feed)
66186
+ j = 0
66187
+ for shareddrive in feed:
66188
+ j += 1
66189
+ if ((matchPattern is not None and matchPattern.match(shareddrive['name']) is None) or
66190
+ (orgUnitId is not None and orgUnitId != shareddrive.get('orgUnitId'))):
66191
+ continue
66192
+ printGettingAllEntityItemsForWhom(Ent.PERMISSION, shareddrive['name'], j, jcount)
66193
+ shareddrive['createdTime'] = formatLocalTime(shareddrive['createdTime'])
66194
+ shareddrive['organizers'] = []
66195
+ try:
66196
+ permissions = callGAPIpages(drive.permissions(), 'list', 'permissions',
66197
+ pageMessage=getPageMessageForWhom(),
66198
+ throwReasons=GAPI.DRIVE3_GET_ACL_REASONS,
66199
+ retryReasons=GAPI.SERVICE_NOT_AVAILABLE_RETRY_REASONS,
66200
+ useDomainAdminAccess=useDomainAdminAccess,
66201
+ fileId=shareddrive['id'], fields=fields, supportsAllDrives=True)
66202
+ for permission in permissions:
66203
+ if permission['type'] in includeTypes and permission['role'] in roles:
66204
+ if domainList:
66205
+ _, domain = permission['emailAddress'].lower().split('@', 1)
66206
+ if domain not in domainList:
66207
+ continue
66208
+ shareddrive['organizers'].append(permission['emailAddress'])
66209
+ if oneOrganizer:
66210
+ break
66211
+ if not shareddrive['organizers']:
66212
+ if showNoOrganizerDrives == 0: # no organizers and showNoOrganizerDrives False - ignore
66213
+ continue
66214
+ matchFeed.append(shareddrive) # no organizers and showNoOrganizerDrives Only/True - keep
66215
+ continue
66216
+ if showNoOrganizerDrives < 0: # organizers and showNoOrganizerDrives Only/True - ignore
66217
+ continue
66218
+ matchFeed.append(shareddrive)
66219
+ except (GAPI.fileNotFound, GAPI.forbidden, GAPI.internalError,
66220
+ GAPI.insufficientAdministratorPrivileges, GAPI.insufficientFilePermissions,
66221
+ GAPI.unknownError, GAPI.invalid):
66222
+ pass
66223
+ if len(matchFeed) == 0:
66224
+ setSysExitRC(NO_ENTITIES_FOUND_RC)
66225
+ for shareddrive in matchFeed:
66226
+ row = {'id': shareddrive['id'], 'name': shareddrive['name'],
66227
+ 'organizers': delimiter.join(shareddrive['organizers']),
66228
+ 'createdTime': shareddrive['createdTime']}
66229
+ if orgUnitId:
66230
+ row.update(orgUnitInfo)
66231
+ csvPF.WriteRowTitles(row)
66232
+ if csvPF:
66233
+ csvPF.writeCSVfile('SharedDrive Organizers')
66234
+
66235
+ def doPrintSharedDriveOrganizers():
66236
+ printSharedDriveOrganizers([_getAdminEmail()], True)
66237
+
66053
66238
  LOOKERSTUDIO_ASSETTYPE_CHOICE_MAP = {
66054
66239
  'report': ['REPORT'],
66055
66240
  'datasource': ['DATA_SOURCE'],
@@ -75936,6 +76121,7 @@ MAIN_COMMANDS_WITH_OBJECTS = {
75936
76121
  Cmd.ARG_SCHEMA: doPrintShowUserSchemas,
75937
76122
  Cmd.ARG_SHAREDDRIVE: doPrintShowSharedDrives,
75938
76123
  Cmd.ARG_SHAREDDRIVEACLS: doPrintShowSharedDriveACLs,
76124
+ Cmd.ARG_SHAREDDRIVEORGANIZERS: doPrintSharedDriveOrganizers,
75939
76125
  Cmd.ARG_SITE: deprecatedDomainSites,
75940
76126
  Cmd.ARG_SITEACL: deprecatedDomainSites,
75941
76127
  Cmd.ARG_SITEACTIVITY: deprecatedDomainSites,
@@ -76284,6 +76470,7 @@ MAIN_COMMANDS_OBJ_ALIASES = {
76284
76470
  Cmd.ARG_TEAMDRIVES: Cmd.ARG_SHAREDDRIVE,
76285
76471
  Cmd.ARG_TEAMDRIVEACLS: Cmd.ARG_SHAREDDRIVEACLS,
76286
76472
  Cmd.ARG_TEAMDRIVEINFO: Cmd.ARG_SHAREDDRIVEINFO,
76473
+ Cmd.ARG_TEAMDRIVEORGANIZERS: Cmd.ARG_SHAREDDRIVEORGANIZERS,
76287
76474
  Cmd.ARG_TEAMDRIVETHEMES: Cmd.ARG_SHAREDDRIVETHEMES,
76288
76475
  Cmd.ARG_TOKENS: Cmd.ARG_TOKEN,
76289
76476
  Cmd.ARG_TRANSFER: Cmd.ARG_DATATRANSFER,
@@ -76976,6 +77163,7 @@ USER_COMMANDS_WITH_OBJECTS = {
76976
77163
  Cmd.ARG_SENDAS: printShowSendAs,
76977
77164
  Cmd.ARG_SHAREDDRIVE: printShowSharedDrives,
76978
77165
  Cmd.ARG_SHAREDDRIVEACLS: printShowSharedDriveACLs,
77166
+ Cmd.ARG_SHAREDDRIVEORGANIZERS: printSharedDriveOrganizers,
76979
77167
  Cmd.ARG_SHEET: infoPrintShowSheets,
76980
77168
  Cmd.ARG_SHEETRANGE: printShowSheetRanges,
76981
77169
  Cmd.ARG_SIGNATURE: printShowSignature,
@@ -77333,6 +77521,7 @@ USER_COMMANDS_OBJ_ALIASES = {
77333
77521
  Cmd.ARG_TEAMDRIVES: Cmd.ARG_SHAREDDRIVE,
77334
77522
  Cmd.ARG_TEAMDRIVEACLS: Cmd.ARG_SHAREDDRIVEACLS,
77335
77523
  Cmd.ARG_TEAMDRIVEINFO: Cmd.ARG_SHAREDDRIVEINFO,
77524
+ Cmd.ARG_TEAMDRIVEORGANIZERS: Cmd.ARG_SHAREDDRIVEORGANIZERS,
77336
77525
  Cmd.ARG_TEAMDRIVETHEMES: Cmd.ARG_SHAREDDRIVETHEMES,
77337
77526
  Cmd.ARG_THREADS: Cmd.ARG_THREAD,
77338
77527
  Cmd.ARG_TOKENS: Cmd.ARG_TOKEN,
@@ -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
  #
@@ -755,6 +755,7 @@ class GamCLArgs():
755
755
  ARG_SHAREDDRIVES = 'shareddrives'
756
756
  ARG_SHAREDDRIVEACLS = 'shareddriveacls'
757
757
  ARG_SHAREDDRIVEINFO = 'shareddriveinfo'
758
+ ARG_SHAREDDRIVEORGANIZERS = 'shareddriveorganizers'
758
759
  ARG_SHAREDDRIVETHEMES = 'shareddrivethemes'
759
760
  ARG_SHEET = 'sheet'
760
761
  ARG_SHEETS = 'sheets'
@@ -784,6 +785,7 @@ class GamCLArgs():
784
785
  ARG_TEAMDRIVES = 'teamdrives'
785
786
  ARG_TEAMDRIVEACLS = 'teamdriveacls'
786
787
  ARG_TEAMDRIVEINFO = 'teamdriveinfo'
788
+ ARG_TEAMDRIVEORGANIZERS = 'teamdriveorganizers'
787
789
  ARG_TEAMDRIVETHEMES = 'teamdrivethemes'
788
790
  ARG_THREAD = 'thread'
789
791
  ARG_THREADS = 'threads'
@@ -964,6 +966,7 @@ class GamCLArgs():
964
966
  OB_MOBILE_ENTITY = 'MobileEntity'
965
967
  OB_NETWORK_ID = 'networkID'
966
968
  OB_NAME = 'Name'
969
+ OB_ORGANIZER_TYPE_LIST = 'OrganizerTypeList'
967
970
  OB_ORGUNIT_ENTITY = 'OrgUnitEntity'
968
971
  OB_ORGUNIT_ITEM = 'OrgUnitItem'
969
972
  OB_ORGUNIT_PATH = 'OrgUnitPath'
@@ -210,7 +210,7 @@ gam print devices [todrive <ToDriveAttribute>*]
210
210
  <DeviceFieldName>* [fields <DeviceFieldNameList>] [userfields <DeviceUserFieldNameList>]
211
211
  [orderby <DeviceOrderByFieldName> [ascending|descending]]
212
212
  [all|company|personal|nocompanydevices|nopersonaldevices]
213
- [nodeviceusers]
213
+ [nodeviceusers|oneuserperrow]
214
214
  [formatjson [quotechar <Character>]]
215
215
  ```
216
216
  By default, all devices are displayed; use the query options to limit the display.
@@ -231,6 +231,9 @@ Select the view of devices to display:
231
231
  By default, Gam makes additional API calls to display the device users for the devices;
232
232
  use `nodeviceuser` to suppress making the additional calls.
233
233
 
234
+ By default, when device users are displayed, they are all displayed on one row;
235
+ use `oneuserperrow` to have each of a device's users displayed on a separate row with all of the other device fields.
236
+
234
237
  By default, Gam displays the information as columns of fields; the following option causes the output to be in JSON format,
235
238
  * `formatjson` - Display the fields in JSON format.
236
239
 
@@ -10,6 +10,47 @@ 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.08.01
14
+
15
+ Added option `shareddrives (<SharedDriveIDList>|(select <FileSelector>|<CSVFileSelector>))` to
16
+ `gam print shareddriveorganizers` that displays organizers for a specific list of Shared Drive IDs.
17
+
18
+ See: https://github.com/GAM-team/GAM/wiki/Shared-Drives#display-shared-drive-organizers
19
+
20
+ ### 7.08.00
21
+
22
+ Added the following command that can be used instead of the `GetTeamDriveOrganizers.py` script.
23
+
24
+ gam [<UserTypeEntity>] print shareddriveorganizers [todrive <ToDriveAttribute>*]
25
+ [adminaccessasadmin] [shareddriveadminquery|query <QuerySharedDrive>]
26
+ [orgunit|org|ou <OrgUnitPath>]
27
+ [matchname <REMatchPattern>]
28
+ [domainlist <DomainList>]
29
+ [includetypes <OrganizerTypeList>]
30
+ [oneorganizer [<Boolean>]]
31
+ [shownorganizerdrives [false|true|only]]
32
+ [includefileorganizers [<Boolean>]]
33
+ [delimiter <Character>]
34
+ ```
35
+ See: https://github.com/GAM-team/GAM/wiki/Shared-Drives#display-shared-drive-organizers
36
+
37
+ The command defaults match the script defaults:
38
+ * `domainlist` - All domains
39
+ * `includetypes` - user,group
40
+ * `oneorganizer` - False
41
+ * `shownoorganizerdrives` - True
42
+ * `includefileorganizers` - False
43
+
44
+ For example, to get a single user organizer from your domain for all Shared Drives including no organizer drives:
45
+ ```
46
+ gam redirect csv ./TeamDriveOrganizers.csv print shareddriveorganizers domainlist mydomain.com includetypes user oneorganizer shownoorganizerdrives
47
+ ```
48
+
49
+ ### 7.07.17
50
+
51
+ Added option `oneuserperrow` to `gam print devices` to have each of a
52
+ device's users displayed on a separate row with all of the other device fields.
53
+
13
54
  ### 7.07.16
14
55
 
15
56
  Added `chromeostype`, `diskspaceusage` and `faninfo` to `<CrOSFieldName>` for use in `gam info|print cros`.
@@ -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.16 - https://github.com/GAM-team/GAM - pyinstaller
254
+ GAM 7.08.01 - 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.16 - https://github.com/GAM-team/GAM - pythonsource
992
+ GAM 7.08.01 - 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