Update course add external teacher|student error message
Some checks failed
Push wiki / pushwiki (push) Has been cancelled
Build and test GAM / build (false, build, 1, Build Intel Ubuntu Jammy, ubuntu-22.04) (push) Has been cancelled
Build and test GAM / build (false, build, 10, Build x86_64 macOS 15, macos-15-intel) (push) Has been cancelled
Build and test GAM / build (false, build, 11, Build Arm MacOS 26, macos-26) (push) Has been cancelled
Build and test GAM / build (false, build, 12, Build Intel Windows, windows-2025-vs2026) (push) Has been cancelled
Build and test GAM / build (false, build, 13, Build Arm Windows, windows-11-arm) (push) Has been cancelled
Build and test GAM / build (false, build, 2, Build Intel Ubuntu Noble, ubuntu-24.04) (push) Has been cancelled
Build and test GAM / build (false, build, 3, Build Arm Ubuntu Noble, ubuntu-24.04-arm) (push) Has been cancelled
Build and test GAM / build (false, build, 4, Build Arm Ubuntu Jammy, ubuntu-22.04-arm) (push) Has been cancelled
Build and test GAM / build (false, build, 5, Build Intel StaticX Legacy, ubuntu-22.04, yes) (push) Has been cancelled
Build and test GAM / build (false, build, 6, Build Arm StaticX Legacy, ubuntu-22.04-arm, yes) (push) Has been cancelled
Build and test GAM / build (false, build, 8, Build Arm MacOS 14, macos-14) (push) Has been cancelled
Build and test GAM / build (false, build, 9, Build Arm MacOS 15, macos-15) (push) Has been cancelled
Build and test GAM / build (false, test, 14, Test Python 3.10, ubuntu-24.04, 3.10) (push) Has been cancelled
Build and test GAM / build (false, test, 15, Test Python 3.11, ubuntu-24.04, 3.11) (push) Has been cancelled
Build and test GAM / build (false, test, 16, Test Python 3.12, ubuntu-24.04, 3.12) (push) Has been cancelled
Build and test GAM / build (false, test, 17, Test Python 3.15-dev, ubuntu-24.04, 3.15-dev) (push) Has been cancelled
Build and test GAM / build (true, test, 18, Test Python 3.14 freethread, ubuntu-24.04, 3.14) (push) Has been cancelled
Build and test GAM / merge (push) Has been cancelled
Build and test GAM / publish (push) Has been cancelled
Check for Google Root CA Updates / check-certs (push) Has been cancelled

This commit is contained in:
Ross Scroggs
2026-02-16 10:12:53 -08:00
parent 28224045b2
commit 52d0b0a84b
4 changed files with 197 additions and 187 deletions

View File

