mirror of
https://github.com/GAM-team/GAM.git
synced 2026-07-03 12:21:35 +00:00
Improve gat report users, add birthday events
This commit is contained in:
@@ -176,6 +176,7 @@ Client access works when accessing Resource calendars.
|
|||||||
<AttendeeStatus> ::= accepted|declined|needsaction|tentative
|
<AttendeeStatus> ::= accepted|declined|needsaction|tentative
|
||||||
|
|
||||||
<EventType> ::=
|
<EventType> ::=
|
||||||
|
birthday|
|
||||||
default|
|
default|
|
||||||
focustime|
|
focustime|
|
||||||
fromgmail|
|
fromgmail|
|
||||||
@@ -241,6 +242,7 @@ Client access works when accessing Resource calendars.
|
|||||||
(attendee <EmailAddress>)|
|
(attendee <EmailAddress>)|
|
||||||
(attendeestatus [<AttendeeAttendance>] [<AttendeeStatus>] <EmailAddress>)|
|
(attendeestatus [<AttendeeAttendance>] [<AttendeeStatus>] <EmailAddress>)|
|
||||||
available|
|
available|
|
||||||
|
(birthday <Date>)|
|
||||||
(color <EventColorName>)|
|
(color <EventColorName>)|
|
||||||
(colorindex|colorid <EventColorIndex>)|
|
(colorindex|colorid <EventColorIndex>)|
|
||||||
(description <String>)|
|
(description <String>)|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
- [Definitions](#definitions)
|
- [Definitions](#definitions)
|
||||||
- [Display a specific Chrome policy schema](#display-a-specific-chrome-policy-schema)
|
- [Display a specific Chrome policy schema](#display-a-specific-chrome-policy-schema)
|
||||||
- [Display all or filtered Chrome policy schemas](#display-all-or-filtered-chrome-policy-schemas)
|
- [Display all or filtered Chrome policy schemas](#display-all-or-filtered-chrome-policy-schemas)
|
||||||
- [Display Chrome policy schemas in same format as Standard GAM](#display-chrome-policy-schemas-in-same-format-as-standard-gam)
|
- [Display Chrome policy schemas in same format as Legacy GAM](#display-chrome-policy-schemas-in-same-format-as-legacy-gam)
|
||||||
- [Create a Chrome policy image](#create-a-chrome-policy-image)
|
- [Create a Chrome policy image](#create-a-chrome-policy-image)
|
||||||
- [Update Chrome policy](#update-chrome-policy)
|
- [Update Chrome policy](#update-chrome-policy)
|
||||||
- [Delete Chrome policy](#delete-chrome-policy)
|
- [Delete Chrome policy](#delete-chrome-policy)
|
||||||
@@ -118,7 +118,7 @@ When using the `formatjson` option, double quotes are used extensively in the da
|
|||||||
The `quotechar <Character>` option allows you to choose an alternate quote character, single quote for instance, that makes for readable/processable output.
|
The `quotechar <Character>` option allows you to choose an alternate quote character, single quote for instance, that makes for readable/processable output.
|
||||||
`quotechar` defaults to `gam.cfg/csv_output_quote_char`. When uploading CSV files to Google, double quote `"` should be used.
|
`quotechar` defaults to `gam.cfg/csv_output_quote_char`. When uploading CSV files to Google, double quote `"` should be used.
|
||||||
|
|
||||||
## Display Chrome policy schemas in same format as Standard GAM
|
## Display Chrome policy schemas in same format as Legacy GAM
|
||||||
```
|
```
|
||||||
gam show chromeschemas std
|
gam show chromeschemas std
|
||||||
[filter <String>]
|
[filter <String>]
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ gam <Command> cros <CrOSEntity> ...
|
|||||||
```
|
```
|
||||||
The first form allows more powerful selection of devices with `<CrOSTypeEntity>`.
|
The first form allows more powerful selection of devices with `<CrOSTypeEntity>`.
|
||||||
|
|
||||||
The second form is backwards compatible with Standard GAM and selection with `<CrOSEntity>` is limited.
|
The second form is backwards compatible with Legacy GAM and selection with `<CrOSEntity>` is limited.
|
||||||
|
|
||||||
## Definitions
|
## Definitions
|
||||||
* [`<CrOSTypeEntity>`](Collections-of-ChromeOS-Devices)
|
* [`<CrOSTypeEntity>`](Collections-of-ChromeOS-Devices)
|
||||||
@@ -465,7 +465,7 @@ gam getcommand cros <CrOSEntity> commandid <CommandID> [times_to_check_status <I
|
|||||||
### Action Examples
|
### Action Examples
|
||||||
Remove user profile data from the device; the device will remain enrolled and connected.
|
Remove user profile data from the device; the device will remain enrolled and connected.
|
||||||
User data not synced to the Cloud including Downloads, Android app data and Crostini Linux VMs will be permanently lost.
|
User data not synced to the Cloud including Downloads, Android app data and Crostini Linux VMs will be permanently lost.
|
||||||
Commands with issuecommand directly after gam will work with standard GAM & GAMADV-XTD3, whereas commands where the issuecommand is after the cros <CrOSTypeEntity> will work only with GAMADV-XTD3.
|
Commands with issuecommand directly after gam will work with Legacy GAM & GAMADV-XTD3, whereas commands where the issuecommand is after the cros <CrOSTypeEntity> will work only with GAMADV-XTD3.
|
||||||
```
|
```
|
||||||
gam issuecommand cros dd1d659a-0ea4-4e94-905e-4726c7a5f1e9 command wipe_users doit
|
gam issuecommand cros dd1d659a-0ea4-4e94-905e-4726c7a5f1e9 command wipe_users doit
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -50,6 +50,8 @@
|
|||||||
|
|
||||||
<UserGoogleDoc> ::=
|
<UserGoogleDoc> ::=
|
||||||
<EmailAddress> <DriveFileIDEntity>|<DriveFileNameEntity>|(<SharedDriveEntity> <SharedDriveFileNameEntity>)
|
<EmailAddress> <DriveFileIDEntity>|<DriveFileNameEntity>|(<SharedDriveEntity> <SharedDriveFileNameEntity>)
|
||||||
|
|
||||||
|
<SheetEntity> ::= <String>|id:<Number>
|
||||||
<UserGoogleSheet> ::=
|
<UserGoogleSheet> ::=
|
||||||
<EmailAddress> <DriveFileIDEntity>|<DriveFileNameEntity>|(<SharedDriveEntity> <SharedDriveFileNameEntity>) <SheetEntity>
|
<EmailAddress> <DriveFileIDEntity>|<DriveFileNameEntity>|(<SharedDriveEntity> <SharedDriveFileNameEntity>) <SheetEntity>
|
||||||
|
|
||||||
|
|||||||
@@ -55,6 +55,8 @@
|
|||||||
|
|
||||||
<UserGoogleDoc> ::=
|
<UserGoogleDoc> ::=
|
||||||
<EmailAddress> <DriveFileIDEntity>|<DriveFileNameEntity>|(<SharedDriveEntity> <SharedDriveFileNameEntity>)
|
<EmailAddress> <DriveFileIDEntity>|<DriveFileNameEntity>|(<SharedDriveEntity> <SharedDriveFileNameEntity>)
|
||||||
|
|
||||||
|
<SheetEntity> ::= <String>|id:<Number>
|
||||||
<UserGoogleSheet> ::=
|
<UserGoogleSheet> ::=
|
||||||
<EmailAddress> <DriveFileIDEntity>|<DriveFileNameEntity>|(<SharedDriveEntity> <SharedDriveFileNameEntity>) <SheetEntity>
|
<EmailAddress> <DriveFileIDEntity>|<DriveFileNameEntity>|(<SharedDriveEntity> <SharedDriveFileNameEntity>) <SheetEntity>
|
||||||
```
|
```
|
||||||
@@ -88,8 +90,6 @@
|
|||||||
<SharedDriveIDEntity> |
|
<SharedDriveIDEntity> |
|
||||||
<SharedDriveNameEntity>
|
<SharedDriveNameEntity>
|
||||||
|
|
||||||
<SheetEntity> ::= <String>|id:<Number>
|
|
||||||
|
|
||||||
<UserTypeEntity> ::=
|
<UserTypeEntity> ::=
|
||||||
(all users|users_ns|users_susp|users_ns_susp)|
|
(all users|users_ns|users_susp|users_ns_susp)|
|
||||||
(user <UserItem>)|
|
(user <UserItem>)|
|
||||||
|
|||||||
56
docs/Downloads-Installs-GAM7.md
Normal file
56
docs/Downloads-Installs-GAM7.md
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
# Downloads-Installs-GAM7
|
||||||
|
You can download and install the current GAM7 release from the [GitHub Releases](https://github.com/GAM-team/GAM/releases/latest) page.
|
||||||
|
Choose one of the following:
|
||||||
|
|
||||||
|
* Executable Archive, Automatic, Linux/Mac OS/Google Cloud Shell/Raspberry Pi/ChromeOS
|
||||||
|
- Start a terminal session and execute one of the following commands:
|
||||||
|
- New install, default path `$HOME/bin`
|
||||||
|
- `bash <(curl -s -S -L https://git.io/gam-install)`
|
||||||
|
- New install, specify a path
|
||||||
|
- `bash <(curl -s -S -L https://git.io/gam-install) -d <Path>`
|
||||||
|
- Update to latest version, do not create project or authorizations, default path `$HOME/bin`
|
||||||
|
- `bash <(curl -s -S -L https://git.io/gam-install) -l`
|
||||||
|
- Update to latest version, do not create project or authorizations, specify a path
|
||||||
|
- `bash <(curl -s -S -L https://git.io/gam-install) -l -d <Path>`
|
||||||
|
|
||||||
|
By default, a folder, `gam7`, is created in the default or specified path and the files are downloaded into that folder.
|
||||||
|
Add the `-s` option to the end of the above commands to suppress creating the `gam7` folder; the files are downloaded directly into the default or specified path.
|
||||||
|
|
||||||
|
* Executable Archive, Manual, Linux/Google Cloud Shell
|
||||||
|
- `gam-7.wx.yz-linux-x86_64-glibc2.35.tar.xz`
|
||||||
|
- `gam-7.wx.yz-linux-x86_64-glibc2.31.tar.xz`
|
||||||
|
- `gam-7.wx.yz-linux-x86_64-legacy.tar.xz`
|
||||||
|
- Download the archive, extract the contents into some directory.
|
||||||
|
- Start a terminal session.
|
||||||
|
|
||||||
|
* Executable Archive, Manual, Raspberry Pi/ChromeOS ARM devices
|
||||||
|
- `gam-7.wx.yz-linux-aarch-glibc2.31.tar.xz`
|
||||||
|
- `gam-7.wx.yz-linux-aarch-legacy.tar.xz`
|
||||||
|
- Download the archive, extract the contents into some directory.
|
||||||
|
- Start a terminal session.
|
||||||
|
|
||||||
|
* Executable Archive, Manual, Mac OS versions Big Sur, Monterey, Ventura - M1/M2
|
||||||
|
- `gam-7.wx.yz-macos-aarch.tar.xz`
|
||||||
|
- Download the archive, extract the contents into some directory.
|
||||||
|
- Start a terminal session.
|
||||||
|
|
||||||
|
* Executable Archive, Manual, Mac OS, versions Big Sur, Monterey, Ventura - Intel
|
||||||
|
- `gam-7.wx.yz-macos-x86_64.tar.xz`
|
||||||
|
- Download the archive, extract the contents into some directory.
|
||||||
|
- Start a terminal session.
|
||||||
|
|
||||||
|
* Executable Archive, Manual, Windows 64 bit
|
||||||
|
- `gam-7.wx.yz-windows-x86_64.zip`
|
||||||
|
- Download the archive, extract the contents into some directory.
|
||||||
|
- Start a Command Prompt/PowerShell session.
|
||||||
|
|
||||||
|
* Executable Installer, Manual, Windows 64 bit
|
||||||
|
- `gam-7.wx.yz-windows-x86_64.msi`
|
||||||
|
- Download the installer and run it.
|
||||||
|
- Start a Command Prompt/PowerShell session.
|
||||||
|
|
||||||
|
* Source, all platforms
|
||||||
|
- `Source code(zip)`
|
||||||
|
- `Source code(tar.gz)`
|
||||||
|
- Download the archive, extract the contents into some directory.
|
||||||
|
- Start a terminal/Command Prompt/PowerShell session.
|
||||||
@@ -4,7 +4,7 @@ Many of the changes are internal to Gam and have no visible effect. Google has m
|
|||||||
A variable, `drive_v3_native_names` (default value is True), has been added to `gam.cfg` to control the field names on output: when True, the v3 native field names are used; when False, the v3 native field names are mapped to the v2 field names.
|
A variable, `drive_v3_native_names` (default value is True), has been added to `gam.cfg` to control the field names on output: when True, the v3 native field names are used; when False, the v3 native field names are mapped to the v2 field names.
|
||||||
|
|
||||||
If you have scripts that process the output from these print commands, you may have to make modifications to your scripts.
|
If you have scripts that process the output from these print commands, you may have to make modifications to your scripts.
|
||||||
Run your print/show commands with a version of Standard Gam and save the output.
|
Run your print/show commands with a version of Legacy Gam and save the output.
|
||||||
With drive_v3_native_names = False, run your print/show commands with this version of Gam and compare the output to that saved in the previous run;
|
With drive_v3_native_names = False, run your print/show commands with this version of Gam and compare the output to that saved in the previous run;
|
||||||
modify your scripts that process the output as appropriate.
|
modify your scripts that process the output as appropriate.
|
||||||
|
|
||||||
|
|||||||
@@ -10,6 +10,22 @@ Add the `-s` option to the end of the above commands to suppress creating the `g
|
|||||||
|
|
||||||
See [Downloads-Installs](https://github.com/taers232c/GAMADV-XTD3/wiki/Downloads-Installs) for Windows or other options, including manual installation
|
See [Downloads-Installs](https://github.com/taers232c/GAMADV-XTD3/wiki/Downloads-Installs) for Windows or other options, including manual installation
|
||||||
|
|
||||||
|
### 7.00.04
|
||||||
|
|
||||||
|
Improved performance of `gam report users orgunit <OrgUnitPath>` when `showorgunit` is not specified.
|
||||||
|
|
||||||
|
Added option `birthday <Date>` to `gam <UserTypeEntity> create event <UserCalendarEntity>` that adds
|
||||||
|
an annual recurring event to the calendar.
|
||||||
|
|
||||||
|
Added `birthday` to `<EventType>` for use in various calendar event commands.
|
||||||
|
|
||||||
|
### 7.00.03
|
||||||
|
|
||||||
|
Updated `gam delete ou` and `gam print admins` to handle the following error:
|
||||||
|
```
|
||||||
|
ERROR: 503: serviceNotAvailable - The service is currently unavailable.
|
||||||
|
```
|
||||||
|
|
||||||
### 7.00.02
|
### 7.00.02
|
||||||
|
|
||||||
Added option `showlastmodification` to `gam <UserTypeEntity> print|show filecounts` that adds
|
Added option `showlastmodification` to `gam <UserTypeEntity> print|show filecounts` that adds
|
||||||
|
|||||||
@@ -25,6 +25,24 @@
|
|||||||
|
|
||||||
## Definitions
|
## Definitions
|
||||||
See [Collections of Items](Collections-of-Items)
|
See [Collections of Items](Collections-of-Items)
|
||||||
|
|
||||||
|
* [Command data from Google Docs/Sheets/Storage](Command-Data-From-Google-Docs-Sheets-Storage)
|
||||||
|
```
|
||||||
|
<StorageBucketName> ::= <String>
|
||||||
|
<StorageObjectName> ::= <String>
|
||||||
|
<StorageBucketObjectName> ::=
|
||||||
|
https://storage.cloud.google.com/<StorageBucketName>/<StorageObjectName>|
|
||||||
|
https://storage.googleapis.com/<StorageBucketName>/<StorageObjectName>|
|
||||||
|
gs://<StorageBucketName>/<StorageObjectName>|
|
||||||
|
<StorageBucketName>/<StorageObjectName>
|
||||||
|
|
||||||
|
<UserGoogleDoc> ::=
|
||||||
|
<EmailAddress> <DriveFileIDEntity>|<DriveFileNameEntity>|(<SharedDriveEntity> <SharedDriveFileNameEntity>)
|
||||||
|
|
||||||
|
<SheetEntity> ::= <String>|id:<Number>
|
||||||
|
<UserGoogleSheet> ::=
|
||||||
|
<EmailAddress> <DriveFileIDEntity>|<DriveFileNameEntity>|(<SharedDriveEntity> <SharedDriveFileNameEntity>) <SheetEntity>
|
||||||
|
```
|
||||||
```
|
```
|
||||||
<DeliverySetting> ::=
|
<DeliverySetting> ::=
|
||||||
allmail|
|
allmail|
|
||||||
|
|||||||
14
docs/Home.md
14
docs/Home.md
@@ -1,8 +1,7 @@
|
|||||||
- [Introduction](#introduction)
|
- [Introduction](#introduction)
|
||||||
- [Requirements](#requirements)
|
- [Requirements](#requirements)
|
||||||
- [Installation - First time GAM installation](#installation---first-time-gam-installation)
|
- [Installation - First time GAM installation](#installation---first-time-gam-installation)
|
||||||
- [Installation - Upgrading from a GAM version other than a prior version of GAMADV-X or GAMADV-XTD or GAMADV-XTD3](#installation---upgrading-from-a-gam-version-other-than-a-prior-version-of-gamadv-x-or-gamadv-xtd-or-gamadv-xtd3)
|
- [Installation - Upgrading from Legacy GAM](#installation---upgrading-from-legacy-gam)
|
||||||
- [Installation - Upgrading from a prior version of GAMADV-X or GAMADV-XTD or GAMADV-XTD3](#installation---upgrading-from-a-prior-version-of-gamadv-x-or-gamadv-xtd-or-gamadv-xtd3)
|
|
||||||
|
|
||||||
# Introduction
|
# Introduction
|
||||||
GAMADV-XTD3 is a free, open source command line tool for Google Workspace Administrators to manage domain and user settings quickly and easily.
|
GAMADV-XTD3 is a free, open source command line tool for Google Workspace Administrators to manage domain and user settings quickly and easily.
|
||||||
@@ -43,20 +42,13 @@ and all necessary authentications.
|
|||||||
* Configuration: [GAM Configuration](gam.cfg)
|
* Configuration: [GAM Configuration](gam.cfg)
|
||||||
* Install: [How to Install Advanced GAM](How-to-Install-Advanced-GAM)
|
* Install: [How to Install Advanced GAM](How-to-Install-Advanced-GAM)
|
||||||
|
|
||||||
# Installation - Upgrading from a GAM version other than a prior version of GAMADV-X or GAMADV-XTD or GAMADV-XTD3
|
# Installation - Upgrading from Legacy GAM
|
||||||
Use these steps if you have used any version of GAM in your domain. They will update your GAM project
|
Use these steps if you have used any version of GAM in your domain. They will update your GAM project
|
||||||
and all necessary authentications.
|
and all necessary authentications.
|
||||||
|
|
||||||
* Download: [Downloads-Installs](Downloads-Installs)
|
* Download: [Downloads-Installs](Downloads-Installs)
|
||||||
* Configuration: [GAM Configuration](gam.cfg)
|
* Configuration: [GAM Configuration](gam.cfg)
|
||||||
* Upgrade: [How to Upgrade from Standard GAM](How-to-Upgrade-from-Standard-GAM)
|
* Upgrade: [How to Upgrade from Legacy GAM](How-to-Upgrade-from-Legacy-GAM)
|
||||||
|
|
||||||
# Installation - Upgrading from a prior version of GAMADV-X or GAMADV-XTD or GAMADV-XTD3
|
|
||||||
Use these steps if you already use GAMADV-X or GAMADV-XTD or GAMADV-XTD3. The updates may tell you to update your GAM project
|
|
||||||
or authentications because new features have been included.
|
|
||||||
|
|
||||||
* Updates: [GAM Updates]
|
|
||||||
* Download: [Downloads-Installs](Downloads-Installs)
|
|
||||||
|
|
||||||
You can install multiple versions of GAM and GAMADV-XTD3 in different parallel directories.
|
You can install multiple versions of GAM and GAMADV-XTD3 in different parallel directories.
|
||||||
|
|
||||||
|
|||||||
120
docs/How-to-Update-Advanced-GAM-to-GAM7.md
Normal file
120
docs/How-to-Update-Advanced-GAM-to-GAM7.md
Normal file
@@ -0,0 +1,120 @@
|
|||||||
|
# Installation - Update Advanced GAM to GAM7
|
||||||
|
|
||||||
|
- [Downloads-Installs-GAM7](Downloads-Installs-GAM7)
|
||||||
|
- [Linux and MacOS and Google Cloud Shell](#linux-and-mac-os-and-google-cloud-shell)
|
||||||
|
- [Windows](#windows)
|
||||||
|
|
||||||
|
## Linux and MacOS and Google Cloud Shell
|
||||||
|
|
||||||
|
This example assumes that GAMADV-XTD3 was installed in /Users/admin/bin/gamadv-xtd3.
|
||||||
|
If GAMADV-XTD3 was installed in another directory, substitute that value in the directions.
|
||||||
|
|
||||||
|
Rename install directory.
|
||||||
|
```
|
||||||
|
mv /Users/admin/bin/gamadv-xtd3 /Users/admin/bin/gam7
|
||||||
|
```
|
||||||
|
|
||||||
|
See: [Downloads-Installs-GAM7](Downloads-Installs-GAM7)
|
||||||
|
|
||||||
|
You can download and install the current GAM7 release from the [GitHub Releases](https://github.com/GAM-team/GAM/releases/latest) page. Choose one of the following:
|
||||||
|
|
||||||
|
* Executable Archive, Automatic, Linux/Mac OS/Google Cloud Shell/Raspberry Pi/ChromeOS
|
||||||
|
- Start a terminal session and execute one of the following commands:
|
||||||
|
- Update to latest version, do not create project or authorizations, default path `$HOME/bin`
|
||||||
|
- `bash <(curl -s -S -L https://git.io/gam-install) -l`
|
||||||
|
- Update to latest version, do not create project or authorizations, specify a path
|
||||||
|
- `bash <(curl -s -S -L https://git.io/gam-install) -l -d <Path>`
|
||||||
|
|
||||||
|
In these examples, the user home folder is shown as /Users/admin; adjust according to your
|
||||||
|
specific situation; e.g., /home/administrator.
|
||||||
|
|
||||||
|
### Update gam alias
|
||||||
|
You should set an alias to point to /Users/admin/bin/gam/gam so you can operate from the /Users/admin/GAMWork directory.
|
||||||
|
Aliases aren't available in scripts, so you may want to set a symlink instead, see below.
|
||||||
|
|
||||||
|
Change the following line:
|
||||||
|
```
|
||||||
|
alias gam="/Users/admin/bin/gamadv-xtd3/gam"
|
||||||
|
```
|
||||||
|
to
|
||||||
|
```
|
||||||
|
alias gam="/Users/admin/bin/gam7/gam"
|
||||||
|
```
|
||||||
|
in one of these files based on your shell:
|
||||||
|
```
|
||||||
|
~/.bash_aliases
|
||||||
|
~/.bash_profile
|
||||||
|
~/.bashrc
|
||||||
|
~/.zshrc
|
||||||
|
~/.profile
|
||||||
|
```
|
||||||
|
|
||||||
|
Issue the following command replacing `<Filename>` with the name of the file you edited:
|
||||||
|
```
|
||||||
|
source <Filename>
|
||||||
|
```
|
||||||
|
|
||||||
|
### Set a symlink if desired
|
||||||
|
Set a symlink in `/usr/local/bin` (or some other location on $PATH) to point to GAM.
|
||||||
|
```
|
||||||
|
ln -s "/Users/admin/bin/gam7/gam" /usr/local/bin/gam
|
||||||
|
```
|
||||||
|
|
||||||
|
### Test
|
||||||
|
```
|
||||||
|
gam version
|
||||||
|
```
|
||||||
|
|
||||||
|
## Windows
|
||||||
|
|
||||||
|
You can download and install the current GAM7 release from the [GitHub Releases](https://github.com/GAM-team/GAM/releases/latest) page.
|
||||||
|
|
||||||
|
This example assumes that GAMADV-XTD3 was installed in C:\GAMADV-XTD3.
|
||||||
|
If GAMADV-XTD3 was installed in another directory, substitute that value in the directions.
|
||||||
|
|
||||||
|
These steps assume Command Prompt, adjust if you're using PowerShell.
|
||||||
|
|
||||||
|
Rename install directory.
|
||||||
|
```
|
||||||
|
ren C:\GAMADV-STD3 C:\GAM7
|
||||||
|
```
|
||||||
|
|
||||||
|
See: [Downloads-Installs-GAM7](Downloads-Installs-GAM7)
|
||||||
|
|
||||||
|
* Executable Archive, Manual, Windows 64 bit
|
||||||
|
- `gam-7.wx.yz-windows-x86_64.zip`
|
||||||
|
- Download the archive, extract the contents into C:\GAM7.
|
||||||
|
- Start a Command Prompt/PowerShell session.
|
||||||
|
|
||||||
|
* Executable Installer, Manual, Windows 64 bit
|
||||||
|
- `gam-7.wx.yz-windows-x86_64.msi`
|
||||||
|
- Download the installer and run it.
|
||||||
|
- Start a Command Prompt/PowerShell session.
|
||||||
|
|
||||||
|
### Update system path
|
||||||
|
You should set the system path to point to C:\GAM7 so you can operate from the C:\GAMWork directory.
|
||||||
|
```
|
||||||
|
Start Control Panel
|
||||||
|
Click System
|
||||||
|
Click Advanced system settings
|
||||||
|
Click Environment Variables...
|
||||||
|
Click Path under System variables
|
||||||
|
Click Edit...
|
||||||
|
If you have an existing entry referencing GAMADV-XTD3:
|
||||||
|
Click that entry
|
||||||
|
Click Delete
|
||||||
|
If C:\GAM7 is already on the Path, skip the next three steps
|
||||||
|
Click New
|
||||||
|
Enter C:\GAM7
|
||||||
|
Click OK
|
||||||
|
Click OK
|
||||||
|
Click OK
|
||||||
|
Exit Control Panel
|
||||||
|
```
|
||||||
|
|
||||||
|
At this point, you should restart Command Prompt so that it has the updated path and environment variables.
|
||||||
|
|
||||||
|
### Test
|
||||||
|
```
|
||||||
|
gam version
|
||||||
|
```
|
||||||
1262
docs/How-to-Upgrade-from-Legacy-GAM.md
Normal file
1262
docs/How-to-Upgrade-from-Legacy-GAM.md
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,7 +1,7 @@
|
|||||||
# Scripts
|
# Scripts
|
||||||
|
|
||||||
These scripts can be used to enhance GAM's capabilities; all are supported with Advanced GAM,
|
These scripts can be used to enhance GAM's capabilities; all are supported with Advanced GAM,
|
||||||
many are supported with Standard GAM. They require that Python 3 be installed on you computer.
|
many are supported with Legacy GAM. They require that Python 3 be installed on you computer.
|
||||||
|
|
||||||
* https://github.com/taers232c/GAM-Scripts3
|
* https://github.com/taers232c/GAM-Scripts3
|
||||||
* https://www.python.org/
|
* https://www.python.org/
|
||||||
|
|||||||
@@ -26,6 +26,7 @@
|
|||||||
* https://developers.google.com/calendar/v3/reference/events
|
* https://developers.google.com/calendar/v3/reference/events
|
||||||
* https://developers.google.com/calendar/v3/reference/events/import
|
* https://developers.google.com/calendar/v3/reference/events/import
|
||||||
* https://developers.google.com/calendar/api/guides/working-hours-and-location
|
* https://developers.google.com/calendar/api/guides/working-hours-and-location
|
||||||
|
* https://developers.google.com/calendar/api/guides/event-types#birthday
|
||||||
|
|
||||||
## Definitions
|
## Definitions
|
||||||
* [`<UserTypeEntity>`](Collections-of-Users)
|
* [`<UserTypeEntity>`](Collections-of-Users)
|
||||||
@@ -241,6 +242,7 @@
|
|||||||
```
|
```
|
||||||
```
|
```
|
||||||
<EventType> ::=
|
<EventType> ::=
|
||||||
|
birthday|
|
||||||
default|
|
default|
|
||||||
focustime|
|
focustime|
|
||||||
fromgmail|
|
fromgmail|
|
||||||
@@ -306,6 +308,7 @@
|
|||||||
(attendee <EmailAddress>)|
|
(attendee <EmailAddress>)|
|
||||||
(attendeestatus [<AttendeeAttendance>] [<AttendeeStatus>] <EmailAddress>)|
|
(attendeestatus [<AttendeeAttendance>] [<AttendeeStatus>] <EmailAddress>)|
|
||||||
available|
|
available|
|
||||||
|
(birthday <Date>)|
|
||||||
(color <EventColorName>)|
|
(color <EventColorName>)|
|
||||||
(colorindex|colorid <EventColorIndex>)|
|
(colorindex|colorid <EventColorIndex>)|
|
||||||
(description <String>)|
|
(description <String>)|
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
# Users - Chat
|
# Users - Chat
|
||||||
- [API documentation](#api-documentation)
|
- [API documentation](#api-documentation)
|
||||||
- [Introduction](#introduction)
|
- [Introduction](#introduction)
|
||||||
- [Developer Preview Admin Access](#developer-preview-admin-access)
|
|
||||||
- [Set up a Chat Bot](#set-up-a-chat-bot)
|
- [Set up a Chat Bot](#set-up-a-chat-bot)
|
||||||
- [Definitions](#definitions)
|
- [Definitions](#definitions)
|
||||||
- [Manage Chat Spaces](#manage-chat-spaces)
|
- [Manage Chat Spaces](#manage-chat-spaces)
|
||||||
@@ -30,36 +29,11 @@ To use these commands you must update your service account authorization.
|
|||||||
gam user user@domain.com update serviceaccount
|
gam user user@domain.com update serviceaccount
|
||||||
|
|
||||||
[*] 4) Chat API - Memberships (supports readonly)
|
[*] 4) Chat API - Memberships (supports readonly)
|
||||||
|
[*] 5) Chat API - Memberships Admin (supports readonly)
|
||||||
[*] 6) Chat API - Messages (supports readonly)
|
[*] 6) Chat API - Messages (supports readonly)
|
||||||
[*] 7) Chat API - Spaces (supports readonly)
|
[*] 7) Chat API - Spaces (supports readonly)
|
||||||
[*] 9) Chat API - Spaces Delete
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
## Developer Preview Admin Access
|
|
||||||
The Chat API Developer Preview allows an admin to perform certain actions
|
|
||||||
on all Chat Spaces. These commands were added in version 6.77.00.
|
|
||||||
|
|
||||||
You must be enrolled in the Developer Preview program for the CHAT API to use these commands.
|
|
||||||
|
|
||||||
```
|
|
||||||
gam <UserItem> delete chatspace asadmin
|
|
||||||
gam <UserItem> update chatspace asadmin
|
|
||||||
gam <UserItem> info chatspace asadmin
|
|
||||||
gam <UserItem> print|show chatspaces asadmin
|
|
||||||
gam <UserItem> create chatmember asadmin
|
|
||||||
gam <UserItem> delete|remove chatmember asadmin
|
|
||||||
gam <UserItem> update|modify chatmember asadmin
|
|
||||||
gam <UserItem> sync chatmembers asadmin
|
|
||||||
gam <UserItem> info chatmember asadmin
|
|
||||||
gam <UserItem> print|show chatmembers|asadmin
|
|
||||||
```
|
|
||||||
To use these commands you must update your service account authorization.
|
|
||||||
```
|
|
||||||
gam user user@domain.com update serviceaccount
|
|
||||||
|
|
||||||
[*] 5) Chat API - Memberships Admin (supports readonly)
|
|
||||||
[*] 8) Chat API - Spaces Admin (supports readonly)
|
[*] 8) Chat API - Spaces Admin (supports readonly)
|
||||||
|
[*] 9) Chat API - Spaces Delete
|
||||||
[*] 10) Chat API - Spaces Delete Admin
|
[*] 10) Chat API - Spaces Delete Admin
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -71,15 +45,6 @@ Added `use_chat_admin_access` Boolean variable to `gam.cfg`.
|
|||||||
* Default: False
|
* Default: False
|
||||||
```
|
```
|
||||||
|
|
||||||
If your account is not enrolled in the Chat API Developer Preview, you will see errors like this:
|
|
||||||
```
|
|
||||||
$ gam user admin@domain.com show chatspaces asadmin
|
|
||||||
Getting all Chat Spaces that match query (customer = "customers/my_customer" AND spaceType = "SPACE") for admin@domain.com(asadmin)
|
|
||||||
Chat Admin: admin@domain.com(asadmin), Show Failed: Method not found.
|
|
||||||
```
|
|
||||||
|
|
||||||
To enroll in the Developer Preview program, see: https://developers.google.com/workspace/preview
|
|
||||||
|
|
||||||
Google requires that you have a Chat Bot configured in order to use the Chat API; set up a Chat Bot as described in the next section.
|
Google requires that you have a Chat Bot configured in order to use the Chat API; set up a Chat Bot as described in the next section.
|
||||||
|
|
||||||
## Set up a Chat Bot
|
## Set up a Chat Bot
|
||||||
@@ -398,7 +363,6 @@ When using the `formatjson` option, double quotes are used extensively in the da
|
|||||||
The `quotechar <Character>` option allows you to choose an alternate quote character, single quote for instance, that makes for readable/processable output.
|
The `quotechar <Character>` option allows you to choose an alternate quote character, single quote for instance, that makes for readable/processable output.
|
||||||
`quotechar` defaults to `gam.cfg/csv_output_quote_char`. When uploading CSV files to Google, double quote `"` should be used.
|
`quotechar` defaults to `gam.cfg/csv_output_quote_char`. When uploading CSV files to Google, double quote `"` should be used.
|
||||||
|
|
||||||
|
|
||||||
## Manage Chat Members
|
## Manage Chat Members
|
||||||
### Add members to a user's chat space
|
### Add members to a user's chat space
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -208,7 +208,7 @@ If `noduplicate` is specfied, GAM will issue a warning and not perform the creat
|
|||||||
exists in the parent folder.
|
exists in the parent folder.
|
||||||
|
|
||||||
By default, when files are uploaded from local content, they are created with `binary` format, i.e., the data is uploaded
|
By default, when files are uploaded from local content, they are created with `binary` format, i.e., the data is uploaded
|
||||||
without any conversion. Standard GAM had an option `convert` that was passed to the Drive API v2 that it used.
|
without any conversion. Legacy GAM had an option `convert` that was passed to the Drive API v2 that it used.
|
||||||
* convert - Whether to convert this file to the corresponding Docs Editors format
|
* convert - Whether to convert this file to the corresponding Docs Editors format
|
||||||
|
|
||||||
Advanced GAM uses Drive API v3 that doesn't support the `convert` option; it uses the `mimetype` argument to cause conversions.
|
Advanced GAM uses Drive API v3 that doesn't support the `convert` option; it uses the `mimetype` argument to cause conversions.
|
||||||
|
|||||||
@@ -80,6 +80,22 @@ queries "`"orgUnitPath=\'/Students/Lower\ School/2027\'`",`"orgUnitPath=\'/Stude
|
|||||||
* [`<UserTypeEntity>`](Collections-of-Users)
|
* [`<UserTypeEntity>`](Collections-of-Users)
|
||||||
* [Command data from Google Docs/Sheets/Storage](Command-Data-From-Google-Docs-Sheets-Storage)
|
* [Command data from Google Docs/Sheets/Storage](Command-Data-From-Google-Docs-Sheets-Storage)
|
||||||
```
|
```
|
||||||
|
<StorageBucketName> ::= <String>
|
||||||
|
<StorageObjectName> ::= <String>
|
||||||
|
<StorageBucketObjectName> ::=
|
||||||
|
https://storage.cloud.google.com/<StorageBucketName>/<StorageObjectName>|
|
||||||
|
https://storage.googleapis.com/<StorageBucketName>/<StorageObjectName>|
|
||||||
|
gs://<StorageBucketName>/<StorageObjectName>|
|
||||||
|
<StorageBucketName>/<StorageObjectName>
|
||||||
|
|
||||||
|
<UserGoogleDoc> ::=
|
||||||
|
<EmailAddress> <DriveFileIDEntity>|<DriveFileNameEntity>|(<SharedDriveEntity> <SharedDriveFileNameEntity>)
|
||||||
|
|
||||||
|
<SheetEntity> ::= <String>|id:<Number>
|
||||||
|
<UserGoogleSheet> ::=
|
||||||
|
<EmailAddress> <DriveFileIDEntity>|<DriveFileNameEntity>|(<SharedDriveEntity> <SharedDriveFileNameEntity>) <SheetEntity>
|
||||||
|
```
|
||||||
|
```
|
||||||
<DeliverySetting> ::=
|
<DeliverySetting> ::=
|
||||||
allmail|
|
allmail|
|
||||||
abridged|daily|
|
abridged|daily|
|
||||||
@@ -736,7 +752,7 @@ When updating a user's password, you can send a message with the new password to
|
|||||||
|
|
||||||
In versions of GAMADV-XTD3 prior to 5.07.00, if you do `gam update users <UserTypeEntity>` or `gam <UserTypeEntity> update users` and
|
In versions of GAMADV-XTD3 prior to 5.07.00, if you do `gam update users <UserTypeEntity>` or `gam <UserTypeEntity> update users` and
|
||||||
specify `password random`, all of the users in `<UserTypeEntity>` are assigned the same random password;
|
specify `password random`, all of the users in `<UserTypeEntity>` are assigned the same random password;
|
||||||
this is the same behavior as in Standard GAM. If you would like each of the users in `<UserTypeEntity>` to be
|
this is the same behavior as in Legacy GAM. If you would like each of the users in `<UserTypeEntity>` to be
|
||||||
assigned a unique random password, specify `password uniquerandom`.
|
assigned a unique random password, specify `password uniquerandom`.
|
||||||
|
|
||||||
If you update a user with `password random|uniquerandom`, the `lograndompassword <FileName>` option causes GAM
|
If you update a user with `password random|uniquerandom`, the `lograndompassword <FileName>` option causes GAM
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
Print the current version of Gam with details
|
Print the current version of Gam with details
|
||||||
```
|
```
|
||||||
gam version
|
gam version
|
||||||
GAMADV-XTD3 7.00.02 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource
|
GAMADV-XTD3 7.00.04 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource
|
||||||
Ross Scroggs <ross.scroggs@gmail.com>
|
Ross Scroggs <ross.scroggs@gmail.com>
|
||||||
Python 3.12.5 64-bit final
|
Python 3.12.5 64-bit final
|
||||||
MacOS Sonoma 14.5 x86_64
|
MacOS Sonoma 14.5 x86_64
|
||||||
@@ -15,7 +15,7 @@ Time: 2023-06-02T21:10:00-07: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
|
||||||
GAMADV-XTD3 7.00.02 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource
|
GAMADV-XTD3 7.00.04 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource
|
||||||
Ross Scroggs <ross.scroggs@gmail.com>
|
Ross Scroggs <ross.scroggs@gmail.com>
|
||||||
Python 3.12.5 64-bit final
|
Python 3.12.5 64-bit final
|
||||||
MacOS Sonoma 14.5 x86_64
|
MacOS Sonoma 14.5 x86_64
|
||||||
@@ -27,7 +27,7 @@ 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
|
||||||
GAMADV-XTD3 7.00.02 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource
|
GAMADV-XTD3 7.00.04 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource
|
||||||
Ross Scroggs <ross.scroggs@gmail.com>
|
Ross Scroggs <ross.scroggs@gmail.com>
|
||||||
Python 3.12.5 64-bit final
|
Python 3.12.5 64-bit final
|
||||||
MacOS Sonoma 14.5 x86_64
|
MacOS Sonoma 14.5 x86_64
|
||||||
@@ -64,7 +64,7 @@ MacOS High Sierra 10.13.6 x86_64
|
|||||||
Path: /Users/Admin/bin/gamadv-xtd3
|
Path: /Users/Admin/bin/gamadv-xtd3
|
||||||
Version Check:
|
Version Check:
|
||||||
Current: 5.35.08
|
Current: 5.35.08
|
||||||
Latest: 7.00.02
|
Latest: 7.00.04
|
||||||
echo $?
|
echo $?
|
||||||
1
|
1
|
||||||
```
|
```
|
||||||
@@ -72,7 +72,7 @@ echo $?
|
|||||||
Print the current version number without details
|
Print the current version number without details
|
||||||
```
|
```
|
||||||
gam version simple
|
gam version simple
|
||||||
7.00.02
|
7.00.04
|
||||||
```
|
```
|
||||||
In Linux/MacOS you can do:
|
In Linux/MacOS you can do:
|
||||||
```
|
```
|
||||||
@@ -82,7 +82,7 @@ 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.00.02 - https://github.com/taers232c/GAMADV-XTD3
|
GAM 7.00.04 - https://github.com/taers232c/GAMADV-XTD3
|
||||||
Ross Scroggs <ross.scroggs@gmail.com>
|
Ross Scroggs <ross.scroggs@gmail.com>
|
||||||
Python 3.12.5 64-bit final
|
Python 3.12.5 64-bit final
|
||||||
MacOS Sonoma 14.5 x86_64
|
MacOS Sonoma 14.5 x86_64
|
||||||
|
|||||||
@@ -3,9 +3,9 @@ Update History
|
|||||||
|
|
||||||
Installation
|
Installation
|
||||||
* [How to Install Advanced GAM](How-to-Install-Advanced-GAM)
|
* [How to Install Advanced GAM](How-to-Install-Advanced-GAM)
|
||||||
|
* [How to Update Advanced GAM to GAM7](How-to-Update-Advanced-GAM-to-GAM7)
|
||||||
* [How to Update Advanced GAM](How-to-Update-Advanced-GAM)
|
* [How to Update Advanced GAM](How-to-Update-Advanced-GAM)
|
||||||
* [How to Upgrade from Standard GAM](How-to-Upgrade-from-Standard-GAM)
|
* [How to Upgrade from Legacy GAM](How-to-Upgrade-from-Legacy-GAM)
|
||||||
* [How to Upgrade from GAMADV-X or GAMADV-XTD](How-to-Upgrade-from-GAMADV-X-or-GAMADV-XTD)
|
|
||||||
* [Install GAM as Python Library](Install-GAM-as-Python-Library)
|
* [Install GAM as Python Library](Install-GAM-as-Python-Library)
|
||||||
* [GAMADV-XTD3 on Chrome OS Devices](GAMADV-XTD3-on-Chrome-OS-Devices)
|
* [GAMADV-XTD3 on Chrome OS Devices](GAMADV-XTD3-on-Chrome-OS-Devices)
|
||||||
* [GAMADV-XTD3 on Android Devices](GAMADV-XTD3-on-Android-Devices)
|
* [GAMADV-XTD3 on Android Devices](GAMADV-XTD3-on-Android-Devices)
|
||||||
|
|||||||
@@ -944,11 +944,11 @@ domain = goo.com
|
|||||||
customer_id = my_customer
|
customer_id = my_customer
|
||||||
config_dir = goo
|
config_dir = goo
|
||||||
```
|
```
|
||||||
### Existing clients that have been accessed with Standard GAM.
|
### Existing clients that have been accessed with Legacy GAM.
|
||||||
You have two clients: foo and goo.
|
You have two clients: foo and goo.
|
||||||
Make sub-directories foo and goo in the same folder/directory as gam.cfg.
|
Make sub-directories foo and goo in the same folder/directory as gam.cfg.
|
||||||
For each client, copy the client_secrets.json and oauth2service.json files from their Standard GAM location
|
For each client, copy the client_secrets.json and oauth2service.json files from their Legacy GAM location
|
||||||
to the appropriate sub-directory. If the Standard Gam files do not have these names,
|
to the appropriate sub-directory. If the Legacy Gam files do not have these names,
|
||||||
rename them after copying them to the sub-directory.
|
rename them after copying them to the sub-directory.
|
||||||
|
|
||||||
Perform the following commands for each client (replace xxx with foo and goo).
|
Perform the following commands for each client (replace xxx with foo and goo).
|
||||||
|
|||||||
@@ -1594,6 +1594,7 @@ gam calendar <CalendarEntity> printacl [todrive <ToDriveAttribute>*]
|
|||||||
<AttendeeStatus> ::= accepted|declined|needsaction|tentative
|
<AttendeeStatus> ::= accepted|declined|needsaction|tentative
|
||||||
|
|
||||||
<EventType> ::=
|
<EventType> ::=
|
||||||
|
birthday|
|
||||||
default|
|
default|
|
||||||
focustime|
|
focustime|
|
||||||
fromgmail|
|
fromgmail|
|
||||||
@@ -5847,6 +5848,7 @@ gam <UserTypeEntity> transfer calendars|seccals <UserItem> [<UserCalendarEntity>
|
|||||||
<AttendeeStatus> ::= accepted|declined|needsaction|tentative
|
<AttendeeStatus> ::= accepted|declined|needsaction|tentative
|
||||||
|
|
||||||
<EventType> ::=
|
<EventType> ::=
|
||||||
|
birthday|
|
||||||
default|
|
default|
|
||||||
focustime|
|
focustime|
|
||||||
outofoffice|
|
outofoffice|
|
||||||
@@ -5896,13 +5898,15 @@ gam <UserTypeEntity> transfer calendars|seccals <UserItem> [<UserCalendarEntity>
|
|||||||
<AttendeeStatus> ::= accepted|declined|needsaction|tentative
|
<AttendeeStatus> ::= accepted|declined|needsaction|tentative
|
||||||
|
|
||||||
<EventAttribute> ::=
|
<EventAttribute> ::=
|
||||||
|
(allday <Date>)|
|
||||||
(anyonecanaddself [<Boolean>])|
|
(anyonecanaddself [<Boolean>])|
|
||||||
(attachment <String> <URL>)|
|
(attachment <String> <URL>)|
|
||||||
(attendee <EmailAddress>)|
|
(attendee <EmailAddress>)|
|
||||||
(attendeestatus [<AttendeeAttendance>] [<AttendeeStatus>] <EmailAddress>)|
|
(attendeestatus [<AttendeeAttendance>] [<AttendeeStatus>] <EmailAddress>)|
|
||||||
available|
|
available|
|
||||||
|
(birthday <Date>)|
|
||||||
(color <EventColorName>)|
|
(color <EventColorName>)|
|
||||||
(colorindex|colorid <EventColorIndex>))|
|
(colorindex|colorid <EventColorIndex>)|
|
||||||
(description <String>)|
|
(description <String>)|
|
||||||
(end|endtime (allday <Date>)|<Time>)|
|
(end|endtime (allday <Date>)|<Time>)|
|
||||||
(guestscaninviteothers <Boolean>)|
|
(guestscaninviteothers <Boolean>)|
|
||||||
@@ -5912,14 +5916,16 @@ gam <UserTypeEntity> transfer calendars|seccals <UserItem> [<UserCalendarEntity>
|
|||||||
guestscantseeotherguests|
|
guestscantseeotherguests|
|
||||||
hangoutsmeet|
|
hangoutsmeet|
|
||||||
<JSONData>|
|
<JSONData>|
|
||||||
(jsonattendees [charset <Charset>] <String>)|(jsonattendees file <FileName> [charset <Charset>])|
|
(jsonattendees [charset <Charset>] <String>)|
|
||||||
|
(jsonattendees file <FileName> [charset <Charset>])|
|
||||||
(location <String>)|
|
(location <String>)|
|
||||||
(noreminders|(reminder email|popup <Number>))|
|
(noreminders|(reminder email|popup <Number>))|
|
||||||
(optionalattendee <EmailAddress>)|
|
(optionalattendee <EmailAddress>)|
|
||||||
(originalstart|originalstarttime (allday <Date>)|<Time>)|
|
(originalstart|originalstarttime (allday <Date>)|<Time>)|
|
||||||
(privateproperty <PropertyKey> <PropertyValue>)|
|
(privateproperty <PropertyKey> <PropertyValue>)|
|
||||||
|
(range <Date> <Date>)|
|
||||||
(recurrence <RRULE, EXRULE, RDATE and EXDATE line>)|
|
(recurrence <RRULE, EXRULE, RDATE and EXDATE line>)|
|
||||||
(reminder <Number> email|popup))|
|
(reminder <Number> email|popup)|
|
||||||
(selectattendees [<AttendeeAttendance>] [<AttendeeStatus>] <UserTypeEntity>)|
|
(selectattendees [<AttendeeAttendance>] [<AttendeeStatus>] <UserTypeEntity>)|
|
||||||
(sequence <Integer>)|
|
(sequence <Integer>)|
|
||||||
(sharedproperty <PropertyKey> <PropertyValue>)|
|
(sharedproperty <PropertyKey> <PropertyValue>)|
|
||||||
@@ -5928,6 +5934,7 @@ gam <UserTypeEntity> transfer calendars|seccals <UserItem> [<UserCalendarEntity>
|
|||||||
(status confirmed|tentative|cancelled)|
|
(status confirmed|tentative|cancelled)|
|
||||||
(summary <String>)|
|
(summary <String>)|
|
||||||
tentative|
|
tentative|
|
||||||
|
(timerange <Time> <Time>)|
|
||||||
(timezone <TimeZone>)|
|
(timezone <TimeZone>)|
|
||||||
(transparency opaque|transparent)|
|
(transparency opaque|transparent)|
|
||||||
(visibility default|public|private)
|
(visibility default|public|private)
|
||||||
|
|||||||
@@ -1,13 +1,14 @@
|
|||||||
|
7.00.04
|
||||||
|
|
||||||
|
Improved performance of `gam report users orgunit <OrgUnitPath>` when `showorgunit` is not specified.
|
||||||
|
|
||||||
|
Added option `birthday <Date>` to `gam <UserTypeEntity> create event <UserCalendarEntity>` that adds
|
||||||
|
an annual recurring event to the calendar.
|
||||||
|
|
||||||
|
Added `birthday` to `<EventType>` for use in various calendar event commands.
|
||||||
|
|
||||||
7.00.03
|
7.00.03
|
||||||
|
|
||||||
MacOS builds now use PyInstaller's "one directory" method which produces a smaller gam executable and a
|
|
||||||
lib/ sub-directory with supporting libraries. one directory builds are an ORDER OF MAGNITUDE FASTER to start
|
|
||||||
where 7.00.02 MacOS builds usually took ~7 seconds to run "gam version", 7.00.03 runs the command in less than
|
|
||||||
0.5 seconds.
|
|
||||||
|
|
||||||
MacOS builds are now signed by Jay's Apple Developer ID and notarized (scanned for malware) by Apple. This
|
|
||||||
should resolve MacOS security warnings that need to be overridden when running GAM.
|
|
||||||
|
|
||||||
Updated `gam delete ou` and `gam print admins` to handle the following error:
|
Updated `gam delete ou` and `gam print admins` to handle the following error:
|
||||||
```
|
```
|
||||||
ERROR: 503: serviceNotAvailable - The service is currently unavailable.
|
ERROR: 503: serviceNotAvailable - The service is currently unavailable.
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ https://github.com/GAM-team/GAM/wiki
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
__author__ = 'GAM Team <google-apps-manager@googlegroups.com>'
|
__author__ = 'GAM Team <google-apps-manager@googlegroups.com>'
|
||||||
__version__ = '7.00.03'
|
__version__ = '7.00.04'
|
||||||
__license__ = 'Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)'
|
__license__ = 'Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)'
|
||||||
|
|
||||||
#pylint: disable=wrong-import-position
|
#pylint: disable=wrong-import-position
|
||||||
@@ -13804,7 +13804,8 @@ def doReport():
|
|||||||
Ent.SetGetting(Ent.REPORT)
|
Ent.SetGetting(Ent.REPORT)
|
||||||
elif userKey == 'all':
|
elif userKey == 'all':
|
||||||
if orgUnitId:
|
if orgUnitId:
|
||||||
userOrgUnits = getUserOrgUnits(cd, orgUnit, orgUnitId)
|
if showOrgUnit:
|
||||||
|
userOrgUnits = getUserOrgUnits(cd, orgUnit, orgUnitId)
|
||||||
forWhom = f'users in orgUnit {orgUnit}'
|
forWhom = f'users in orgUnit {orgUnit}'
|
||||||
else:
|
else:
|
||||||
forWhom = 'all users'
|
forWhom = 'all users'
|
||||||
@@ -13990,7 +13991,8 @@ def doReport():
|
|||||||
orgUnitId = None
|
orgUnitId = None
|
||||||
elif userKey == 'all':
|
elif userKey == 'all':
|
||||||
if orgUnitId:
|
if orgUnitId:
|
||||||
userOrgUnits = getUserOrgUnits(cd, orgUnit, orgUnitId)
|
if showOrgUnit:
|
||||||
|
userOrgUnits = getUserOrgUnits(cd, orgUnit, orgUnitId)
|
||||||
printGettingEntityItemForWhom(Ent.REPORT, f'users in orgUnit {orgUnit}')
|
printGettingEntityItemForWhom(Ent.REPORT, f'users in orgUnit {orgUnit}')
|
||||||
else:
|
else:
|
||||||
printGettingEntityItemForWhom(Ent.REPORT, 'all users')
|
printGettingEntityItemForWhom(Ent.REPORT, 'all users')
|
||||||
@@ -37341,6 +37343,7 @@ def doCalendarsPrintShowACLs(calIds):
|
|||||||
if csvPF:
|
if csvPF:
|
||||||
csvPF.writeCSVfile('Calendar ACLs')
|
csvPF.writeCSVfile('Calendar ACLs')
|
||||||
|
|
||||||
|
EVENT_TYPE_BIRTHDAY = 'birthday'
|
||||||
EVENT_TYPE_DEFAULT = 'default'
|
EVENT_TYPE_DEFAULT = 'default'
|
||||||
EVENT_TYPE_FOCUSTIME = 'focusTime'
|
EVENT_TYPE_FOCUSTIME = 'focusTime'
|
||||||
EVENT_TYPE_FROMGMAIL = 'fromGmail'
|
EVENT_TYPE_FROMGMAIL = 'fromGmail'
|
||||||
@@ -37348,6 +37351,7 @@ EVENT_TYPE_OUTOFOFFICE = 'outOfOffice'
|
|||||||
EVENT_TYPE_WORKINGLOCATION = 'workingLocation'
|
EVENT_TYPE_WORKINGLOCATION = 'workingLocation'
|
||||||
|
|
||||||
EVENT_TYPES_CHOICE_MAP = {
|
EVENT_TYPES_CHOICE_MAP = {
|
||||||
|
'birthday': EVENT_TYPE_BIRTHDAY,
|
||||||
'default': EVENT_TYPE_DEFAULT,
|
'default': EVENT_TYPE_DEFAULT,
|
||||||
'focustime': EVENT_TYPE_FOCUSTIME,
|
'focustime': EVENT_TYPE_FOCUSTIME,
|
||||||
'fromgmail': EVENT_TYPE_FROMGMAIL,
|
'fromgmail': EVENT_TYPE_FROMGMAIL,
|
||||||
@@ -37355,20 +37359,6 @@ EVENT_TYPES_CHOICE_MAP = {
|
|||||||
'workinglocation': EVENT_TYPE_WORKINGLOCATION,
|
'workinglocation': EVENT_TYPE_WORKINGLOCATION,
|
||||||
}
|
}
|
||||||
|
|
||||||
#EVENT_TYPE_DEFAULT_PROPERTIES_MAP = {
|
|
||||||
# EVENT_TYPE_DEFAULT: {'eventType': EVENT_TYPE_DEFAULT},
|
|
||||||
# EVENT_TYPE_FOCUSTIME: {'eventType': EVENT_TYPE_FOCUSTIME,
|
|
||||||
# 'focusTimeProperties': {'autoDeclineMode': 'declineNone', 'declineMessage': 'Declined', 'chatStatus': 'doNotDisturb'},
|
|
||||||
# 'transparency':'opaque'},
|
|
||||||
# EVENT_TYPE_FROMGMAIL: {'eventType': EVENT_TYPE_FROMGMAIL},
|
|
||||||
# EVENT_TYPE_OUTOFOFFICE: {'eventType': EVENT_TYPE_OUTOFOFFICE,
|
|
||||||
# 'outOfOfficeProperties': {'autoDeclineMode': 'declineOnlyNewConflictingInvitations', 'declineMessage': 'Declined'},
|
|
||||||
# 'transparency':'opaque'},
|
|
||||||
# EVENT_TYPE_WORKINGLOCATION: {'eventType': EVENT_TYPE_WORKINGLOCATION,
|
|
||||||
# 'workingLocationProperties': {},
|
|
||||||
# 'visibility': 'public', 'transparency':'transparent'},
|
|
||||||
# }
|
|
||||||
|
|
||||||
EVENT_TYPE_PROPERTIES_NAME_MAP = {
|
EVENT_TYPE_PROPERTIES_NAME_MAP = {
|
||||||
EVENT_TYPE_DEFAULT: None,
|
EVENT_TYPE_DEFAULT: None,
|
||||||
EVENT_TYPE_FOCUSTIME: f'{EVENT_TYPE_FOCUSTIME}Properties',
|
EVENT_TYPE_FOCUSTIME: f'{EVENT_TYPE_FOCUSTIME}Properties',
|
||||||
@@ -37378,6 +37368,7 @@ EVENT_TYPE_PROPERTIES_NAME_MAP = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
EVENT_TYPE_ENTITY_MAP = {
|
EVENT_TYPE_ENTITY_MAP = {
|
||||||
|
EVENT_TYPE_BIRTHDAY: Ent.EVENT_BIRTHDAY,
|
||||||
EVENT_TYPE_DEFAULT: None,
|
EVENT_TYPE_DEFAULT: None,
|
||||||
EVENT_TYPE_FOCUSTIME: Ent.EVENT_FOCUSTIME,
|
EVENT_TYPE_FOCUSTIME: Ent.EVENT_FOCUSTIME,
|
||||||
EVENT_TYPE_FROMGMAIL: None,
|
EVENT_TYPE_FROMGMAIL: None,
|
||||||
@@ -37611,6 +37602,13 @@ def _getCalendarEventAttribute(myarg, body, parameters, function):
|
|||||||
elif myarg == 'timerange':
|
elif myarg == 'timerange':
|
||||||
body['start'] = {'dateTime': getTimeOrDeltaFromNow()}
|
body['start'] = {'dateTime': getTimeOrDeltaFromNow()}
|
||||||
body['end'] = {'dateTime': getTimeOrDeltaFromNow()}
|
body['end'] = {'dateTime': getTimeOrDeltaFromNow()}
|
||||||
|
elif myarg == 'birthday':
|
||||||
|
bday = getYYYYMMDD(returnDateTime=True)
|
||||||
|
body['start'] = body['end'] = {'date': bday.strftime(YYYYMMDD_FORMAT)}
|
||||||
|
if bday.month != 2 or bday.day != 29:
|
||||||
|
body['recurrence'] = ['RRULE:FREQ=YEARLY']
|
||||||
|
else:
|
||||||
|
body['recurrence'] = ['RRULE:FREQ=YEARLY;BYMONTH=2;BYMONTHDAY=-1']
|
||||||
elif myarg == 'attachment':
|
elif myarg == 'attachment':
|
||||||
body.setdefault('attachments', [])
|
body.setdefault('attachments', [])
|
||||||
body['attachments'].append({'title': getString(Cmd.OB_STRING), 'fileUrl': getString(Cmd.OB_URL)})
|
body['attachments'].append({'title': getString(Cmd.OB_STRING), 'fileUrl': getString(Cmd.OB_URL)})
|
||||||
@@ -51086,7 +51084,7 @@ def createStatusEvent(users, eventType):
|
|||||||
missingArgumentExit('|'.join(WORKING_LOCATION_CHOICE_MAP))
|
missingArgumentExit('|'.join(WORKING_LOCATION_CHOICE_MAP))
|
||||||
elif eventType == EVENT_TYPE_OUTOFOFFICE:
|
elif eventType == EVENT_TYPE_OUTOFOFFICE:
|
||||||
getOutOfOfficeProperties(body, parameters, dateList)
|
getOutOfOfficeProperties(body, parameters, dateList)
|
||||||
else: # eventType == EVENT_TYPE_FOCUSTIME
|
else: # elif eventType == EVENT_TYPE_FOCUSTIME:
|
||||||
getFocusTimeProperties(body, parameters, dateList)
|
getFocusTimeProperties(body, parameters, dateList)
|
||||||
if not dateList:
|
if not dateList:
|
||||||
missingChoiceExit(STATUS_EVENTS_DATETIME_CHOICES)
|
missingChoiceExit(STATUS_EVENTS_DATETIME_CHOICES)
|
||||||
|
|||||||
@@ -215,6 +215,7 @@ class GamEntity():
|
|||||||
END_TIME = 'endt'
|
END_TIME = 'endt'
|
||||||
ENTITY = 'enti'
|
ENTITY = 'enti'
|
||||||
EVENT = 'evnt'
|
EVENT = 'evnt'
|
||||||
|
EVENT_BIRTHDAY = 'evbd'
|
||||||
EVENT_FOCUSTIME = 'evft'
|
EVENT_FOCUSTIME = 'evft'
|
||||||
EVENT_OUTOFOFFICE = 'evoo'
|
EVENT_OUTOFOFFICE = 'evoo'
|
||||||
EVENT_WORKINGLOCATION = 'evwl'
|
EVENT_WORKINGLOCATION = 'evwl'
|
||||||
@@ -565,6 +566,7 @@ class GamEntity():
|
|||||||
END_TIME: ['End Times', 'End Time'],
|
END_TIME: ['End Times', 'End Time'],
|
||||||
ENTITY: ['Entities', 'Entity'],
|
ENTITY: ['Entities', 'Entity'],
|
||||||
EVENT: ['Events', 'Event'],
|
EVENT: ['Events', 'Event'],
|
||||||
|
EVENT_BIRTHDAY: ['Borthday Events', 'Birthday Event'],
|
||||||
EVENT_FOCUSTIME: ['Focus Time Events', 'Focus Time Event'],
|
EVENT_FOCUSTIME: ['Focus Time Events', 'Focus Time Event'],
|
||||||
EVENT_OUTOFOFFICE: ['Out of Office Events', 'Out of Office Event'],
|
EVENT_OUTOFOFFICE: ['Out of Office Events', 'Out of Office Event'],
|
||||||
EVENT_WORKINGLOCATION: ['Working Location Events', 'Working Location Event'],
|
EVENT_WORKINGLOCATION: ['Working Location Events', 'Working Location Event'],
|
||||||
|
|||||||
Reference in New Issue
Block a user