gam7 7.7.17__tar.gz → 7.8.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.
- {gam7-7.7.17 → gam7-7.8.0}/PKG-INFO +1 -1
- {gam7-7.7.17 → gam7-7.8.0}/src/GamCommands.txt +22 -1
- {gam7-7.7.17 → gam7-7.8.0}/src/GamUpdate.txt +28 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/__init__.py +160 -3
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/gamlib/glclargs.py +4 -1
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Cloud-Identity-Devices.md +4 -1
- {gam7-7.7.17 → gam7-7.8.0}/wiki/GamUpdates.md +5 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/How-to-Upgrade-Legacy-GAM-to-GAM7.md +2 -2
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Shared-Drives.md +35 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Users-Gmail-Delegates.md +6 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Version-and-Help.md +6 -6
- {gam7-7.7.17 → gam7-7.8.0}/.github/ISSUE_TEMPLATE/aa-question.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/.github/ISSUE_TEMPLATE/za-bug-report.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/.github/ISSUE_TEMPLATE/zz-feature-request.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/.github/ISSUE_TEMPLATE.txt +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/.github/actions/decrypt.sh +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/.github/actions/entitlements.plist +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/.github/actions/package_exclusions.txt +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/.github/stale.yml +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/.github/workflows/build.yml +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/.github/workflows/codeql-analysis.yml +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/.github/workflows/get-cacerts.yml +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/.github/workflows/pushwiki.yml +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/.github/workflows/pypi.yml +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/.pre-commit-config.yaml +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/LICENSE +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/README.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/pyproject.toml +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/.gitignore +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/LICENSE +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/cacerts.pem +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/callgam.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/__main__.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/atom/__init__.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/atom/auth.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/atom/client.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/atom/core.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/atom/data.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/atom/http.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/atom/http_core.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/atom/http_interface.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/atom/mock_http.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/atom/mock_http_core.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/atom/mock_service.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/atom/service.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/atom/token_store.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/atom/url.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/cacerts.pem +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/cbcm-v1.1beta1.json +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/contactdelegation-v1.json +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/datastudio-v1.json +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/gamlib/__init__.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/gamlib/glaction.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/gamlib/glapi.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/gamlib/glcfg.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/gamlib/glentity.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/gamlib/glgapi.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/gamlib/glgdata.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/gamlib/glglobals.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/gamlib/glindent.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/gamlib/glmsgs.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/gamlib/glskus.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/gamlib/gluprop.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/gamlib/glverlibs.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/gamlib/yubikey.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/gdata/__init__.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/gdata/alt/__init__.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/gdata/alt/app_engine.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/gdata/alt/appengine.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/gdata/apps/__init__.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/gdata/apps/audit/__init__.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/gdata/apps/audit/service.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/gdata/apps/contacts/__init__.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/gdata/apps/contacts/service.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/gdata/apps/service.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/gdata/service.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/gdata/urlfetch.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/googleapiclient/__init__.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/googleapiclient/_auth.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/googleapiclient/_helpers.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/googleapiclient/channel.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/googleapiclient/discovery.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/googleapiclient/discovery_cache/__init__.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/googleapiclient/discovery_cache/appengine_memcache.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/googleapiclient/discovery_cache/base.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/googleapiclient/discovery_cache/file_cache.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/googleapiclient/errors.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/googleapiclient/http.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/googleapiclient/mimeparse.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/googleapiclient/model.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/googleapiclient/schema.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/googleapiclient/version.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/iso8601/__init__.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/iso8601/iso8601.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/meet-v2beta.json +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/serviceaccountlookup-v1.json +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam/six.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam-install.sh +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam-setup.bat +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam.exe.manifest +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam.spec +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/gam.wxs +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/license.rtf +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/requirements-dev.txt +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/requirements.txt +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/setup.cfg +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/setup.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/tools/a_atleast_b.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/tools/gen-wix-xml-filelist.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/tools/mkGamRef.py +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/tools/openssl.props +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/src/version_info.txt.in +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/00scratch.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Addresses.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Administrators.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Alert-Center.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Aliases.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Authorization.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/BNF-Syntax.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Basic-Items.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Bulk-Processing.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/CSV-Input-Filtering.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/CSV-Output-Filtering.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/CSV-Special-Characters.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Calendars-Access.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Calendars-Events.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Calendars.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Chat-Bot.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Chrome-AUE-Counts.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Chrome-Browser-Cloud-Management.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Chrome-Installed-Apps.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Chrome-Needs-Attention-Counts.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Chrome-Policies.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Chrome-Printers.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Chrome-Profile-Management.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Chrome-Version-Counts.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Chrome-Version-History.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/ChromeOS-Devices.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Classroom-Courses.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Classroom-Guardians.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Classroom-Invitations.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Classroom-Membership.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Cloud-Channel.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Cloud-Identity-Groups-Membership.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Cloud-Identity-Groups.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Cloud-Identity-Policies.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Cloud-Storage.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Collections-of-ChromeOS-Devices.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Collections-of-Items.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Collections-of-Users.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Command-Data-From-Google-Docs-Sheets-Storage.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Command-Line-Parsing.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Command-Logging-Progress.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Context-Aware-Access-Levels.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Customer.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Domain-People-Contacts-Profiles.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Domain-SharedContacts.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Domains-Verification.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Domains.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Downloads-Installs.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Drive-File-Selection.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Drive-Items.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Drive-REST-API-v3.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Email-Audit-Monitor.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Find-File-Owner.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/GAM-Public-Chat-Room.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/GAM-Return-Codes.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/GAM-with-minimal-GCP-rights.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/GAM7-on-Android-Devices.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/GAM7-on-Chrome-OS-Devices.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Google-Data-Transfers.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Google-Network-Addresses.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Groups-Membership.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Groups.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/HTTPS-Proxy.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Home.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/How-to-Install-GAM7.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/How-to-Uninstall-GAM7.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/How-to-Update-GAM7.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/How-to-Upgrade-GAMADV-XTD3-to-GAM7.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Inbound-SSO.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Install-GAM-as-Python-Library.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Licenses.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/List-Items.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/List.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Meta-Commands-and-File-Redirection.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Mobile-Devices.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Organizational-Units.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Other-Resources.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Permission-Matches.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Python-Regular-Expressions.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/README.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Rclone.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Reports.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Reseller.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Resources.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Running-GAM7-securely-on-a-Google-Compute-Engine.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/SSL-Root-CA-Certificates.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Schemas.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Scripts.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Send-Email.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Sites.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Tag-Replace.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Todrive.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Unmanaged-Accounts.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Upgrade-Benefits.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Users-Analytics-Admin.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Users-Application-Specific-Passwords.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Users-Backup-Verification-Codes.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Users-Calendars-Access.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Users-Calendars-Events.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Users-Calendars.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Users-Chat.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Users-Classification-Labels.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Users-Classroom-Profile.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Users-Contacts-Delegates.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Users-Contacts.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Users-Deprovision.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Users-Drive-Activity-Settings.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Users-Drive-Cleanup.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Users-Drive-Comments.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Users-Drive-Copy-Move.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Users-Drive-Files-Display.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Users-Drive-Files-Manage.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Users-Drive-Orphans.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Users-Drive-Ownership.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Users-Drive-Permissions.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Users-Drive-Query.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Users-Drive-Revisions.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Users-Drive-Shortcuts.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Users-Drive-Transfer.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Users-Forms.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Users-Gmail-CSE.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Users-Gmail-Filters.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Users-Gmail-Forwarding.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Users-Gmail-Labels.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Users-Gmail-Messages-Threads.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Users-Gmail-Profile.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Users-Gmail-S-MIME.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Users-Gmail-Send-As-Signature-Vacation.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Users-Gmail-Settings.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Users-Group-Membership.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Users-Keep-Notes.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Users-Looker-Studio.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Users-Meet.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Users-People-Contacts-Profiles.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Users-Photo.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Users-Profile-Photo.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Users-Profile-Sharing.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Users-Shared-Drives.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Users-Signout-Turnoff2SV.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Users-Spreadsheets.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Users-Tasks.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Users-Tokens.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Users-YouTube.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Users.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Using-GAM7-with-a-YubiKey.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Using-GAM7-with-a-delegated-admin-service-account.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Vault-Takeout.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/Verifying-a-GAM7-Build-is-Legitimate-and-Official.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/_Sidebar.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/gam.cfg.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/l-AdminSettingsExamples.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/l-Android-Installation.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/l-BulkOperations.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/l-CalendarExamples.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/l-Chat-Bot.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/l-Chrome-Browser-Management.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/l-Chrome-OS-Installation.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/l-Chrome-Policy-Settings.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/l-Cloud-Identity-Groups.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/l-Command-Reference-Calendar-Resources.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/l-Command-Reference-Calendars.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/l-Command-Reference-Definitions.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/l-Command-Reference-Drive.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/l-Command-Reference-Email.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/l-Command-Reference-Group-Attributes.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/l-Command-Reference-Groups.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/l-Command-Reference-Users.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/l-Context-Aware-Access-Levels.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/l-Creating-client_secrets.json-and-oauth2service.json.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/l-CreatingClientSecretsFile.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/l-Custom-Schemas.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/l-Data-Transfers.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/l-DomainVerification.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/l-ExamplesAccountAuditing.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/l-ExamplesCSV.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/l-ExamplesEmailSettings.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/l-ExamplesOrganizations.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/l-GAM-Discussion-Group.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/l-GAM-on-Android-and-Chrome-OS.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/l-GAM-options-files.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/l-GAM-with--minimal-GCP-rights.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/l-GAM3CSVListings.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/l-GAM3DirectoryCommands.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/l-GAM3GroupSettings.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/l-GAM7-FAQ.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/l-Google-Vault---Takeout-Commands.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/l-GoogleDriveManagement.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/l-Grouping-18-or-Older-Users.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/l-Home.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/l-How-to-upgrade-from-Standard-GAM.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/l-Inbound-SSO-Settings.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/l-LicenseExamples.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/l-Managing-Admins.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/l-Managing-CloudPrint-Printers.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/l-Managing-Devices.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/l-Managing-Google-Classroom.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/l-OAuthKeyManagement.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/l-Printers.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/l-ResellerCommands.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/l-Running-GAM-on-Google-Compute-Engine-(GCE)-Securely.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/l-SecurityExamples.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/l-UnmanagedUsersExamples.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/l-Use-a-Yubikey.md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/l-Using-GAM-with-a-delegated-admin-service-account-(DASA).md +0 -0
- {gam7-7.7.17 → gam7-7.8.0}/wiki/l-_Footer.md +0 -0
|
@@ -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>]
|
|
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,16 @@ 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
|
+
[orgunit|org|ou <OrgUnitPath>]
|
|
4825
|
+
[matchname <REMatchPattern>]
|
|
4826
|
+
[domainlist <DomainList>]
|
|
4827
|
+
[includetypes <OrganizerTypeList>]
|
|
4828
|
+
[oneorganizer [<Boolean>]]
|
|
4829
|
+
[shownorganizerdrives [false|true|only]]
|
|
4830
|
+
[includefileorganizers [<Boolean>]]
|
|
4831
|
+
[delimiter <Character>]
|
|
4822
4832
|
gam print oushareddrives [todrive <ToDriveAttribute>*]
|
|
4823
4833
|
[ou|org|orgunit <OrgUnitPath>]
|
|
4824
4834
|
[formatjson [quotechar <Character>]]
|
|
@@ -8326,6 +8336,17 @@ gam <UserTypeEntity> show shareddrives
|
|
|
8326
8336
|
[fields <SharedDriveFieldNameList>] [noorgunits [<Boolean>]]
|
|
8327
8337
|
[formatjson]
|
|
8328
8338
|
|
|
8339
|
+
gam <UserTypeEntity> print shareddriveorganizers [todrive <ToDriveAttribute>*]
|
|
8340
|
+
[adminaccess|asadmin] [shareddriveadminquery|query <QuerySharedDrive>]
|
|
8341
|
+
[orgunit|org|ou <OrgUnitPath>]
|
|
8342
|
+
[matchname <REMatchPattern>]
|
|
8343
|
+
[domainlist <DomainList>]
|
|
8344
|
+
[includetypes <OrganizerTypeList>]
|
|
8345
|
+
[oneorganizer [<Boolean>]]
|
|
8346
|
+
[shownorganizerdrives [false|true|only]]
|
|
8347
|
+
[includefileorganizers [<Boolean>]]
|
|
8348
|
+
[delimiter <Character>]
|
|
8349
|
+
|
|
8329
8350
|
# Users - Force Signout and Turn Off 2-Step Verification
|
|
8330
8351
|
|
|
8331
8352
|
gam <UserTypeEntity> signout
|
|
@@ -1,3 +1,31 @@
|
|
|
1
|
+
7.08.00
|
|
2
|
+
|
|
3
|
+
Added the following command that can be used instead of the `GetTeamDriveOrganizers.py` script.
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
gam [<UserTypeEntity>] print shareddriveorganizers [todrive <ToDriveAttribute>*]
|
|
7
|
+
[adminaccess|asadmin] [shareddriveadminquery|query <QuerySharedDrive>]
|
|
8
|
+
[orgunit|org|ou <OrgUnitPath>]
|
|
9
|
+
[matchname <REMatchPattern>]
|
|
10
|
+
[domainlist <DomainList>]
|
|
11
|
+
[includetypes <OrganizerTypeList>]
|
|
12
|
+
[oneorganizer [<Boolean>]]
|
|
13
|
+
[shownorganizerdrives [false|true|only]]
|
|
14
|
+
[includefileorganizers [<Boolean>]]
|
|
15
|
+
[delimiter <Character>]
|
|
16
|
+
```
|
|
17
|
+
The command defaults match the script defaults:
|
|
18
|
+
* `domainlist` - All domains
|
|
19
|
+
* `includetypes` - user,groups
|
|
20
|
+
* `oneorganizer` - False
|
|
21
|
+
* `shownoorganizerdrives` - True
|
|
22
|
+
* `includefileorganizers` - False
|
|
23
|
+
|
|
24
|
+
For example, to get a single organizer from your domain for all Shared Drives including no organizer drives:
|
|
25
|
+
```
|
|
26
|
+
gam redirect csv ./TeamDriveOrganizers.csv print shareddriveorganizers domainlist mydomain.com includetypes user oneorganizer shownoorganizerdrives
|
|
27
|
+
```
|
|
28
|
+
|
|
1
29
|
7.07.17
|
|
2
30
|
|
|
3
31
|
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.
|
|
28
|
+
__version__ = '7.08.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
|
|
@@ -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,159 @@ 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] [shareddriveadminquery|query <QuerySharedDrive>]
|
|
66057
|
+
# [matchname <REMatchPattern>] [orgunit|org|ou <OrgUnitPath>]
|
|
66058
|
+
# [domainlist <DomainList>]
|
|
66059
|
+
# [includetypes user|group]
|
|
66060
|
+
# [oneorganizer [<Boolean>]]
|
|
66061
|
+
# [shownorganizerdrives false|true|only]
|
|
66062
|
+
# [includefileorganizers [<Boolean>]]
|
|
66063
|
+
# [delimiter <Character>]
|
|
66064
|
+
def printSharedDriveOrganizers(users, useDomainAdminAccess=False):
|
|
66065
|
+
csvPF = CSVPrintFile(['id', 'name', 'organizers', 'createdTime'], 'sortall')
|
|
66066
|
+
delimiter = GC.Values[GC.CSV_OUTPUT_FIELD_DELIMITER]
|
|
66067
|
+
roles = set(['organizer'])
|
|
66068
|
+
includeTypes = set()
|
|
66069
|
+
showNoOrganizerDrives = SHOW_NO_PERMISSIONS_DRIVES_CHOICE_MAP['false']
|
|
66070
|
+
fieldsList = ['role', 'type', 'emailAddress']
|
|
66071
|
+
cd = orgUnitId = query = matchPattern = None
|
|
66072
|
+
domainList = []
|
|
66073
|
+
oneOrganizer = False
|
|
66074
|
+
while Cmd.ArgumentsRemaining():
|
|
66075
|
+
myarg = getArgument()
|
|
66076
|
+
if csvPF and myarg == 'todrive':
|
|
66077
|
+
csvPF.GetTodriveParameters()
|
|
66078
|
+
elif myarg == 'delimiter':
|
|
66079
|
+
delimiter = getCharacter()
|
|
66080
|
+
elif myarg in {'teamdriveadminquery', 'shareddriveadminquery', 'query'}:
|
|
66081
|
+
queryLocation = Cmd.Location()
|
|
66082
|
+
query = getString(Cmd.OB_QUERY, minLen=0) or None
|
|
66083
|
+
if query:
|
|
66084
|
+
query = mapQueryRelativeTimes(query, ['createdTime'])
|
|
66085
|
+
elif myarg == 'matchname':
|
|
66086
|
+
matchPattern = getREPattern(re.IGNORECASE)
|
|
66087
|
+
elif myarg in {'ou', 'org', 'orgunit'}:
|
|
66088
|
+
orgLocation = Cmd.Location()
|
|
66089
|
+
if cd is None:
|
|
66090
|
+
cd = buildGAPIObject(API.DIRECTORY)
|
|
66091
|
+
orgUnitPath, orgUnitId = getOrgUnitId(cd)
|
|
66092
|
+
orgUnitId = orgUnitId[3:]
|
|
66093
|
+
orgUnitInfo = {'orgUnit': orgUnitPath, 'orgUnitId': orgUnitId}
|
|
66094
|
+
elif myarg in ADMIN_ACCESS_OPTIONS:
|
|
66095
|
+
useDomainAdminAccess = True
|
|
66096
|
+
elif myarg == 'domainlist':
|
|
66097
|
+
domainList = set(getString(Cmd.OB_DOMAIN_NAME_LIST).replace(',', ' ').lower().split())
|
|
66098
|
+
elif myarg == 'includetypes':
|
|
66099
|
+
for itype in getString(Cmd.OB_ORGANIZER_TYPE_LIST).lower().replace(',', ' ').split():
|
|
66100
|
+
if itype in PRINT_ORGANIZER_TYPES:
|
|
66101
|
+
includeTypes.add(itype)
|
|
66102
|
+
else:
|
|
66103
|
+
invalidChoiceExit(itype, PRINT_ORGANIZER_TYPES, True)
|
|
66104
|
+
elif myarg == 'oneorganizer':
|
|
66105
|
+
oneOrganizer = getBoolean()
|
|
66106
|
+
elif myarg == 'shownoorganizerdrives':
|
|
66107
|
+
showNoOrganizerDrives = getChoice(SHOW_NO_PERMISSIONS_DRIVES_CHOICE_MAP, defaultChoice=1, mapChoice=True)
|
|
66108
|
+
elif myarg in {'includefileorganizers', 'includecontentmanagers'}:
|
|
66109
|
+
if getBoolean():
|
|
66110
|
+
roles.add('fileOrganizer')
|
|
66111
|
+
else:
|
|
66112
|
+
unknownArgumentExit()
|
|
66113
|
+
if query and not useDomainAdminAccess:
|
|
66114
|
+
Cmd.SetLocation(queryLocation-1)
|
|
66115
|
+
usageErrorExit(Msg.ONLY_ADMINISTRATORS_CAN_PERFORM_SHARED_DRIVE_QUERIES)
|
|
66116
|
+
if orgUnitId is not None:
|
|
66117
|
+
if not useDomainAdminAccess:
|
|
66118
|
+
Cmd.SetLocation(orgLocation-1)
|
|
66119
|
+
usageErrorExit(Msg.ONLY_ADMINISTRATORS_CAN_SPECIFY_SHARED_DRIVE_ORGUNIT)
|
|
66120
|
+
csvPF.AddTitles(['orgUnit', 'orgUnitId'])
|
|
66121
|
+
if not includeTypes:
|
|
66122
|
+
includeTypes = PRINT_ORGANIZER_TYPES
|
|
66123
|
+
fields = getItemFieldsFromFieldsList('permissions', fieldsList, True)
|
|
66124
|
+
i, count, users = getEntityArgument(users)
|
|
66125
|
+
for user in users:
|
|
66126
|
+
i += 1
|
|
66127
|
+
user, drive = buildGAPIServiceObject(API.DRIVE3, user, i, count)
|
|
66128
|
+
if not drive:
|
|
66129
|
+
continue
|
|
66130
|
+
if useDomainAdminAccess:
|
|
66131
|
+
printGettingAllAccountEntities(Ent.SHAREDDRIVE, query)
|
|
66132
|
+
pageMessage = getPageMessage()
|
|
66133
|
+
else:
|
|
66134
|
+
printGettingAllEntityItemsForWhom(Ent.SHAREDDRIVE, user, i, count, query)
|
|
66135
|
+
pageMessage = getPageMessageForWhom()
|
|
66136
|
+
try:
|
|
66137
|
+
feed = callGAPIpages(drive.drives(), 'list', 'drives',
|
|
66138
|
+
pageMessage=pageMessage,
|
|
66139
|
+
throwReasons=GAPI.DRIVE_USER_THROW_REASONS+[GAPI.INVALID_QUERY, GAPI.INVALID,
|
|
66140
|
+
GAPI.QUERY_REQUIRES_ADMIN_CREDENTIALS,
|
|
66141
|
+
GAPI.NO_LIST_TEAMDRIVES_ADMINISTRATOR_PRIVILEGE,
|
|
66142
|
+
GAPI.FILE_NOT_FOUND],
|
|
66143
|
+
q=query, useDomainAdminAccess=useDomainAdminAccess,
|
|
66144
|
+
fields='nextPageToken,drives(id,name,createdTime,orgUnitId)', pageSize=100)
|
|
66145
|
+
except (GAPI.invalidQuery, GAPI.invalid, GAPI.queryRequiresAdminCredentials,
|
|
66146
|
+
GAPI.noListTeamDrivesAdministratorPrivilege, GAPI.fileNotFound) as e:
|
|
66147
|
+
entityActionFailedWarning([Ent.USER, user, Ent.SHAREDDRIVE, None], str(e), i, count)
|
|
66148
|
+
continue
|
|
66149
|
+
except (GAPI.serviceNotAvailable, GAPI.authError, GAPI.domainPolicy) as e:
|
|
66150
|
+
userDriveServiceNotEnabledWarning(user, str(e), i, count)
|
|
66151
|
+
continue
|
|
66152
|
+
matchFeed = []
|
|
66153
|
+
jcount = len(feed)
|
|
66154
|
+
j = 0
|
|
66155
|
+
for shareddrive in feed:
|
|
66156
|
+
j += 1
|
|
66157
|
+
if ((matchPattern is not None and matchPattern.match(shareddrive['name']) is None) or
|
|
66158
|
+
(orgUnitId is not None and orgUnitId != shareddrive.get('orgUnitId'))):
|
|
66159
|
+
continue
|
|
66160
|
+
printGettingAllEntityItemsForWhom(Ent.PERMISSION, shareddrive['name'], j, jcount)
|
|
66161
|
+
shareddrive['createdTime'] = formatLocalTime(shareddrive['createdTime'])
|
|
66162
|
+
shareddrive['organizers'] = []
|
|
66163
|
+
try:
|
|
66164
|
+
permissions = callGAPIpages(drive.permissions(), 'list', 'permissions',
|
|
66165
|
+
pageMessage=getPageMessageForWhom(),
|
|
66166
|
+
throwReasons=GAPI.DRIVE3_GET_ACL_REASONS,
|
|
66167
|
+
retryReasons=GAPI.SERVICE_NOT_AVAILABLE_RETRY_REASONS,
|
|
66168
|
+
useDomainAdminAccess=useDomainAdminAccess,
|
|
66169
|
+
fileId=shareddrive['id'], fields=fields, supportsAllDrives=True)
|
|
66170
|
+
for permission in permissions:
|
|
66171
|
+
if permission['type'] in includeTypes and permission['role'] in roles:
|
|
66172
|
+
if domainList:
|
|
66173
|
+
_, domain = permission['emailAddress'].lower().split('@', 1)
|
|
66174
|
+
if domain not in domainList:
|
|
66175
|
+
continue
|
|
66176
|
+
shareddrive['organizers'].append(permission['emailAddress'])
|
|
66177
|
+
if oneOrganizer:
|
|
66178
|
+
break
|
|
66179
|
+
if not shareddrive['organizers']:
|
|
66180
|
+
if showNoOrganizerDrives == 0: # no organizers and showNoOrganizerDrives False - ignore
|
|
66181
|
+
continue
|
|
66182
|
+
matchFeed.append(shareddrive) # no organizers and showNoOrganizerDrives Only/True - keep
|
|
66183
|
+
continue
|
|
66184
|
+
if showNoOrganizerDrives < 0: # organizers and showNoOrganizerDrives Only/True - ignore
|
|
66185
|
+
continue
|
|
66186
|
+
matchFeed.append(shareddrive)
|
|
66187
|
+
except (GAPI.fileNotFound, GAPI.forbidden, GAPI.internalError,
|
|
66188
|
+
GAPI.insufficientAdministratorPrivileges, GAPI.insufficientFilePermissions,
|
|
66189
|
+
GAPI.unknownError, GAPI.invalid):
|
|
66190
|
+
pass
|
|
66191
|
+
if len(matchFeed) == 0:
|
|
66192
|
+
setSysExitRC(NO_ENTITIES_FOUND_RC)
|
|
66193
|
+
for shareddrive in matchFeed:
|
|
66194
|
+
row = {'id': shareddrive['id'], 'name': shareddrive['name'],
|
|
66195
|
+
'organizers': delimiter.join(shareddrive['organizers']),
|
|
66196
|
+
'createdTime': shareddrive['createdTime']}
|
|
66197
|
+
if orgUnitId:
|
|
66198
|
+
row.update(orgUnitInfo)
|
|
66199
|
+
csvPF.WriteRowTitles(row)
|
|
66200
|
+
if csvPF:
|
|
66201
|
+
csvPF.writeCSVfile('SharedDrive Organizers')
|
|
66202
|
+
|
|
66203
|
+
def doPrintSharedDriveOrganizers():
|
|
66204
|
+
printSharedDriveOrganizers([_getAdminEmail()], True)
|
|
66205
|
+
|
|
66053
66206
|
LOOKERSTUDIO_ASSETTYPE_CHOICE_MAP = {
|
|
66054
66207
|
'report': ['REPORT'],
|
|
66055
66208
|
'datasource': ['DATA_SOURCE'],
|
|
@@ -75936,6 +76089,7 @@ MAIN_COMMANDS_WITH_OBJECTS = {
|
|
|
75936
76089
|
Cmd.ARG_SCHEMA: doPrintShowUserSchemas,
|
|
75937
76090
|
Cmd.ARG_SHAREDDRIVE: doPrintShowSharedDrives,
|
|
75938
76091
|
Cmd.ARG_SHAREDDRIVEACLS: doPrintShowSharedDriveACLs,
|
|
76092
|
+
Cmd.ARG_SHAREDDRIVEORGANIZERS: doPrintSharedDriveOrganizers,
|
|
75939
76093
|
Cmd.ARG_SITE: deprecatedDomainSites,
|
|
75940
76094
|
Cmd.ARG_SITEACL: deprecatedDomainSites,
|
|
75941
76095
|
Cmd.ARG_SITEACTIVITY: deprecatedDomainSites,
|
|
@@ -76284,6 +76438,7 @@ MAIN_COMMANDS_OBJ_ALIASES = {
|
|
|
76284
76438
|
Cmd.ARG_TEAMDRIVES: Cmd.ARG_SHAREDDRIVE,
|
|
76285
76439
|
Cmd.ARG_TEAMDRIVEACLS: Cmd.ARG_SHAREDDRIVEACLS,
|
|
76286
76440
|
Cmd.ARG_TEAMDRIVEINFO: Cmd.ARG_SHAREDDRIVEINFO,
|
|
76441
|
+
Cmd.ARG_TEAMDRIVEORGANIZERS: Cmd.ARG_SHAREDDRIVEORGANIZERS,
|
|
76287
76442
|
Cmd.ARG_TEAMDRIVETHEMES: Cmd.ARG_SHAREDDRIVETHEMES,
|
|
76288
76443
|
Cmd.ARG_TOKENS: Cmd.ARG_TOKEN,
|
|
76289
76444
|
Cmd.ARG_TRANSFER: Cmd.ARG_DATATRANSFER,
|
|
@@ -76976,6 +77131,7 @@ USER_COMMANDS_WITH_OBJECTS = {
|
|
|
76976
77131
|
Cmd.ARG_SENDAS: printShowSendAs,
|
|
76977
77132
|
Cmd.ARG_SHAREDDRIVE: printShowSharedDrives,
|
|
76978
77133
|
Cmd.ARG_SHAREDDRIVEACLS: printShowSharedDriveACLs,
|
|
77134
|
+
Cmd.ARG_SHAREDDRIVEORGANIZERS: printSharedDriveOrganizers,
|
|
76979
77135
|
Cmd.ARG_SHEET: infoPrintShowSheets,
|
|
76980
77136
|
Cmd.ARG_SHEETRANGE: printShowSheetRanges,
|
|
76981
77137
|
Cmd.ARG_SIGNATURE: printShowSignature,
|
|
@@ -77333,6 +77489,7 @@ USER_COMMANDS_OBJ_ALIASES = {
|
|
|
77333
77489
|
Cmd.ARG_TEAMDRIVES: Cmd.ARG_SHAREDDRIVE,
|
|
77334
77490
|
Cmd.ARG_TEAMDRIVEACLS: Cmd.ARG_SHAREDDRIVEACLS,
|
|
77335
77491
|
Cmd.ARG_TEAMDRIVEINFO: Cmd.ARG_SHAREDDRIVEINFO,
|
|
77492
|
+
Cmd.ARG_TEAMDRIVEORGANIZERS: Cmd.ARG_SHAREDDRIVEORGANIZERS,
|
|
77336
77493
|
Cmd.ARG_TEAMDRIVETHEMES: Cmd.ARG_SHAREDDRIVETHEMES,
|
|
77337
77494
|
Cmd.ARG_THREADS: Cmd.ARG_THREAD,
|
|
77338
77495
|
Cmd.ARG_TOKENS: Cmd.ARG_TOKEN,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
|
|
3
|
-
# Copyright (C)
|
|
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,11 @@ 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.17
|
|
14
|
+
|
|
15
|
+
Added option `oneuserperrow` to `gam print devices` to have each of a
|
|
16
|
+
device's users displayed on a separate row with all of the other device fields.
|
|
17
|
+
|
|
13
18
|
### 7.07.16
|
|
14
19
|
|
|
15
20
|
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.
|
|
254
|
+
GAM 7.07.17 - 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.
|
|
992
|
+
GAM 7.07.17 - 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
|
|
@@ -30,6 +30,7 @@
|
|
|
30
30
|
- [Display ACLs for Shared Drives with all organizers outside of your domain](#display-acls-for-shared-drives-with-all-organizers-outside-of-your-domain)
|
|
31
31
|
- [Display ACLs for Shared Drives with all ACLs outside of your domain](#display-acls-for-shared-drives-with-all-acls-outside-of-your-domain)
|
|
32
32
|
- [Clean up scammed Shared Drives](#clean-up-scammed-shared-drives)
|
|
33
|
+
- [Delete old empty Shared Drives](#delete-old-empty-shared-drives)
|
|
33
34
|
|
|
34
35
|
## API documentation
|
|
35
36
|
* [Drive API - Drives](https://developers.google.com/drive/api/reference/rest/v3/drives)
|
|
@@ -791,3 +792,37 @@ This is not reversible, proceed with caution.
|
|
|
791
792
|
```
|
|
792
793
|
gam redirect stdout ./DeleteSharedDrives.txt multiprocess redirect stderr stdout csv ./SharedDriveACLsAllExternal.csv gam delete teamdrive "~id" allowitemdeletion
|
|
793
794
|
```
|
|
795
|
+
|
|
796
|
+
## Delete old empty Shared Drives
|
|
797
|
+
```
|
|
798
|
+
# Get a list of Shared Drives created before one year ago; alter date<-1y as required
|
|
799
|
+
gam config csv_output_row_filter "createdTime:date<-1y" redirect csv ./TeamDrives.csv print teamdrives fields id,name,createdtime
|
|
800
|
+
|
|
801
|
+
# You'll need a list of Shared Drive IDs and organizers; get ACLs for Shared Drives from above
|
|
802
|
+
gam redirect csv ./TeamDriveACLs.csv multiprocess csv ./TeamDrives.csv gam print drivefileacls "~id" fields id,emailaddress,role,type,deleted
|
|
803
|
+
|
|
804
|
+
# Customize script: https://github.com/taers232c/GAM-Scripts3/blob/master/GetTeamDriveOrganizers.py
|
|
805
|
+
DOMAIN_LIST = ['yourdomain.org']
|
|
806
|
+
|
|
807
|
+
INCLUDE_TYPES = {
|
|
808
|
+
'user': True,
|
|
809
|
+
'group': False,
|
|
810
|
+
}
|
|
811
|
+
|
|
812
|
+
ONE_ORGANIZER = True
|
|
813
|
+
SHOW_NO_ORGANIZER_DRIVES = True
|
|
814
|
+
INCLUDE_FILE_ORGANIZERS = False
|
|
815
|
+
|
|
816
|
+
# Run script
|
|
817
|
+
python GetTeamDriveOrganizers.py TeamDriveACLs.csv TeamDrives.csv TeamDriveOrganizers.csv
|
|
818
|
+
|
|
819
|
+
# Inspect TeamDriveOrganizers.csv, you'll have to deal with Shared Drives with no organizer/manager
|
|
820
|
+
|
|
821
|
+
# Get old empty Shared Drives
|
|
822
|
+
gam config num_threads 10 csv_input_row_filter "organizers:regex:^.+$" csv_output_row_filter "Total:count=0" redirect csv ./OldEmptySharedDrives.csv multiprocess redirect stderr - multiprocess csv ./TeamDriveOrganizers.csv gam user "~organizers" print filecounts select teamdriveid "~id" showsize
|
|
823
|
+
|
|
824
|
+
# Inspect OldEmptySharedDrives.csv, if you're confident of the results, proceed
|
|
825
|
+
|
|
826
|
+
# Delete old empty Shared Drives
|
|
827
|
+
gam redirect stdout ./DeleteOldEmptySharedDrives.txt multiprocess redirect stderr stdout csv ./OldEmptySharedDrives.csv gam user "~User" delete shareddrive "~id"
|
|
828
|
+
```
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
# Users - Gmail - Delegates
|
|
2
|
+
- [Notes](#notes)
|
|
2
3
|
- [API documentation](#api-documentation)
|
|
3
4
|
- [Definitions](#definitions)
|
|
4
5
|
- [Aliases](#aliases)
|
|
@@ -8,6 +9,11 @@
|
|
|
8
9
|
- [Display Gmail delegates](#display-gmail-delegates)
|
|
9
10
|
- [Delete all delegates for a user](#delete-all-delegates-for-a-user)
|
|
10
11
|
|
|
12
|
+
## Notes
|
|
13
|
+
|
|
14
|
+
To use Gmail delegation, the delegator and delagatee must be in org units where
|
|
15
|
+
mail delegation is enabled. In the admin console, go to Apps/Google Workspace/Gmail/User Settings.
|
|
16
|
+
|
|
11
17
|
## API documentation
|
|
12
18
|
* [Gmail API - Delegates](https://developers.google.com/gmail/api/v1/reference/users.settings.delegates)
|
|
13
19
|
* [Delegation Notes](https://support.google.com/a/answer/7223765)
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Print the current version of Gam with details
|
|
4
4
|
```
|
|
5
5
|
gam version
|
|
6
|
-
GAM 7.07.
|
|
6
|
+
GAM 7.07.17 - 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.
|
|
18
|
+
GAM 7.07.17 - 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.
|
|
30
|
+
GAM 7.07.17 - 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.
|
|
67
|
+
Latest: 7.07.17
|
|
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.
|
|
75
|
+
7.07.17
|
|
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.
|
|
85
|
+
GAM 7.07.17 - 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
|
|
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
|