@@ -10,6 +10,16 @@ Add the `-s` option to the end of the above commands to suppress creating the `g
See [Downloads-Installs-GAM7](https://github.com/GAM-team/GAM/wiki/Downloads-Installs) for Windows or other options, including manual installation See [Downloads-Installs-GAM7](https://github.com/GAM-team/GAM/wiki/Downloads-Installs) for Windows or other options, including manual installation
### 7.34.03
Updated to Python 3.14.3
Updated Cryptography to 46.0.5
Updated `gam course <CourseID> create student|teacher <EmailAddress>` error message when
`<EmailAddress>` is not in a trusted domain to remove suggestion about creating an invitation.
### 7.34.02 ### 7.34.02
Updated GAM to prevent errors like the following: Updated GAM to prevent errors like the following:

View File

@@ -9,30 +9,30 @@ and all necessary authentications.
## Linux and MacOS and Google Cloud Shell ## Linux and MacOS and Google Cloud Shell
In these examples, your Google Super admin is shown as admin@domain.com; replace with the In these examples, your Google Super admin is shown as gamteam@domain.com; replace with the
actual email adddress. actual email adddress.
In these examples, the user home folder is shown as /Users/admin; adjust according to your In these examples, the user home folder is shown as /Users/gamteam; adjust according to your
specific situation; e.g., /home/administrator. specific situation; e.g., /home/administrator.
This example assumes that GAM7 has been installed in /Users/admin/bin/gam7. This example assumes that GAM7 has been installed in /Users/gamteam/bin/gam7.
If you've installed GAM7 in another directory, substitute that value in the directions. If you've installed GAM7 in another directory, substitute that value in the directions.
### Set a configuration directory ### Set a configuration directory
The default GAM configuration directory is /Users/admin/.gam; for more flexibility you The default GAM configuration directory is /Users/gamteam/.gam; for more flexibility you
probably want to select a non-hidden location. This example assumes that the GAM probably want to select a non-hidden location. This example assumes that the GAM
configuration directory will be /Users/admin/GAMConfig; If you've chosen another directory, configuration directory will be /Users/gamteam/GAMConfig; If you've chosen another directory,
substitute that value in the directions. substitute that value in the directions.
Make the directory: Make the directory:
``` ```
admin@server:/Users/admin$ mkdir -p /Users/admin/GAMConfig gamteam@server:/Users/gamteam$ mkdir -p /Users/gamteam/GAMConfig
``` ```
Add the following line: Add the following line:
``` ```
export GAMCFGDIR="/Users/admin/GAMConfig" export GAMCFGDIR="/Users/gamteam/GAMConfig"
``` ```
to one of these files based on your shell: to one of these files based on your shell:
``` ```
@@ -44,34 +44,34 @@ to one of these files based on your shell:
Issue the following command replacing `<Filename>` with the name of the file you edited: Issue the following command replacing `<Filename>` with the name of the file you edited:
``` ```
admin@server:/Users/admin$ source <Filename> gamteam@server:/Users/gamteam$ source <Filename>
``` ```
You need to make sure the GAM configuration directory actually exists. Test that like this: You need to make sure the GAM configuration directory actually exists. Test that like this:
``` ```
admin@server:/Users/admin$ ls -l $GAMCFGDIR gamteam@server:/Users/gamteam$ ls -l $GAMCFGDIR
``` ```
### Set a working directory ### Set a working directory
You should establish a GAM working directory; you will store your GAM related You should establish a GAM working directory; you will store your GAM related
data in this folder and execute GAM commands from this folder. You should not use data in this folder and execute GAM commands from this folder. You should not use
/Users/admin/bin/gam7 or /Users/admin/GAMConfig for this purpose. /Users/gamteam/bin/gam7 or /Users/gamteam/GAMConfig for this purpose.
This example assumes that the GAM working directory will be /Users/admin/GAMWork; If you've chosen This example assumes that the GAM working directory will be /Users/gamteam/GAMWork; If you've chosen
another directory, substitute that value in the directions. another directory, substitute that value in the directions.
Make the directory: Make the directory:
``` ```
admin@server:/Users/admin$ mkdir -p /Users/admin/GAMWork gamteam@server:/Users/gamteam$ mkdir -p /Users/gamteam/GAMWork
``` ```
### Set an alias ### Set an alias
You should set an alias to point to /Users/admin/bin/gam7/gam so you can operate from the /Users/admin/GAMWork directory. You should set an alias to point to /Users/gamteam/bin/gam7/gam so you can operate from the /Users/gamteam/GAMWork directory.
Aliases aren't available in scripts, so you may want to set a symlink instead, see below. Aliases aren't available in scripts, so you may want to set a symlink instead, see below.
Add the following line: Add the following line:
``` ```
alias gam="/Users/admin/bin/gam7/gam" alias gam="/Users/gamteam/bin/gam7/gam"
``` ```
to one of these files based on your shell: to one of these files based on your shell:
``` ```
@@ -84,48 +84,48 @@ to one of these files based on your shell:
Issue the following command replacing `<Filename>` with the name of the file you edited: Issue the following command replacing `<Filename>` with the name of the file you edited:
``` ```
admin@server:/Users/admin$ source <Filename> gamteam@server:/Users/gamteam$ source <Filename>
``` ```
### Set a symlink ### Set a symlink
Set a symlink in `/usr/local/bin` (or some other location on $PATH) to point to GAM. Set a symlink in `/usr/local/bin` (or some other location on $PATH) to point to GAM.
``` ```
admin@server:/Users/admin$ ln -s "/Users/admin/bin/gam7/gam" /usr/local/bin/gam gamteam@server:/Users/gamteam$ ln -s "/Users/gamteam/bin/gam7/gam" /usr/local/bin/gam
``` ```
### Initialize GAM7; this should be the first GAM7 command executed. ### Initialize GAM7; this should be the first GAM7 command executed.
``` ```
admin@server:/Users/admin$ gam config drive_dir /Users/admin/GAMWork verify gamteam@server:/Users/gamteam$ gam config drive_dir /Users/gamteam/GAMWork verify
Created: /Users/admin/GAMConfig Created: /Users/gamteam/GAMConfig
Created: /Users/admin/GAMConfig/gamcache Created: /Users/gamteam/GAMConfig/gamcache
Config File: /Users/admin/GAMConfig/gam.cfg, Initialized Config File: /Users/gamteam/GAMConfig/gam.cfg, Initialized
Section: DEFAULT Section: DEFAULT
... ...
cache_dir = /Users/admin/GAMConfig/gamcache cache_dir = /Users/gamteam/GAMConfig/gamcache
... ...
config_dir = /Users/admin/GAMConfig config_dir = /Users/gamteam/GAMConfig
... ...
drive_dir = /Users/admin/GAMWork drive_dir = /Users/gamteam/GAMWork
... ...
admin@server:/Users/admin$ gamteam@server:/Users/gamteam$
``` ```
### Verify initialization, this was a successful installation. ### Verify initialization, this was a successful installation.
``` ```
admin@server:/Users/admin$ ls -l $GAMCFGDIR gamteam@server:/Users/gamteam$ ls -l $GAMCFGDIR
total 48 total 48
-rw-r-----+ 1 admin staff 1069 Mar 3 09:23 gam.cfg -rw-r-----+ 1 admin staff 1069 Mar 3 09:23 gam.cfg
drwxr-x---+ 2 admin staff 68 Mar 3 09:23 gamcache drwxr-x---+ 2 admin staff 68 Mar 3 09:23 gamcache
-rw-rw-rw-+ 1 admin staff 0 Mar 3 09:23 oauth2.txt.lock -rw-rw-rw-+ 1 admin staff 0 Mar 3 09:23 oauth2.txt.lock
admin@server:/Users/admin$ gamteam@server:/Users/gamteam$
``` ```
### Create your project with local browser ### Create your project with local browser
``` ```
admin@server:/Users/admin$ gam create project gamteam@server:/Users/gamteam$ gam create project
WARNING: Config File: /Users/admin/GAMConfig/gam.cfg, Item: client_secrets_json, Value: /Users/admin/GAMConfig/client_secrets.json, Not Found WARNING: Config File: /Users/gamteam/GAMConfig/gam.cfg, Item: client_secrets_json, Value: /Users/gamteam/GAMConfig/client_secrets.json, Not Found
WARNING: Config File: /Users/admin/GAMConfig/gam.cfg, Item: oauth2service_json, Value: /Users/admin/GAMConfig/oauth2service.json, Not Found WARNING: Config File: /Users/gamteam/GAMConfig/gam.cfg, Item: oauth2service_json, Value: /Users/gamteam/GAMConfig/oauth2service.json, Not Found
Enter your Google Workspace admin or GCP project manager email address authorized to manage project(s) admin@domain.com Enter your Google Workspace admin or GCP project manager email address authorized to manage project(s) gamteam@domain.com
Your browser has been opened to visit: Your browser has been opened to visit:
@@ -167,7 +167,7 @@ Project: gam-project-abc-def-ghi, Service Account: gam-project-abc-def-ghi@gam-p
Project: gam-project-abc-def-ghi, Service Account: gam-project-abc-def-ghi@gam-project-abc-def-ghi.iam.gserviceaccount.com, Extracting public certificate Project: gam-project-abc-def-ghi, Service Account: gam-project-abc-def-ghi@gam-project-abc-def-ghi.iam.gserviceaccount.com, Extracting public certificate
Project: gam-project-abc-def-ghi, Service Account: gam-project-abc-def-ghi@gam-project-abc-def-ghi.iam.gserviceaccount.com, Done generating private key and public certificate Project: gam-project-abc-def-ghi, Service Account: gam-project-abc-def-ghi@gam-project-abc-def-ghi.iam.gserviceaccount.com, Done generating private key and public certificate
Project: gam-project-abc-def-ghi, Service Account: gam-project-abc-def-ghi@gam-project-abc-def-ghi.iam.gserviceaccount.com, Service Account Key: SVCACCTKEY, Uploaded Project: gam-project-abc-def-ghi, Service Account: gam-project-abc-def-ghi@gam-project-abc-def-ghi.iam.gserviceaccount.com, Service Account Key: SVCACCTKEY, Uploaded
Service Account OAuth2 File: /Users/admin/GAMConfig/oauth2service.json, Service Account Key: SVCACCTKEY, Updated Service Account OAuth2 File: /Users/gamteam/GAMConfig/oauth2service.json, Service Account Key: SVCACCTKEY, Updated
Project: gam-project-abc-def-ghi, Service Account: gam-project-abc-def-ghi@gam-project-abc-def-ghi.iam.gserviceaccount.com, Has rights to rotate own private key Project: gam-project-abc-def-ghi, Service Account: gam-project-abc-def-ghi@gam-project-abc-def-ghi.iam.gserviceaccount.com, Has rights to rotate own private key
Please go to: Please go to:
@@ -185,16 +185,16 @@ Enter your Client Secret: CLIENTSECRET
6. Go back to your browser and click OK to close the "OAuth client" popup if it's still open. 6. Go back to your browser and click OK to close the "OAuth client" popup if it's still open.
That's it! Your GAM Project is created and ready to use. That's it! Your GAM Project is created and ready to use.
admin@server:/Users/admin$ gamteam@server:/Users/gamteam$
``` ```
### Create your project without local browser (Google Cloud Shell for instance) ### Create your project without local browser (Google Cloud Shell for instance)
``` ```
admin@server:/Users/admin$ gam config no_browser true save gamteam@server:/Users/gamteam$ gam config no_browser true save
admin@server:/Users/admin$ gam create project gamteam@server:/Users/gamteam$ gam create project
WARNING: Config File: /Users/admin/GAMConfig/gam.cfg, Item: client_secrets_json, Value: /Users/admin/GAMConfig/client_secrets.json, Not Found WARNING: Config File: /Users/gamteam/GAMConfig/gam.cfg, Item: client_secrets_json, Value: /Users/gamteam/GAMConfig/client_secrets.json, Not Found
WARNING: Config File: /Users/admin/GAMConfig/gam.cfg, Item: oauth2service_json, Value: /Users/admin/GAMConfig/oauth2service.json, Not Found WARNING: Config File: /Users/gamteam/GAMConfig/gam.cfg, Item: oauth2service_json, Value: /Users/gamteam/GAMConfig/oauth2service.json, Not Found
Enter your Google Workspace admin or GCP project manager email address authorized to manage project(s) admin@domain.com Enter your Google Workspace admin or GCP project manager email address authorized to manage project(s) gamteam@domain.com
Go to the following link in a browser on other computer: Go to the following link in a browser on other computer:
@@ -235,7 +235,7 @@ Project: gam-project-abc-def-ghi, Service Account: gam-project-abc-def-ghi@gam-p
Project: gam-project-abc-def-ghi, Service Account: gam-project-abc-def-ghi@gam-project-abc-def-ghi.iam.gserviceaccount.com, Extracting public certificate Project: gam-project-abc-def-ghi, Service Account: gam-project-abc-def-ghi@gam-project-abc-def-ghi.iam.gserviceaccount.com, Extracting public certificate
Project: gam-project-abc-def-ghi, Service Account: gam-project-abc-def-ghi@gam-project-abc-def-ghi.iam.gserviceaccount.com, Done generating private key and public certificate Project: gam-project-abc-def-ghi, Service Account: gam-project-abc-def-ghi@gam-project-abc-def-ghi.iam.gserviceaccount.com, Done generating private key and public certificate
Project: gam-project-abc-def-ghi, Service Account: gam-project-abc-def-ghi@gam-project-abc-def-ghi.iam.gserviceaccount.com, Service Account Key: SVCACCTKEY, Uploaded Project: gam-project-abc-def-ghi, Service Account: gam-project-abc-def-ghi@gam-project-abc-def-ghi.iam.gserviceaccount.com, Service Account Key: SVCACCTKEY, Uploaded
Service Account OAuth2 File: /Users/admin/GAMConfig/oauth2service.json, Service Account Key: SVCACCTKEY, Updated Service Account OAuth2 File: /Users/gamteam/GAMConfig/oauth2service.json, Service Account Key: SVCACCTKEY, Updated
Project: gam-project-abc-def-ghi, Service Account: gam-project-abc-def-ghi@gam-project-abc-def-ghi.iam.gserviceaccount.com, Has rights to rotate own private key Project: gam-project-abc-def-ghi, Service Account: gam-project-abc-def-ghi@gam-project-abc-def-ghi.iam.gserviceaccount.com, Has rights to rotate own private key
Please go to: Please go to:
@@ -253,7 +253,7 @@ Enter your Client Secret: CLIENTSECRET
6. Go back to your browser and click OK to close the "OAuth client" popup if it's still open. 6. Go back to your browser and click OK to close the "OAuth client" popup if it's still open.
That's it! Your GAM Project is created and ready to use. That's it! Your GAM Project is created and ready to use.
admin@server:/Users/admin$ gamteam@server:/Users/gamteam$
``` ```
### Enable GAM7 client access ### Enable GAM7 client access
@@ -261,7 +261,7 @@ You select a list of scopes, GAM uses a browser to get final authorization from
writes the credentials into the file oauth2.txt. writes the credentials into the file oauth2.txt.
``` ```
admin@server:/Users/admin$ gam oauth create gamteam@server:/Users/gamteam$ gam oauth create
[*] 0) Calendar API (supports readonly) [*] 0) Calendar API (supports readonly)
[*] 1) Chrome Browser Cloud Management API (supports readonly) [*] 1) Chrome Browser Cloud Management API (supports readonly)
@@ -328,7 +328,7 @@ Continue to authorization by entering a 'c'
Please enter 0-50[a|r] or s|u|e|c: c Please enter 0-50[a|r] or s|u|e|c: c
Enter your Google Workspace admin email address? admin@domain.com Enter your Google Workspace admin email address? gamteam@domain.com
Go to the following link in a browser on this computer or on another computer: Go to the following link in a browser on this computer or on another computer:
@@ -340,16 +340,16 @@ click the Allow button, paste "Unable to connect" URL from other computer (only
Enter verification code or paste "Unable to connect" URL from other computer (only URL data up to &scope required): Enter verification code or paste "Unable to connect" URL from other computer (only URL data up to &scope required):
The authentication flow has completed. The authentication flow has completed.
Client OAuth2 File: /Users/admin/GAMConfig/oauth2.txt, Created Client OAuth2 File: /Users/gamteam/GAMConfig/oauth2.txt, Created
admin@server:/Users/admin$ gamteam@server:/Users/gamteam$
``` ```
If clicking on the link in the instructions does not work (i.e. you get a 404 or 400 error message, instead of something about 'unable to connect') the URL in the link is too long. Most likely, you have selected all scopes. Try again with fewer scopes until it works. (there is no harm in repeatedly trying) If clicking on the link in the instructions does not work (i.e. you get a 404 or 400 error message, instead of something about 'unable to connect') the URL in the link is too long. Most likely, you have selected all scopes. Try again with fewer scopes until it works. (there is no harm in repeatedly trying)
### Enable GAM7 service account access. ### Enable GAM7 service account access.
``` ```
admin@server:/Users/admin$ gam user admin@domain.com update serviceaccount gamteam@server:/Users/gamteam$ gam user gamteam@domain.com update serviceaccount
[*] 0) AlertCenter API [*] 0) AlertCenter API
[*] 1) Analytics API - read only [*] 1) Analytics API - read only
[*] 2) Analytics Admin API - read only [*] 2) Analytics Admin API - read only
@@ -413,7 +413,7 @@ Service Account Private Key Authentication
Authentication PASS Authentication PASS
Service Account Private Key age; Google recommends rotating keys on a routine basis Service Account Private Key age; Google recommends rotating keys on a routine basis
Service Account Private Key age: 1 day WARN Service Account Private Key age: 1 day WARN
Domain-wide Delegation authentication:, User: admin@domain.com, Scopes: 38 Domain-wide Delegation authentication:, User: gamteam@domain.com, Scopes: 38
https://mail.google.com/ FAIL (1/38) https://mail.google.com/ FAIL (1/38)
https://sites.google.com/feeds FAIL (2/38) https://sites.google.com/feeds FAIL (2/38)
https://www.googleapis.com/auth/analytics.readonly FAIL (3/38) https://www.googleapis.com/auth/analytics.readonly FAIL (3/38)
@@ -464,7 +464,7 @@ Click AUTHORIZE
When the box closes you're done When the box closes you're done
After authorizing it may take some time for this test to pass so wait a few moments and then try this command again. After authorizing it may take some time for this test to pass so wait a few moments and then try this command again.
admin@server:/Users/admin$ gamteam@server:/Users/gamteam$
``` ```
The link shown in the error message should take you directly to the authorization screen. The link shown in the error message should take you directly to the authorization screen.
If not, make sure that you are logged in as a domain admin, then re-enter the link. If not, make sure that you are logged in as a domain admin, then re-enter the link.
@@ -474,14 +474,14 @@ If not, make sure that you are logged in as a domain admin, then re-enter the li
Wait a moment and then perform the following command; it it still fails, wait a bit longer, it can sometimes take serveral minutes Wait a moment and then perform the following command; it it still fails, wait a bit longer, it can sometimes take serveral minutes
for the authorization to complete. for the authorization to complete.
``` ```
admin@server:/Users/admin$ gam user admin@domain.com check serviceaccount gamteam@server:/Users/gamteam$ gam user gamteam@domain.com check serviceaccount
System time status System time status
Your system time differs from admin.googleapis.com by less than 1 second PASS Your system time differs from admin.googleapis.com by less than 1 second PASS
Service Account Private Key Authentication Service Account Private Key Authentication
Authentication PASS Authentication PASS
Service Account Private Key age; Google recommends rotating keys on a routine basis Service Account Private Key age; Google recommends rotating keys on a routine basis
Service Account Private Key age: 1 day WARN Service Account Private Key age: 1 day WARN
Domain-wide Delegation authentication:, User: admin@domain.com, Scopes: 38 Domain-wide Delegation authentication:, User: gamteam@domain.com, Scopes: 38
https://mail.google.com/ PASS (1/38) https://mail.google.com/ PASS (1/38)
https://sites.google.com/feeds PASS (2/38) https://sites.google.com/feeds PASS (2/38)
https://www.googleapis.com/auth/analytics.readonly PASS (3/38) https://www.googleapis.com/auth/analytics.readonly PASS (3/38)
@@ -524,14 +524,14 @@ All scopes PASSED!
Service Account Client name: SVCACCTID is fully authorized. Service Account Client name: SVCACCTID is fully authorized.
admin@server:/Users/admin$ gamteam@server:/Users/gamteam$
``` ```
### Update gam.cfg with some basic values ### Update gam.cfg with some basic values
* `customer_id` - Having this data keeps Gam from having to make extra API calls * `customer_id` - Having this data keeps Gam from having to make extra API calls
* `domain` - This allows you to omit the domain portion of email addresses * `domain` - This allows you to omit the domain portion of email addresses
* `timezone local` - Gam will convert all UTC times to your local timezone * `timezone local` - Gam will convert all UTC times to your local timezone
``` ```
admin@server:/Users/admin$ gam info domain gamteam@server:/Users/gamteam$ gam info domain
Customer ID: C01234567 Customer ID: C01234567
Primary Domain: domain.com Primary Domain: domain.com
Customer Creation Time: 2007-06-06T15:47:55.444Z Customer Creation Time: 2007-06-06T15:47:55.444Z
@@ -539,8 +539,8 @@ Primary Domain Verified: True
Default Language: en Default Language: en
... ...
admin@server:/Users/admin$ gam config customer_id C01234567 domain domain.com timezone local save verify gamteam@server:/Users/gamteam$ gam config customer_id C01234567 domain domain.com timezone local save verify
Config File: /Users/admin/GAMConfig/gam.cfg, Saved Config File: /Users/gamteam/GAMConfig/gam.cfg, Saved
Section: DEFAULT Section: DEFAULT
... ...
customer_id = C01234567 customer_id = C01234567
@@ -550,12 +550,12 @@ Section: DEFAULT
timezone = local timezone = local
... ...
admin@server:/Users/admin$ gamteam@server:/Users/gamteam$
``` ```
## Windows ## Windows
In these examples, your Google Super admin is shown as admin@domain.com; replace with the In these examples, your Google Super admin is shown as gamteam@domain.com; replace with the
actual email adddress. actual email adddress.
This example assumes that GAM7 has been installed in C:\GAM7; if you've installed This example assumes that GAM7 has been installed in C:\GAM7; if you've installed
@@ -645,7 +645,7 @@ C:\>gam create project
WARNING: Config File: C:\GAMConfig\gam.cfg, Item: client_secrets_json, Value: C:\GAMConfig\client_secrets.json, Not Found WARNING: Config File: C:\GAMConfig\gam.cfg, Item: client_secrets_json, Value: C:\GAMConfig\client_secrets.json, Not Found
WARNING: Config File: C:\GAMConfig\gam.cfg, Item: oauth2service_json, Value: C:\GAMConfig\oauth2service.json, Not Found WARNING: Config File: C:\GAMConfig\gam.cfg, Item: oauth2service_json, Value: C:\GAMConfig\oauth2service.json, Not Found
Enter your Google Workspace admin or GCP project manager email address authorized to manage project(s) admin@domain.com Enter your Google Workspace admin or GCP project manager email address authorized to manage project(s) gamteam@domain.com
Your browser has been opened to visit: Your browser has been opened to visit:
@@ -714,7 +714,7 @@ C:\>gam create project
WARNING: Config File: C:\GAMConfig\gam.cfg, Item: client_secrets_json, Value: C:\GAMConfig\client_secrets.json, Not Found WARNING: Config File: C:\GAMConfig\gam.cfg, Item: client_secrets_json, Value: C:\GAMConfig\client_secrets.json, Not Found
WARNING: Config File: C:\GAMConfig\gam.cfg, Item: oauth2service_json, Value: C:\GAMConfig\oauth2service.json, Not Found WARNING: Config File: C:\GAMConfig\gam.cfg, Item: oauth2service_json, Value: C:\GAMConfig\oauth2service.json, Not Found
Enter your Google Workspace admin or GCP project manager email address authorized to manage project(s) admin@domain.com Enter your Google Workspace admin or GCP project manager email address authorized to manage project(s) gamteam@domain.com
Go to the following link in a browser on other computer: Go to the following link in a browser on other computer:
@@ -848,7 +848,7 @@ Continue to authorization by entering a 'c'
Please enter 0-50[a|r] or s|u|e|c: c Please enter 0-50[a|r] or s|u|e|c: c
Enter your Google Workspace admin email address? admin@domain.com Enter your Google Workspace admin email address? gamteam@domain.com
Go to the following link in a browser on this computer or on another computer: Go to the following link in a browser on this computer or on another computer:
@@ -866,7 +866,7 @@ C:\>
``` ```
### Enable GAM7 service account access. ### Enable GAM7 service account access.
``` ```
C:\>gam user admin@domain.com update serviceaccount C:\>gam user gamteam@domain.com update serviceaccount
[*] 0) AlertCenter API [*] 0) AlertCenter API
[*] 1) Analytics API - read only [*] 1) Analytics API - read only
[*] 2) Analytics Admin API - read only [*] 2) Analytics Admin API - read only
@@ -930,7 +930,7 @@ Service Account Private Key Authentication
Authentication PASS Authentication PASS
Service Account Private Key age; Google recommends rotating keys on a routine basis Service Account Private Key age; Google recommends rotating keys on a routine basis
Service Account Private Key age: 1 day WARN Service Account Private Key age: 1 day WARN
Domain-wide Delegation authentication:, User: admin@domain.com, Scopes: 38 Domain-wide Delegation authentication:, User: gamteam@domain.com, Scopes: 38
https://mail.google.com/ FAIL (1/38) https://mail.google.com/ FAIL (1/38)
https://sites.google.com/feeds FAIL (2/38) https://sites.google.com/feeds FAIL (2/38)
https://www.googleapis.com/auth/analytics.readonly FAIL (3/38) https://www.googleapis.com/auth/analytics.readonly FAIL (3/38)
@@ -991,14 +991,14 @@ If not, make sure that you are logged in as a domain admin, then re-enter the li
Wait a moment and then perform the following command; it it still fails, wait a bit longer, it can sometimes take serveral minutes Wait a moment and then perform the following command; it it still fails, wait a bit longer, it can sometimes take serveral minutes
for the authorization to complete. for the authorization to complete.
``` ```
C:\>gam user admin@domain.com check serviceaccount C:\>gam user gamteam@domain.com check serviceaccount
System time status System time status
Your system time differs from admin.googleapis.com by less than 1 second PASS Your system time differs from admin.googleapis.com by less than 1 second PASS
Service Account Private Key Authentication Service Account Private Key Authentication
Authentication PASS Authentication PASS
Service Account Private Key age; Google recommends rotating keys on a routine basis Service Account Private Key age; Google recommends rotating keys on a routine basis
Service Account Private Key age: 1 day WARN Service Account Private Key age: 1 day WARN
Domain-wide Delegation authentication:, User: admin@domain.com, Scopes: 38 Domain-wide Delegation authentication:, User: gamteam@domain.com, Scopes: 38
https://mail.google.com/ PASS (1/38) https://mail.google.com/ PASS (1/38)
https://sites.google.com/feeds PASS (2/38) https://sites.google.com/feeds PASS (2/38)
https://www.googleapis.com/auth/analytics.readonly PASS (3/38) https://www.googleapis.com/auth/analytics.readonly PASS (3/38)

View File

@@ -10,30 +10,30 @@ and all necessary authentications.
## Linux and MacOS and Google Cloud Shell ## Linux and MacOS and Google Cloud Shell
In these examples, your Google Super admin is shown as admin@domain.com; replace with the In these examples, your Google Super admin is shown as gamteam@domain.com; replace with the
actual email adddress. actual email adddress.
In these examples, the user home folder is shown as /Users/admin; adjust according to your In these examples, the user home folder is shown as /Users/gamteam; adjust according to your
specific situation; e.g., /home/administrator. specific situation; e.g., /home/administrator.
This example assumes that GAM7 has been installed in /Users/admin/bin/gam7. This example assumes that GAM7 has been installed in /Users/gamteam/bin/gam7.
If you've installed GAM7 in another directory, substitute that value in the directions. If you've installed GAM7 in another directory, substitute that value in the directions.
### Set a configuration directory ### Set a configuration directory
The default GAM configuration directory is /Users/admin/.gam; for more flexibility you The default GAM configuration directory is /Users/gamteam/.gam; for more flexibility you
probably want to select a non-hidden location. This example assumes that the GAM probably want to select a non-hidden location. This example assumes that the GAM
configuration directory will be /Users/admin/GAMConfig; If you've chosen another directory, configuration directory will be /Users/gamteam/GAMConfig; If you've chosen another directory,
substitute that value in the directions. substitute that value in the directions.
Make the directory: Make the directory:
``` ```
admin@server:/Users/admin$ mkdir -p /Users/admin/GAMConfig gamteam@server:/Users/gamteam$ mkdir -p /Users/gamteam/GAMConfig
``` ```
Add the following line: Add the following line:
``` ```
export GAMCFGDIR="/Users/admin/GAMConfig" export GAMCFGDIR="/Users/gamteam/GAMConfig"
``` ```
to one of these files based on your shell: to one of these files based on your shell:
``` ```
@@ -45,34 +45,34 @@ to one of these files based on your shell:
Issue the following command replacing `<Filename>` with the name of the file you edited: Issue the following command replacing `<Filename>` with the name of the file you edited:
``` ```
admin@server:/Users/admin$ source <Filename> gamteam@server:/Users/gamteam$ source <Filename>
``` ```
You need to make sure the GAM configuration directory actually exists. Test that like this: You need to make sure the GAM configuration directory actually exists. Test that like this:
``` ```
admin@server:/Users/admin$ ls -l $GAMCFGDIR gamteam@server:/Users/gamteam$ ls -l $GAMCFGDIR
``` ```
### Set a working directory ### Set a working directory
You should establish a GAM working directory; you will store your GAM related You should establish a GAM working directory; you will store your GAM related
data in this folder and execute GAM commands from this folder. You should not use data in this folder and execute GAM commands from this folder. You should not use
/Users/admin/bin/gam7 or /Users/admin/GAMConfig for this purpose. /Users/gamteam/bin/gam7 or /Users/gamteam/GAMConfig for this purpose.
This example assumes that the GAM working directory will be /Users/admin/GAMWork; If you've chosen This example assumes that the GAM working directory will be /Users/gamteam/GAMWork; If you've chosen
another directory, substitute that value in the directions. another directory, substitute that value in the directions.
Make the directory: Make the directory:
``` ```
admin@server:/Users/admin$ mkdir -p /Users/admin/GAMWork gamteam@server:/Users/gamteam$ mkdir -p /Users/gamteam/GAMWork
``` ```
### Set an alias ### Set an alias
You should set an alias to point to /Users/admin/bin/gam7/gam so you can operate from the /Users/admin/GAMWork directory. You should set an alias to point to /Users/gamteam/bin/gam7/gam so you can operate from the /Users/gamteam/GAMWork directory.
Aliases aren't available in scripts, so you may want to set a symlink instead, see below. Aliases aren't available in scripts, so you may want to set a symlink instead, see below.
Add the following line: Add the following line:
``` ```
alias gam="/Users/admin/bin/gam7/gam" alias gam="/Users/gamteam/bin/gam7/gam"
``` ```
to one of these files based on your shell: to one of these files based on your shell:
``` ```
@@ -85,62 +85,62 @@ to one of these files based on your shell:
If you already have an alias for legacy GAM but are no longer going to run it, delete these lines: If you already have an alias for legacy GAM but are no longer going to run it, delete these lines:
``` ```
function gam() { "/Users/admin/bin/gam/gam" "$@" ; }" function gam() { "/Users/gamteam/bin/gam/gam" "$@" ; }"
alias gam="/Users/admin/bin/gam/gam" alias gam="/Users/gamteam/bin/gam/gam"
``` ```
If you already have an alias for legacy GAM and want to run it and GAM7, give your old alias a different name: If you already have an alias for legacy GAM and want to run it and GAM7, give your old alias a different name:
``` ```
function gamstd() { "/Users/admin/bin/gam/gam" "$@" ; }" function gamstd() { "/Users/gamteam/bin/gam/gam" "$@" ; }"
alias gamstd="/Users/admin/bin/gam/gam" alias gamstd="/Users/gamteam/bin/gam/gam"
``` ```
Issue the following command replacing `<Filename>` with the name of the file you edited: Issue the following command replacing `<Filename>` with the name of the file you edited:
``` ```
admin@server:/Users/admin$ source <Filename> gamteam@server:/Users/gamteam$ source <Filename>
``` ```
### Set a symlink ### Set a symlink
Set a symlink in `/usr/local/bin` (or some other location on $PATH) to point to GAM. Set a symlink in `/usr/local/bin` (or some other location on $PATH) to point to GAM.
``` ```
admin@server:/Users/admin$ ln -s "/Users/admin/bin/gam7/gam" /usr/local/bin/gam gamteam@server:/Users/gamteam$ ln -s "/Users/gamteam/bin/gam7/gam" /usr/local/bin/gam
``` ```
Set environment variable OLDGAMPATH to point to the existing Gam directory; /Users/admin/bin/gam will be used in this example. Set environment variable OLDGAMPATH to point to the existing Gam directory; /Users/gamteam/bin/gam will be used in this example.
If your existing Gam is in another directory, substitute that value in the directions. If your existing Gam is in another directory, substitute that value in the directions.
``` ```
admin@server:/Users/admin$ export OLDGAMPATH=/Users/admin/bin/gam gamteam@server:/Users/gamteam$ export OLDGAMPATH=/Users/gamteam/bin/gam
``` ```
Verify that OLDGAMPATH points to the correct location. Verify that OLDGAMPATH points to the correct location.
``` ```
admin@server:/Users/admin$ ls -l $OLDGAMPATH/*.json gamteam@server:/Users/gamteam$ ls -l $OLDGAMPATH/*.json
-rw-r-----@ 1 admin staff 553 Feb 26 10:39 /Users/admin/bin/gam/client_secrets.json -rw-r-----@ 1 admin staff 553 Feb 26 10:39 /Users/gamteam/bin/gam/client_secrets.json
-rw-r-----@ 1 admin staff 2377 Feb 26 10:39 /Users/admin/bin/gam/oauth2service.json -rw-r-----@ 1 admin staff 2377 Feb 26 10:39 /Users/gamteam/bin/gam/oauth2service.json
admin@server:/Users/admin$ gamteam@server:/Users/gamteam$
``` ```
### Initialize GAM7; this should be the first GAM7 command executed. ### Initialize GAM7; this should be the first GAM7 command executed.
``` ```
admin@server:/Users/admin$ gam config drive_dir /Users/admin/GAMWork verify gamteam@server:/Users/gamteam$ gam config drive_dir /Users/gamteam/GAMWork verify
Created: /Users/admin/GAMConfig Created: /Users/gamteam/GAMConfig
Created: /Users/admin/GAMConfig/gamcache Created: /Users/gamteam/GAMConfig/gamcache
Copied: /Users/admin/bin/gam/oauth2service.json, To: /Users/admin/GAMConfig/oauth2service.json Copied: /Users/gamteam/bin/gam/oauth2service.json, To: /Users/gamteam/GAMConfig/oauth2service.json
Copied: /Users/admin/bin/gam/oauth2.txt, To: /Users/admin/GAMConfig/oauth2.txt Copied: /Users/gamteam/bin/gam/oauth2.txt, To: /Users/gamteam/GAMConfig/oauth2.txt
Copied: /Users/admin/bin/gam/client_secrets.json, To: /Users/admin/GAMConfig/client_secrets.json Copied: /Users/gamteam/bin/gam/client_secrets.json, To: /Users/gamteam/GAMConfig/client_secrets.json
Config File: /Users/admin/GAMConfig/gam.cfg, Initialized Config File: /Users/gamteam/GAMConfig/gam.cfg, Initialized
Section: DEFAULT Section: DEFAULT
... ...
cache_dir = /Users/admin/GAMConfig/gamcache cache_dir = /Users/gamteam/GAMConfig/gamcache
... ...
config_dir = /Users/admin/GAMConfig config_dir = /Users/gamteam/GAMConfig
... ...
drive_dir = /Users/admin/GAMWork drive_dir = /Users/gamteam/GAMWork
... ...
admin@server:/Users/admin$ gamteam@server:/Users/gamteam$
``` ```
### Verify initialization, this was a successful installation. ### Verify initialization, this was a successful installation.
``` ```
admin@server:/Users/admin$ ls -l $GAMCFGDIR gamteam@server:/Users/gamteam$ ls -l $GAMCFGDIR
total 48 total 48
-rw-r-----+ 1 admin staff 553 Mar 3 09:23 client_secrets.json -rw-r-----+ 1 admin staff 553 Mar 3 09:23 client_secrets.json
-rw-r-----+ 1 admin staff 1069 Mar 3 09:23 gam.cfg -rw-r-----+ 1 admin staff 1069 Mar 3 09:23 gam.cfg
@@ -149,21 +149,21 @@ drwxr-x---+ 2 admin staff 68 Mar 3 09:23 gamcache
-rw-r-----+ 1 admin staff 5104 Mar 3 09:23 oauth2.txt -rw-r-----+ 1 admin staff 5104 Mar 3 09:23 oauth2.txt
-rw-rw-rw-+ 1 admin staff 0 Mar 3 09:23 oauth2.txt.lock -rw-rw-rw-+ 1 admin staff 0 Mar 3 09:23 oauth2.txt.lock
-rw-r-----+ 1 admin staff 2377 Mar 3 09:23 oauth2service.json -rw-r-----+ 1 admin staff 2377 Mar 3 09:23 oauth2service.json
admin@server:/Users/admin$ gamteam@server:/Users/gamteam$
``` ```
If the verification looks like this, then you'll have to copy client_secrets.json and oauth2service.json manually. If the verification looks like this, then you'll have to copy client_secrets.json and oauth2service.json manually.
``` ```
admin@server:/Users/admin$ ls -l $GAMCFGDIR gamteam@server:/Users/gamteam$ ls -l $GAMCFGDIR
total 40 total 40
-rw-r-----+ 1 admin admin 1427 Nov 1 11:38 gam.cfg -rw-r-----+ 1 admin admin 1427 Nov 1 11:38 gam.cfg
drwxr-x---+ 16 admin admin 544 Nov 2 07:25 gamcache drwxr-x---+ 16 admin admin 544 Nov 2 07:25 gamcache
-rw-r--r--+ 1 admin admin 10 Nov 2 15:31 lastupdatecheck.txt -rw-r--r--+ 1 admin admin 10 Nov 2 15:31 lastupdatecheck.txt
-rw-rw-rw-+ 1 admin admin 0 Sep 19 17:28 oauth2.txt.lock -rw-rw-rw-+ 1 admin admin 0 Sep 19 17:28 oauth2.txt.lock
admin@server:/Users/admin$ cp -p $OLDGAMPATH/client_secrets.json $GAMCFGDIR/ gamteam@server:/Users/gamteam$ cp -p $OLDGAMPATH/client_secrets.json $GAMCFGDIR/
admin@server:/Users/admin$ cp -p $OLDGAMPATH/oauth2service.json $GAMCFGDIR/ gamteam@server:/Users/gamteam$ cp -p $OLDGAMPATH/oauth2service.json $GAMCFGDIR/
admin@server:/Users/admin$ cp -p $OLDGAMPATH/oauth2.txt $GAMCFGDIR/ gamteam@server:/Users/gamteam$ cp -p $OLDGAMPATH/oauth2.txt $GAMCFGDIR/
admin@server:/Users/admin$ ls -l $GAMCFGDIR gamteam@server:/Users/gamteam$ ls -l $GAMCFGDIR
total 40 total 40
-rw-r-----+ 1 admin staff 553 Mar 3 09:23 client_secrets.json -rw-r-----+ 1 admin staff 553 Mar 3 09:23 client_secrets.json
-rw-r-----+ 1 admin staff 1069 Mar 3 09:23 gam.cfg -rw-r-----+ 1 admin staff 1069 Mar 3 09:23 gam.cfg
@@ -175,9 +175,9 @@ drwxr-x---+ 2 admin staff 68 Mar 3 09:23 gamcache
``` ```
### Update your project with local browser to include the additional APIs that GAM7 uses. ### Update your project with local browser to include the additional APIs that GAM7 uses.
``` ```
admin@server:/Users/admin$ gam update project gamteam@server:/Users/gamteam$ gam update project
Enter your Google Workspace admin or GCP project manager email address authorized to manage project(s) gam-project-abc-123-xyz? admin@domain.com Enter your Google Workspace admin or GCP project manager email address authorized to manage project(s) gam-project-abc-123-xyz? gamteam@domain.com
Your browser has been opened to visit: Your browser has been opened to visit:
@@ -205,14 +205,14 @@ Enable 3 APIs
API: groupsmigration.googleapis.com, Enabled (2/3) API: groupsmigration.googleapis.com, Enabled (2/3)
API: sheets.googleapis.com, Enabled (3/3) API: sheets.googleapis.com, Enabled (3/3)
admin@server:/Users/admin$ gamteam@server:/Users/gamteam$
``` ```
### Update your project without local browser (Google Cloud Shell for instance) to include the additional APIs that GAM7 uses ### Update your project without local browser (Google Cloud Shell for instance) to include the additional APIs that GAM7 uses
``` ```
admin@server:/Users/admin$ gam config no_browser true save gamteam@server:/Users/gamteam$ gam config no_browser true save
admin@server:/Users/admin$ gam update project gamteam@server:/Users/gamteam$ gam update project
Enter your Google Workspace admin or GCP project manager email address authorized to manage project(s) gam-project-abc-123-xyz? admin@domain.com Enter your Google Workspace admin or GCP project manager email address authorized to manage project(s) gam-project-abc-123-xyz? gamteam@domain.com
Go to the following link in a browser on other computer: Go to the following link in a browser on other computer:
@@ -239,7 +239,7 @@ Enable 3 APIs
API: groupsmigration.googleapis.com, Enabled (2/3) API: groupsmigration.googleapis.com, Enabled (2/3)
API: sheets.googleapis.com, Enabled (3/3) API: sheets.googleapis.com, Enabled (3/3)
admin@server:/Users/admin$ gamteam@server:/Users/gamteam$
``` ```
### Enable GAM7 client access ### Enable GAM7 client access
@@ -249,17 +249,17 @@ You select a list of scopes, GAM uses a browser to get final authorization from
writes the credentials into the file oauth2.txt. writes the credentials into the file oauth2.txt.
``` ```
admin@server:/Users/admin$ rm -f /Users/admin/GAMConfig/oauth2.txt gamteam@server:/Users/gamteam$ rm -f /Users/gamteam/GAMConfig/oauth2.txt
admin@server:/Users/admin$ gam version gamteam@server:/Users/gamteam$ gam version
WARNING: Config File: /Users/admin/GAMConfig/gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: /Users/admin/GAMConfig/oauth2.txt, Not Found WARNING: Config File: /Users/gamteam/GAMConfig/gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: /Users/gamteam/GAMConfig/oauth2.txt, Not Found
GAM 7.34.02 - https://github.com/GAM-team/GAM - pyinstaller GAM 7.34.03 - https://github.com/GAM-team/GAM - pyinstaller
GAM Team <google-apps-manager@googlegroups.com> GAM Team <google-apps-manager@googlegroups.com>
Python 3.14.2 64-bit final Python 3.14.3 64-bit final
macOS Tahoe 26.2 x86_64 macOS Tahoe 26.3 arm64
Path: /Users/admin/bin/gam7 Path: /Users/gamteam/bin/gam7
Config File: /Users/admin/GAMConfig/gam.cfg, Section: DEFAULT, customer_id: my_customer, domain: domain.com Config File: /Users/gamteam/GAMConfig/gam.cfg, Section: DEFAULT, customer_id: my_customer, domain: domain.com
admin@server:/Users/admin$ gam oauth create gamteam@server:/Users/gamteam$ gam oauth create
[*] 0) Calendar API (supports readonly) [*] 0) Calendar API (supports readonly)
[*] 1) Chrome Browser Cloud Management API (supports readonly) [*] 1) Chrome Browser Cloud Management API (supports readonly)
@@ -326,7 +326,7 @@ Continue to authorization by entering a 'c'
Please enter 0-50[a|r] or s|u|e|c: c Please enter 0-50[a|r] or s|u|e|c: c
Enter your Google Workspace admin email address? admin@domain.com Enter your Google Workspace admin email address? gamteam@domain.com
Go to the following link in a browser on this computer or on another computer: Go to the following link in a browser on this computer or on another computer:
@@ -338,13 +338,13 @@ click the Allow button, paste "Unable to connect" URL from other computer (only
Enter verification code or paste "Unable to connect" URL from other computer (only URL data up to &scope required): Enter verification code or paste "Unable to connect" URL from other computer (only URL data up to &scope required):
The authentication flow has completed. The authentication flow has completed.
Client OAuth2 File: /Users/admin/GAMConfig/oauth2.txt, Created Client OAuth2 File: /Users/gamteam/GAMConfig/oauth2.txt, Created
admin@server:/Users/admin$ gamteam@server:/Users/gamteam$
``` ```
### Enable GAM7 service account access. ### Enable GAM7 service account access.
``` ```
admin@server:/Users/admin$ gam user admin@domain.com update serviceaccount gamteam@server:/Users/gamteam$ gam user gamteam@domain.com update serviceaccount
[*] 0) AlertCenter API [*] 0) AlertCenter API
[*] 1) Analytics API - read only [*] 1) Analytics API - read only
[*] 2) Analytics Admin API - read only [*] 2) Analytics Admin API - read only
@@ -408,7 +408,7 @@ Service Account Private Key Authentication
Authentication PASS Authentication PASS
Service Account Private Key age; Google recommends rotating keys on a routine basis Service Account Private Key age; Google recommends rotating keys on a routine basis
Service Account Private Key age: 1 day WARN Service Account Private Key age: 1 day WARN
Domain-wide Delegation authentication:, User: admin@domain.com, Scopes: 38 Domain-wide Delegation authentication:, User: gamteam@domain.com, Scopes: 38
https://mail.google.com/ PASS (1/38) https://mail.google.com/ PASS (1/38)
https://sites.google.com/feeds FAIL (2/38) https://sites.google.com/feeds FAIL (2/38)
https://www.googleapis.com/auth/analytics.readonly FAIL (3/38) https://www.googleapis.com/auth/analytics.readonly FAIL (3/38)
@@ -459,7 +459,7 @@ Click AUTHORIZE
When the box closes you're done When the box closes you're done
After authorizing it may take some time for this test to pass so wait a few moments and then try this command again. After authorizing it may take some time for this test to pass so wait a few moments and then try this command again.
admin@server:/Users/admin$ gamteam@server:/Users/gamteam$
``` ```
The link shown in the error message should take you directly to the authorization screen. The link shown in the error message should take you directly to the authorization screen.
If not, make sure that you are logged in as a domain admin, then re-enter the link. If not, make sure that you are logged in as a domain admin, then re-enter the link.
@@ -469,7 +469,7 @@ If not, make sure that you are logged in as a domain admin, then re-enter the li
Wait a moment and then perform the following command; it it still fails, wait a bit longer, it can sometimes take serveral minutes Wait a moment and then perform the following command; it it still fails, wait a bit longer, it can sometimes take serveral minutes
for the authorization to complete. for the authorization to complete.
``` ```
admin@server:/Users/admin$ gam user admin@domain.com check serviceaccount gamteam@server:/Users/gamteam$ gam user gamteam@domain.com check serviceaccount
System time status System time status
Your system time differs from admin.googleapis.com by less than 1 second PASS Your system time differs from admin.googleapis.com by less than 1 second PASS
@@ -477,7 +477,7 @@ Service Account Private Key Authentication
Authentication PASS Authentication PASS
Service Account Private Key age; Google recommends rotating keys on a routine basis Service Account Private Key age; Google recommends rotating keys on a routine basis
Service Account Private Key age: 1 day WARN Service Account Private Key age: 1 day WARN
Domain-wide Delegation authentication:, User: admin@domain.com, Scopes: 38 Domain-wide Delegation authentication:, User: gamteam@domain.com, Scopes: 38
https://mail.google.com/ PASS (1/38) https://mail.google.com/ PASS (1/38)
https://sites.google.com/feeds PASS (2/38) https://sites.google.com/feeds PASS (2/38)
https://www.googleapis.com/auth/analytics.readonly PASS (3/38) https://www.googleapis.com/auth/analytics.readonly PASS (3/38)
@@ -519,14 +519,14 @@ Domain-wide Delegation authentication:, User: admin@domain.com, Scopes: 38
All scopes PASSED! All scopes PASSED!
Service Account Client name: SVCACCTID is fully authorized. Service Account Client name: SVCACCTID is fully authorized.
admin@server:/Users/admin$ gamteam@server:/Users/gamteam$
``` ```
### Update gam.cfg with some basic values ### Update gam.cfg with some basic values
* `customer_id` - Having this data keeps Gam from having to make extra API calls * `customer_id` - Having this data keeps Gam from having to make extra API calls
* `domain` - This allows you to omit the domain portion of email addresses * `domain` - This allows you to omit the domain portion of email addresses
* `timezone local` - Gam will convert all UTC times to your local timezone * `timezone local` - Gam will convert all UTC times to your local timezone
``` ```
admin@server:/Users/admin$ gam info domain gamteam@server:/Users/gamteam$ gam info domain
Customer ID: C01234567 Customer ID: C01234567
Primary Domain: domain.com Primary Domain: domain.com
Customer Creation Time: 2007-06-06T15:47:55.444Z Customer Creation Time: 2007-06-06T15:47:55.444Z
@@ -534,8 +534,8 @@ Primary Domain Verified: True
Default Language: en Default Language: en
... ...
admin@server:/Users/admin$ gam config customer_id C01234567 domain domain.com timezone local save verify gamteam@server:/Users/gamteam$ gam config customer_id C01234567 domain domain.com timezone local save verify
Config File: /Users/admin/GAMConfig/gam.cfg, Saved Config File: /Users/gamteam/GAMConfig/gam.cfg, Saved
Section: DEFAULT Section: DEFAULT
activity_max_results = 100 activity_max_results = 100
admin_email = '' admin_email = ''
@@ -546,18 +546,18 @@ Section: DEFAULT
bail_on_internal_error_tries = 2 bail_on_internal_error_tries = 2
batch_size = 50 batch_size = 50
cacerts_pem = '' cacerts_pem = ''
cache_dir = /Users/admin/GAMConfig/gamcache cache_dir = /Users/gamteam/GAMConfig/gamcache
cache_discovery_only = true cache_discovery_only = true
channel_customer_id = '' channel_customer_id = ''
charset = utf-8 charset = utf-8
chat_max_results = 100 chat_max_results = 100
classroom_max_results = 0 classroom_max_results = 0
client_secrets_json = client_secrets.json ; /Users/admin/GAMConfig/client_secrets.json client_secrets_json = client_secrets.json ; /Users/gamteam/GAMConfig/client_secrets.json
clock_skew_in_seconds = 10 clock_skew_in_seconds = 10
cmdlog = '' cmdlog = ''
cmdlog_max_backups = 5 cmdlog_max_backups = 5
cmdlog_max_kilo_bytes = 1000 cmdlog_max_kilo_bytes = 1000
config_dir = /Users/admin/GAMConfig config_dir = /Users/gamteam/GAMConfig
contact_max_results = 100 contact_max_results = 100
csv_input_column_delimiter = , csv_input_column_delimiter = ,
csv_input_no_escape_char = true csv_input_no_escape_char = true
@@ -594,7 +594,7 @@ Section: DEFAULT
developer_preview_apis = '' developer_preview_apis = ''
device_max_results = 200 device_max_results = 200
domain = domain.com domain = domain.com
drive_dir = /Users/admin/GAMWork drive_dir = /Users/gamteam/GAMWork
drive_max_results = 1000 drive_max_results = 1000
email_batch_size = 50 email_batch_size = 50
enable_dasa = false enable_dasa = false
@@ -622,8 +622,8 @@ Section: DEFAULT
no_verify_ssl = false no_verify_ssl = false
num_tbatch_threads = 2 num_tbatch_threads = 2
num_threads = 5 num_threads = 5
oauth2_txt = oauth2.txt ; /Users/admin/GAMConfig/oauth2.txt oauth2_txt = oauth2.txt ; /Users/gamteam/GAMConfig/oauth2.txt
oauth2service_json = oauth2service.json ; /Users/admin/GAMConfig/oauth2service.json oauth2service_json = oauth2service.json ; /Users/gamteam/GAMConfig/oauth2service.json
output_dateformat = '' output_dateformat = ''
output_timeformat = '' output_timeformat = ''
people_max_results = 100 people_max_results = 100
@@ -674,12 +674,12 @@ Section: DEFAULT
user_max_results = 500 user_max_results = 500
user_service_account_access_only = false user_service_account_access_only = false
admin@server:/Users/admin$ gamteam@server:/Users/gamteam$
``` ```
## Windows ## Windows
In these examples, your Google Super admin is shown as admin@domain.com; replace with the In these examples, your Google Super admin is shown as gamteam@domain.com; replace with the
actual email adddress. actual email adddress.
This example assumes that GAM7 has been installed in C:\GAM7; if you've installed This example assumes that GAM7 has been installed in C:\GAM7; if you've installed
@@ -965,7 +965,7 @@ C:\>dir %GAMCFGDIR%
``` ```
C:\>gam update project C:\>gam update project
Enter your Google Workspace admin or GCP project manager email address authorized to manage project(s) gam-project-abc-123-xyz? admin@domain.com Enter your Google Workspace admin or GCP project manager email address authorized to manage project(s) gam-project-abc-123-xyz? gamteam@domain.com
Your browser has been opened to visit: Your browser has been opened to visit:
@@ -997,7 +997,7 @@ C:\>
C:\>gam config no_browser true save C:\>gam config no_browser true save
C:\>gam update project C:\>gam update project
Enter your Google Workspace admin or GCP project manager email address authorized to manage project(s) gam-project-abc-123-xyz? admin@domain.com Enter your Google Workspace admin or GCP project manager email address authorized to manage project(s) gam-project-abc-123-xyz? gamteam@domain.com
Go to the following link in a browser on other computer: Go to the following link in a browser on other computer:
@@ -1036,9 +1036,9 @@ writes the credentials into the file oauth2.txt.
C:\>del C:\GAMConfig\oauth2.txt C:\>del C:\GAMConfig\oauth2.txt
C:\>gam version C:\>gam version
WARNING: Config File: C:\GAMConfig\gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: C:\GAMConfig\oauth2.txt, Not Found WARNING: Config File: C:\GAMConfig\gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: C:\GAMConfig\oauth2.txt, Not Found
GAM 7.34.02 - https://github.com/GAM-team/GAM - pythonsource GAM 7.34.03 - https://github.com/GAM-team/GAM - pythonsource
GAM Team <google-apps-manager@googlegroups.com> GAM Team <google-apps-manager@googlegroups.com>
Python 3.14.2 64-bit final Python 3.14.3 64-bit final
Windows 11 10.0.26200 AMD64 Windows 11 10.0.26200 AMD64
Path: C:\GAM7 Path: C:\GAM7
Config File: C:\GAMConfig\gam.cfg, Section: DEFAULT, customer_id: my_customer, domain: domain.com Config File: C:\GAMConfig\gam.cfg, Section: DEFAULT, customer_id: my_customer, domain: domain.com
@@ -1110,7 +1110,7 @@ Continue to authorization by entering a 'c'
Please enter 0-50[a|r] or s|u|e|c: c Please enter 0-50[a|r] or s|u|e|c: c
Enter your Google Workspace admin email address? admin@domain.com Enter your Google Workspace admin email address? gamteam@domain.com
Go to the following link in a browser on this computer or on another computer: Go to the following link in a browser on this computer or on another computer:
@@ -1129,7 +1129,7 @@ C:\>
### Enable GAM7 service account access. ### Enable GAM7 service account access.
``` ```
C:\>gam user admin@domain.com update serviceaccount C:\>gam user gamteam@domain.com update serviceaccount
[*] 0) AlertCenter API [*] 0) AlertCenter API
[*] 1) Analytics API - read only [*] 1) Analytics API - read only
[*] 2) Analytics Admin API - read only [*] 2) Analytics Admin API - read only
@@ -1193,7 +1193,7 @@ Service Account Private Key Authentication
Authentication PASS Authentication PASS
Service Account Private Key age; Google recommends rotating keys on a routine basis Service Account Private Key age; Google recommends rotating keys on a routine basis
Service Account Private Key age: 1 day WARN Service Account Private Key age: 1 day WARN
Domain-wide Delegation authentication:, User: admin@domain.com, Scopes: 38 Domain-wide Delegation authentication:, User: gamteam@domain.com, Scopes: 38
https://mail.google.com/ PASS (1/38) https://mail.google.com/ PASS (1/38)
https://sites.google.com/feeds FAIL (2/38) https://sites.google.com/feeds FAIL (2/38)
https://www.googleapis.com/auth/analytics.readonly FAIL (3/38) https://www.googleapis.com/auth/analytics.readonly FAIL (3/38)
@@ -1254,14 +1254,14 @@ If not, make sure that you are logged in as a domain admin, then re-enter the li
Wait a moment and then perform the following command; it it still fails, wait a bit longer, it can sometimes take serveral minutes Wait a moment and then perform the following command; it it still fails, wait a bit longer, it can sometimes take serveral minutes
for the authorization to complete. for the authorization to complete.
``` ```
C:\>gam user admin@domain.com check serviceaccount C:\>gam user gamteam@domain.com check serviceaccount
System time status System time status
Your system time differs from admin.googleapis.com by less than 1 second PASS Your system time differs from admin.googleapis.com by less than 1 second PASS
Service Account Private Key Authentication Service Account Private Key Authentication
Authentication PASS Authentication PASS
Service Account Private Key age; Google recommends rotating keys on a routine basis Service Account Private Key age; Google recommends rotating keys on a routine basis
Service Account Private Key age: 1 day WARN Service Account Private Key age: 1 day WARN
Domain-wide Delegation authentication:, User: admin@domain.com, Scopes: 38 Domain-wide Delegation authentication:, User: gamteam@domain.com, Scopes: 38
https://mail.google.com/ PASS (1/38) https://mail.google.com/ PASS (1/38)
https://sites.google.com/feeds PASS (2/38) https://sites.google.com/feeds PASS (2/38)
https://www.googleapis.com/auth/analytics.readonly PASS (3/38) https://www.googleapis.com/auth/analytics.readonly PASS (3/38)

View File

@@ -3,23 +3,23 @@
Print the current version of Gam with details Print the current version of Gam with details
``` ```
gam version gam version
GAM 7.34.02 - https://github.com/GAM-team/GAM - pyinstaller GAM 7.34.03 - https://github.com/GAM-team/GAM - pyinstaller
GAM Team <google-apps-manager@googlegroups.com> GAM Team <google-apps-manager@googlegroups.com>
Python 3.14.2 64-bit final Python 3.14.3 64-bit final
macOS Tahoe 26.2 x86_64 macOS Tahoe 26.3 arm64
Path: /Users/Admin/bin/gam7 Path: /Users/gamteam/bin/gam7
Config File: /Users/admin/GAMConfig/gam.cfg, Section: DEFAULT, customer_id: my_customer, domain: domain.com Config File: /Users/gamteam/GamConfig/gam.cfg, Section: DEFAULT, customer_id: my_customer, domain: domain.com
Time: 2025-12-23T13:57:00-08:00 Time: 2026-02-15T07:51:00-08:00
``` ```
Print the current version of Gam with details and time offset information Print the current version of Gam with details and time offset information
``` ```
gam version timeoffset gam version timeoffset
GAM 7.34.02 - https://github.com/GAM-team/GAM - pyinstaller GAM 7.34.03 - https://github.com/GAM-team/GAM - pyinstaller
GAM Team <google-apps-manager@googlegroups.com> GAM Team <google-apps-manager@googlegroups.com>
Python 3.14.2 64-bit final Python 3.14.3 64-bit final
macOS Tahoe 26.2 x86_64 macOS Tahoe 26.3 arm64
Path: /Users/Admin/bin/gam7 Path: /Users/gamteam/bin/gam7
Config File: /Users/admin/GAMConfig/gam.cfg, Section: DEFAULT, customer_id: my_customer, domain: domain.com Config File: /Users/admin/GAMConfig/gam.cfg, Section: DEFAULT, customer_id: my_customer, domain: domain.com
Your system time differs from www.googleapis.com by less than 1 second Your system time differs from www.googleapis.com by less than 1 second
``` ```
@@ -27,29 +27,29 @@ Your system time differs from www.googleapis.com by less than 1 second
Print the current version of Gam with extended details and SSL information Print the current version of Gam with extended details and SSL information
``` ```
gam version extended gam version extended
GAM 7.34.02 - https://github.com/GAM-team/GAM - pyinstaller GAM 7.34.03 - https://github.com/GAM-team/GAM - pyinstaller
GAM Team <google-apps-manager@googlegroups.com> GAM Team <google-apps-manager@googlegroups.com>
Python 3.14.2 64-bit final Python 3.14.3 64-bit final
macOS Tahoe 26.2 x86_64 macOS Tahoe 26.3 arm64
Path: /Users/Admin/bin/gam7 Path: /Users/gamteam/bin/gam7
Config File: /Users/admin/GAMConfig/gam.cfg, Section: DEFAULT, customer_id: my_customer, domain: domain.com Config File: /Users/gamteam/GamConfig/gam.cfg, Section: DEFAULT, customer_id: my_customer, domain: domain.com
Time: 2025-12-23T13:57:00-08:00 Time: 2026-02-15T07:51:00-08:00
Your system time differs from admin.googleapis.com by less than 1 second Your system time differs from admin.googleapis.com by less than 1 second
OpenSSL 3.6.1 27 Jan 2026 OpenSSL 3.6.1 27 Jan 2026
arrow 1.3.0 arrow 1.4.0
chardet 5.2.0 chardet 5.2.0
cryptography 46.0.1 cryptography 46.0.5
filelock 3.19.1 filelock 3.21.2
google-api-python-client 2.182.0 google-api-python-client 2.190.0
google-auth-httplib2 0.2.0 google-auth-httplib2 0.3.0
google-auth-oauthlib 1.2.2 google-auth-oauthlib 1.2.4
google-auth 2.40.3 google-auth 2.48.0
lxml 6.0.1 lxml 6.0.2
httplib2 0.31.0 httplib2 0.31.2
passlib 1.7.4 passlib 1.7.4
pathvalidate 3.3.1 pathvalidate 3.3.1
pyscard 2.3.0 pyscard 2.3.1
yubikey-manager 5.8.0 yubikey-manager 5.9.0
admin.googleapis.com connects using TLSv1.3 TLS_AES_256_GCM_SHA384 admin.googleapis.com connects using TLSv1.3 TLS_AES_256_GCM_SHA384
``` ```
@@ -65,10 +65,10 @@ google-api-python-client 2.77.0
httplib2 0.16.0 httplib2 0.16.0
oauth2client 4.1.3 oauth2client 4.1.3
MacOS High Sierra 10.13.6 x86_64 MacOS High Sierra 10.13.6 x86_64
Path: /Users/Admin/bin/gam7 Path: /Users/gamteam/bin/gam7
Version Check: Version Check:
Current: 5.35.08 Current: 5.35.08
Latest: 7.34.02 Latest: 7.34.03
echo $? echo $?
1 1
``` ```
@@ -76,7 +76,7 @@ echo $?
Print the current version number without details Print the current version number without details
``` ```
gam version simple gam version simple
7.34.02 7.34.03
``` ```
In Linux/MacOS you can do: In Linux/MacOS you can do:
``` ```
@@ -86,13 +86,13 @@ echo $VER
Print the current version of Gam and address of this Wiki Print the current version of Gam and address of this Wiki
``` ```
gam help gam help
GAM 7.34.02 - https://github.com/GAM-team/GAM GAM 7.34.03 - https://github.com/GAM-team/GAM
GAM Team <google-apps-manager@googlegroups.com> GAM Team <google-apps-manager@googlegroups.com>
Python 3.14.2 64-bit final Python 3.14.3 64-bit final
macOS Tahoe 26.2 x86_64 macOS Tahoe 26.3 arm64
Path: /Users/Admin/bin/gam7 Path: /Users/gamteam/bin/gam7
Config File: /Users/admin/GAMConfig/gam.cfg, Section: DEFAULT, customer_id: my_customer, domain: domain.com Config File: /Users/gamteam/GamConfig/gam.cfg, Section: DEFAULT, customer_id: my_customer, domain: domain.com
Time: 2025-12-23T13:57:00-08:00 Time: 2026-02-15T07:51:00-08:00
Help: Syntax in file /Users/Admin/bin/gam7/GamCommands.txt Help: Syntax in file /Users/gamteam/bin/gam7/GamCommands.txt
Help: Documentation is at https://github.com/GAM-team/GAM/wiki Help: Documentation is at https://github.com/GAM-team/GAM/wiki
``` ```