mirror of
https://github.com/GAM-team/GAM.git
synced 2026-06-28 09:51:36 +00:00
Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0dd8e099c5 | ||
|
|
5738cf5435 | ||
|
|
0739bdc642 | ||
|
|
ddd1924c2c | ||
|
|
a6fb1d7c0f | ||
|
|
6aeed76e70 |
@@ -381,12 +381,15 @@ If an item contains spaces, it should be surrounded by ".
|
|||||||
domain:<DomainName>|domain|default
|
domain:<DomainName>|domain|default
|
||||||
<CalendarItem> ::= <EmailAddress>
|
<CalendarItem> ::= <EmailAddress>
|
||||||
<ChannelCustomerID> ::= <String>
|
<ChannelCustomerID> ::= <String>
|
||||||
<ChatEmojiName> ::= :<String>:
|
<ChatEmojiName> ::= :[0-9a-z_-]+:
|
||||||
<ChatEmoji> ::= emojiname <ChatEmojiName> | customemojis/<String>
|
<ChatEmoji> ::= emojiname <ChatEmojiName> | customemojis/<String>
|
||||||
<ChatMember> ::= spaces/<String>/members/<String>
|
<ChatMember> ::= spaces/<String>/members/<String>
|
||||||
<ChatMessage> ::= spaces/<String>/messages/<String>
|
<ChatMessage> ::= spaces/<String>/messages/<String>
|
||||||
<ChatSpace> ::= spaces/<String> | space <String> | space spaces/<String>
|
<ChatSpace> ::= spaces/<String> | space <String> | space spaces/<String>
|
||||||
<ChatThread> ::= spaces/<String>/threads/<String>
|
<ChatThread> ::= spaces/<String>/threads/<String>
|
||||||
|
<ChromeProfilePermanentID> ::= <String>
|
||||||
|
<ChromeProfileName> ::= customers/<CustomerID>/profiles/<ChromeProfilePermanentID> | <ChromeProfilePermanentID>
|
||||||
|
<ChromeProfileCommandName> ::= <ChomeProfileName>/commands/<String>
|
||||||
<GIGroupAlias> ::= <EmailAddress>
|
<GIGroupAlias> ::= <EmailAddress>
|
||||||
<GIGroupItem> ::= <EmailAddress>|<UniqueID>|groups/<String>
|
<GIGroupItem> ::= <EmailAddress>|<UniqueID>|groups/<String>
|
||||||
<CIGroupMemberType> ::= cbcmbrowser|chromeosdevice|customer|group|other|serviceaccount|user
|
<CIGroupMemberType> ::= cbcmbrowser|chromeosdevice|customer|group|other|serviceaccount|user
|
||||||
@@ -681,9 +684,15 @@ If an item contains spaces, it should be surrounded by ".
|
|||||||
<CalendarACLScopeList> ::= "<CalendarACLScope>(,<CalendarACLScope>)*"
|
<CalendarACLScopeList> ::= "<CalendarACLScope>(,<CalendarACLScope>)*"
|
||||||
<CalendarList> ::= "<CalendarItem>(,<CalendarItem>)*"
|
<CalendarList> ::= "<CalendarItem>(,<CalendarItem>)*"
|
||||||
<ChatSpaceList> ::= "<ChatSpace>(,<ChatSpace>)*"
|
<ChatSpaceList> ::= "<ChatSpace>(,<ChatSpace>)*"
|
||||||
|
<ChromeProfileNameList> ::= "<ChromeProfileName>(,<ChromeProfileName>)*"
|
||||||
<CIGroupAliasList> ::= "<CIGroupAlias>(,<CIGroupAlias>)*"
|
<CIGroupAliasList> ::= "<CIGroupAlias>(,<CIGroupAlias>)*"
|
||||||
<CIGroupMemberTypeList> ::= "<CIGroupMemberType>(,<CIGroupMemberType>)*"
|
<CIGroupMemberTypeList> ::= "<CIGroupMemberType>(,<CIGroupMemberType>)*"
|
||||||
<CIPolicyNameList> ::= "<CIPolicyName>(,<CIPolicyName>)*"
|
<CIPolicyNameList> ::= "<CIPolicyName>(,<CIPolicyName>)*"
|
||||||
|
<ClassificationLabelIDList> ::= "<ClassificationLabelID>(,<ClassificationLabelID>)*"
|
||||||
|
<ClassificationLabelNameList> ::= "<ClassificationLabelName>(,<ClassificationLabelName>)*"
|
||||||
|
<ClassificationLabelPermissionNameList> ::= "<ClassificationLabelPermissionName>(,<ClassificationLabelPermissionName>)*"
|
||||||
|
<ClassificationLabelFieldIDList> ::= "<ClassificationLabelFieldID>(,<ClassificationLabelFieldID>)*"
|
||||||
|
<ClassificationLabelSelectionIDList> ::= "<ClassificationLabelSelectionID>(,<ClassificationLabelSelectionID>)*"
|
||||||
<ClassroomInvitationIDList> ::= "<ClassroomInvitationID>(,<ClassroomInvitationID>)*"
|
<ClassroomInvitationIDList> ::= "<ClassroomInvitationID>(,<ClassroomInvitationID>)*"
|
||||||
<ContactGroupList> ::= "<ContactGroupItem>(,<ContactGroupItem>)*"
|
<ContactGroupList> ::= "<ContactGroupItem>(,<ContactGroupItem>)*"
|
||||||
<ContactIDList> ::= "<ContactID>(,<ContactID>)*"
|
<ContactIDList> ::= "<ContactID>(,<ContactID>)*"
|
||||||
@@ -1015,6 +1024,8 @@ Specify a collection of items by directly specifying them; the item type is dete
|
|||||||
<CalendarACLScopeList> | <FileSelector> | <CSVFileSelector> | <CSVkmdSelector> | <CSVDataSelector>
|
<CalendarACLScopeList> | <FileSelector> | <CSVFileSelector> | <CSVkmdSelector> | <CSVDataSelector>
|
||||||
<CalendarEntity> ::=
|
<CalendarEntity> ::=
|
||||||
<CalendarList> | <FileSelector> | <CSVFileSelector> | <CSVkmdSelector> | <CSVDataSelector>
|
<CalendarList> | <FileSelector> | <CSVFileSelector> | <CSVkmdSelector> | <CSVDataSelector>
|
||||||
|
<ChromeProfileNameEntity> ::=
|
||||||
|
<ChromeProfileNameList> | <FileSelector> | <CSVFileSelector>
|
||||||
<CIPolicyNameEntity> ::=
|
<CIPolicyNameEntity> ::=
|
||||||
<CIPolicyNameList> | <FileSelector> | <CSVFileSelector>
|
<CIPolicyNameList> | <FileSelector> | <CSVFileSelector>
|
||||||
<ClassificationLabelNameEntity> ::=
|
<ClassificationLabelNameEntity> ::=
|
||||||
@@ -2215,6 +2226,15 @@ gam show chromeneedsattn
|
|||||||
|
|
||||||
# Chrome Profile Management
|
# Chrome Profile Management
|
||||||
|
|
||||||
|
<ChromeProfilePermanentID> ::= <String>
|
||||||
|
<ChromeProfileName> ::= customers/<CustomerID>/profiles/<ChromeProfilePermanentID> | <ChromeProfilePermanentID>
|
||||||
|
<ChromeProfileCommandName> ::= <ChomeProfileName>/commands/<String>
|
||||||
|
<ChromeProfileNameList> ::= "<ChromeProfileName>(,<ChromeProfileName>)*"
|
||||||
|
<ChromeProfileNameEntity> ::=
|
||||||
|
<ChromeProfileNameList> |
|
||||||
|
(select <FileSelector>|<CSVFileSelector>) |
|
||||||
|
(filter <String> (filtertime<String> <Time>)* [orderby <ChromeProfileOrderByFieldName> [ascending|descending]])
|
||||||
|
|
||||||
<ChromeProfileFieldName> ::=
|
<ChromeProfileFieldName> ::=
|
||||||
affiliationstate|
|
affiliationstate|
|
||||||
annotatedlocation|
|
annotatedlocation|
|
||||||
@@ -2265,15 +2285,27 @@ gam delete chromeprofile <ChromeProfileName>
|
|||||||
gam info chromeprofile <ChromeProfileName>
|
gam info chromeprofile <ChromeProfileName>
|
||||||
<ChromeProfileFieldName>* [fields <ChromeProfileFieldNameList>]
|
<ChromeProfileFieldName>* [fields <ChromeProfileFieldNameList>]
|
||||||
gam show chromeprofiles
|
gam show chromeprofiles
|
||||||
[filtertime.* <Time>] [filter <String>]
|
[filter <String> (filtertime<String> <Time>)*]
|
||||||
[orderby <ChromeProfileOrderByFieldName> [ascending|descending]]
|
[orderby <ChromeProfileOrderByFieldName> [ascending|descending]]
|
||||||
<ChromeProfileFieldName>* [fields <ChromeProfileFieldNameList>]
|
<ChromeProfileFieldName>* [fields <ChromeProfileFieldNameList>]
|
||||||
[formatjson]
|
[formatjson]
|
||||||
gam print chromeprofiles [todrive <ToDriveAttribute>*]
|
gam print chromeprofiles [todrive <ToDriveAttribute>*]
|
||||||
[filtertime.* <Time>] [filter <String>]
|
[filter <String> (filtertime<String> <Time>)*]
|
||||||
[orderby <ChromeProfileOrderByFieldName> [ascending|descending]]
|
[orderby <ChromeProfileOrderByFieldName> [ascending|descending]]
|
||||||
<ChromeProfileFieldName>* [fields <ChromeProfileFieldNameList>]
|
<ChromeProfileFieldName>* [fields <ChromeProfileFieldNameList>]
|
||||||
[[formatjson [quotechar <Character>]]
|
[formatjson [quotechar <Character>]]
|
||||||
|
|
||||||
|
gam create chromeprofilecommand <ChromeProfileNameEntity>
|
||||||
|
[clearcache [<Boolean>]] [clearcookies [<Boolean>]]
|
||||||
|
[formatjson]
|
||||||
|
|
||||||
|
gam info chromeprofilecommand <ChromeProfileCommandName>
|
||||||
|
[formatjson]
|
||||||
|
|
||||||
|
gam show chromeprofilecommands <ChromeProfileNameEntity>
|
||||||
|
[formatjson]
|
||||||
|
gam print chromeprofilecommands <ChromeProfileNameEntity> [todrive <ToDriveAttribute>*]
|
||||||
|
[formatjson [quotechar <Character>]]
|
||||||
|
|
||||||
# Chrome Versions Counts
|
# Chrome Versions Counts
|
||||||
|
|
||||||
@@ -4491,7 +4523,7 @@ gam report <ActivityApplicationName> [todrive <ToDriveAttribute>*]
|
|||||||
[(user all|<UserItem>)|(orgunit|org|ou <OrgUnitPath> [showorgunit])|(select <UserTypeEntity>)]
|
[(user all|<UserItem>)|(orgunit|org|ou <OrgUnitPath> [showorgunit])|(select <UserTypeEntity>)]
|
||||||
[([start <Time>] [end <Time>])|(range <Time> <Time>)|
|
[([start <Time>] [end <Time>])|(range <Time> <Time>)|
|
||||||
yesterday|today|thismonth|(previousmonths <Integer>)]
|
yesterday|today|thismonth|(previousmonths <Integer>)]
|
||||||
[filtertime.<String> <Time>] [filter|filters <String>]
|
[filter <String> (filtertime<String> <Time>)*]
|
||||||
[event|events <EventNameList>] [ip <String>]
|
[event|events <EventNameList>] [ip <String>]
|
||||||
[groupidfilter <String>]
|
[groupidfilter <String>]
|
||||||
[maxactivities <Number>] [maxevents <Number>] [maxresults <Number>]
|
[maxactivities <Number>] [maxevents <Number>] [maxresults <Number>]
|
||||||
@@ -4538,7 +4570,7 @@ gam report users|user [todrive <ToDriveAttribute>*]
|
|||||||
[(date <Date>)|(range <Date> <Date>)|
|
[(date <Date>)|(range <Date> <Date>)|
|
||||||
yesterday|today|thismonth|(previousmonths <Integer>)]
|
yesterday|today|thismonth|(previousmonths <Integer>)]
|
||||||
[(nodatechange | limitdatechanges <Integer>) | (fulldatarequired all|<UserServiceNameList>)]
|
[(nodatechange | limitdatechanges <Integer>) | (fulldatarequired all|<UserServiceNameList>)]
|
||||||
[filtertime.* <Time>] [filter|filters <String>]
|
[filter <String> (filtertime<String> <Time>)*]
|
||||||
[(fields|parameters <String>)|(services <UserServiceNameList>)]
|
[(fields|parameters <String>)|(services <UserServiceNameList>)]
|
||||||
[aggregatebydate|aggregatebyuser [Boolean]]
|
[aggregatebydate|aggregatebyuser [Boolean]]
|
||||||
[maxresults <Number>]
|
[maxresults <Number>]
|
||||||
@@ -7466,10 +7498,10 @@ gam <UserTypeEntity> show forms <DriveFileEntity>
|
|||||||
|
|
||||||
gam <UserTypeEntity> print formresponses <DriveFileEntity> [todrive <ToDriveAttribute>*]
|
gam <UserTypeEntity> print formresponses <DriveFileEntity> [todrive <ToDriveAttribute>*]
|
||||||
(addcsvdata <FieldName> <String>)*
|
(addcsvdata <FieldName> <String>)*
|
||||||
[filtertime.* <Time>] [filter <String>]
|
[filter <String> (filtertime<String> <Time>)*]
|
||||||
[countsonly|(formatjson [quotechar <Character>])]
|
[countsonly|(formatjson [quotechar <Character>])]
|
||||||
gam <UserTypeEntity> show formresponses <DriveFileEntity>
|
gam <UserTypeEntity> show formresponses <DriveFileEntity>
|
||||||
[filtertime.* <Time>] [filter <String>]
|
[filter <String> (filtertime<String> <Time>)*]
|
||||||
[countsonly|formatjson]
|
[countsonly|formatjson]
|
||||||
|
|
||||||
# Users - Gmail - Forwarding
|
# Users - Gmail - Forwarding
|
||||||
|
|||||||
@@ -1,3 +1,26 @@
|
|||||||
|
7.13.01
|
||||||
|
|
||||||
|
Enhanced `gam create|print|show chromeprofilecommand` to allow specification
|
||||||
|
of multiple Chrome browser profiles rather than just one.
|
||||||
|
```
|
||||||
|
<ChromeProfilePermanentID> ::= <String>
|
||||||
|
<ChromeProfileName> ::= customers/<CustomerID>/profiles/<ChromeProfilePermanentID> | <ChromeProfilePermanentID>
|
||||||
|
<ChromeProfileNameList> ::= "<ChromeProfileName>(,<ChromeProfileName>)*"
|
||||||
|
<ChromeProfileNameEntity> ::=
|
||||||
|
<ChromeProfileNameList> |
|
||||||
|
(select <FileSelector>|<CSVFileSelector>) |
|
||||||
|
(filter <String> (filtertime<String> <Time>)* [orderby <ChromeProfileOrderByFieldName> [ascending|descending]])
|
||||||
|
|
||||||
|
gam create|print_show chromeprofilecommand <ChromeProfileNameEntity>
|
||||||
|
```
|
||||||
|
|
||||||
|
7.13.00
|
||||||
|
|
||||||
|
Added commands that send remote commands to Chrome browser profiles and display the results;
|
||||||
|
at the moment, these commands can clear the browser cache and cookies.
|
||||||
|
|
||||||
|
* See: https://github.com/GAM-team/GAM/wiki/Chrome-Profile-Management#create-a-chrome-profile-command
|
||||||
|
|
||||||
7.12.02
|
7.12.02
|
||||||
|
|
||||||
Updated `gam print users` to handle the following error:
|
Updated `gam print users` to handle the following error:
|
||||||
@@ -12800,7 +12823,7 @@ gam <UserTypeEntity> update teamdrive <TeamDriveEntity> [adminaccess|asadmin] [n
|
|||||||
Updated gam report users to support new orgUnitID argument in Reports API.
|
Updated gam report users to support new orgUnitID argument in Reports API.
|
||||||
|
|
||||||
gam report users|user [todrive <ToDriveAttribute>*] [date <Date>] [nodatechange | (fulldatarequired all|<ReportsAppList>)]
|
gam report users|user [todrive <ToDriveAttribute>*] [date <Date>] [nodatechange | (fulldatarequired all|<ReportsAppList>)]
|
||||||
[(user all|<UserItem>)|(orgunit|org|ou <OrgUnitPath>)|(select <UserTypeEntity>)] (filtertime.* <Time>)* [filter|filters <String>] [fields|parameters <String>]
|
[(user all|<UserItem>)|(orgunit|org|ou <OrgUnitPath>)|(select <UserTypeEntity>)] (filtertime<String> <Time>)* [filter|filters <String>] [fields|parameters <String>]
|
||||||
[maxactivities <Number>] [maxresults <Number>]
|
[maxactivities <Number>] [maxresults <Number>]
|
||||||
|
|
||||||
Select the users for whom information is desired.
|
Select the users for whom information is desired.
|
||||||
@@ -13391,15 +13414,15 @@ gam print cros query "sync:#querytime1#.." querytime1 -30d
|
|||||||
For example, to print information about CrOS devices synced between 45 days ago and 30 days ago:
|
For example, to print information about CrOS devices synced between 45 days ago and 30 days ago:
|
||||||
gam print cros query "sync:#querytime1#..#querytime2#" querytime1 -45d querytime2 -30d
|
gam print cros query "sync:#querytime1#..#querytime2#" querytime1 -45d querytime2 -30d
|
||||||
|
|
||||||
Added filtertime.* <Time> option to gam report to allow times, usually relative, to be substituted into the filter <String> option.
|
Added filtertime<String> <Time> option to gam report to allow times, usually relative, to be substituted into the filter <String> option.
|
||||||
The filtertime.* value replaces the string #filtertime.*# in the filter <String>.
|
The filtertime<String> value replaces the string #filtertime<String># in the filter <String>.
|
||||||
The characters following filtertime can be any combination of lowercase letters and numbers.
|
The characters following filtertime can be any combination of lowercase letters and numbers.
|
||||||
gam report users|user [todrive <ToDriveAttribute>*] [date <Date>] [nodatechange | (fulldatarequired all|<ReportsAppList>)]
|
gam report users|user [todrive <ToDriveAttribute>*] [date <Date>] [nodatechange | (fulldatarequired all|<ReportsAppList>)]
|
||||||
[(user all|<UserItem>)|(select <UserTypeEntity>)] (filtertime.* <Time>)* [filter|filters <String>] [fields|parameters <String>]
|
[(user all|<UserItem>)|(select <UserTypeEntity>)] (filtertime<String> <Time>)* [filter|filters <String>] [fields|parameters <String>]
|
||||||
[maxactivities <Number>] [maxresults <Number>]
|
[maxactivities <Number>] [maxresults <Number>]
|
||||||
gam report admin|calendar|calendars|drive|docs|doc|gplus|groups|group|logins|login|mobile|rules|tokens|token [todrive <ToDriveAttribute>*] [maxresults <Number>] [maxactivities <Number>]
|
gam report admin|calendar|calendars|drive|docs|doc|gplus|groups|group|logins|login|mobile|rules|tokens|token [todrive <ToDriveAttribute>*] [maxresults <Number>] [maxactivities <Number>]
|
||||||
[([start <Time>] [end <Time>])|yesterday] [(user all|<UserItem>)|(select <UserTypeEntity>)]
|
[([start <Time>] [end <Time>])|yesterday] [(user all|<UserItem>)|(select <UserTypeEntity>)]
|
||||||
[event <String>] (filtertime.* <Time>)* [filter|filters <String>] [ip <String>] [countsonly] [summary]
|
[event <String>] (filtertime<String> <Time>)* [filter|filters <String>] [ip <String>] [countsonly] [summary]
|
||||||
|
|
||||||
For example, this command reports on the users that haven't logged in in the last 5 years.
|
For example, this command reports on the users that haven't logged in in the last 5 years.
|
||||||
gam report users parameters accounts:last_login_time filters "accounts:last_login_time<#filtertime#" filtertime -5y
|
gam report users parameters accounts:last_login_time filters "accounts:last_login_time<#filtertime#" filtertime -5y
|
||||||
@@ -13555,21 +13578,21 @@ Added units of years to <Date>, <DateTime> and <Time>; a year is 365 days. Added
|
|||||||
never|
|
never|
|
||||||
now|today
|
now|today
|
||||||
|
|
||||||
Added filtertime <Time> option to gam report to allow times, usually relative, to be substituted into the filter <String> option.
|
Added filtertime<String> <Time> option to gam report to allow times, usually relative, to be substituted into the filter <String> option.
|
||||||
If both filtertime and filter are specified, the filtertime value replaces the string #filtertime# in the filter <String>.
|
If both filtertime<String> and filter are specified, the filtertime value replaces the string #filtertime<String># in the filter <String>.
|
||||||
|
|
||||||
gam report users|user [todrive <ToDriveAttribute>*] [date <Date>] [nodatechange | (fulldatarequired all|<ReportsAppList>)]
|
gam report users|user [todrive <ToDriveAttribute>*] [date <Date>] [nodatechange | (fulldatarequired all|<ReportsAppList>)]
|
||||||
[(user all|<UserItem>)|(select <UserTypeEntity>)] [filtertime <Time>] [filter|filters <String>] [fields|parameters <String>]
|
[(user all|<UserItem>)|(select <UserTypeEntity>)] [filtertime<String> <Time>] [filter|filters <String>] [fields|parameters <String>]
|
||||||
[maxactivities <Number>] [maxresults <Number>]
|
[maxactivities <Number>] [maxresults <Number>]
|
||||||
gam report admin|calendar|calendars|drive|docs|doc|gplus|groups|group|logins|login|mobile|rules|tokens|token [todrive <ToDriveAttribute>*] [maxresults <Number>] [maxactivities <Number>]
|
gam report admin|calendar|calendars|drive|docs|doc|gplus|groups|group|logins|login|mobile|rules|tokens|token [todrive <ToDriveAttribute>*] [maxresults <Number>] [maxactivities <Number>]
|
||||||
[([start <Time>] [end <Time>])|yesterday] [(user all|<UserItem>)|(select <UserTypeEntity>)]
|
[([start <Time>] [end <Time>])|yesterday] [(user all|<UserItem>)|(select <UserTypeEntity>)]
|
||||||
[event <String>] [filtertime <Time>] [filter|filters <String>] [ip <String>] [countsonly] [summary]
|
[event <String>] [filtertime<String> <Time>] [filter|filters <String>] [ip <String>] [countsonly] [summary]
|
||||||
|
|
||||||
For example, this command reports on the users that haven't logged in in the last 5 years.
|
For example, this command reports on the users that haven't logged in in the last 5 years.
|
||||||
gam report users parameters accounts:last_login_time filters "accounts:last_login_time<#filtertime#" filtertime -5y
|
gam report users parameters accounts:last_login_time filters "accounts:last_login_time<#filtertime5y#" filtertime5y -5y
|
||||||
|
|
||||||
For example, this command reports on the users that haven't ever logged in.
|
For example, this command reports on the users that haven't ever logged in.
|
||||||
gam report users parameters accounts:last_login_time filters "accounts:last_login_time==#filtertime#" filtertime never
|
gam report users parameters accounts:last_login_time filters "accounts:last_login_time==#filtertimeNever#" filtertimeNever never
|
||||||
|
|
||||||
4.60.14
|
4.60.14
|
||||||
|
|
||||||
|
|||||||
@@ -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.12.02'
|
__version__ = '7.13.01'
|
||||||
__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
|
||||||
@@ -13641,7 +13641,7 @@ REPORT_ACTIVITIES_TIME_OBJECTS = {'time'}
|
|||||||
# [(user all|<UserItem>)|(orgunit|org|ou <OrgUnitPath> [showorgunit])|(select <UserTypeEntity>)]
|
# [(user all|<UserItem>)|(orgunit|org|ou <OrgUnitPath> [showorgunit])|(select <UserTypeEntity>)]
|
||||||
# [([start <Time>] [end <Time>])|(range <Time> <Time>)|
|
# [([start <Time>] [end <Time>])|(range <Time> <Time>)|
|
||||||
# yesterday|today|thismonth|(previousmonths <Integer>)]
|
# yesterday|today|thismonth|(previousmonths <Integer>)]
|
||||||
# [filtertime.* <Time>] [filter|filters <String>]
|
# [filter <String> (filtertime<String> <Time>)*]
|
||||||
# [event|events <EventNameList>] [ip <String>]
|
# [event|events <EventNameList>] [ip <String>]
|
||||||
# [groupidfilter <String>]
|
# [groupidfilter <String>]
|
||||||
# [maxactivities <Number>] [maxevents <Number>] [maxresults <Number>]
|
# [maxactivities <Number>] [maxevents <Number>] [maxresults <Number>]
|
||||||
@@ -13653,7 +13653,7 @@ REPORT_ACTIVITIES_TIME_OBJECTS = {'time'}
|
|||||||
# [(date <Date>)|(range <Date> <Date>)|
|
# [(date <Date>)|(range <Date> <Date>)|
|
||||||
# yesterday|today|thismonth|(previousmonths <Integer>)]
|
# yesterday|today|thismonth|(previousmonths <Integer>)]
|
||||||
# [nodatechange | (fulldatarequired all|<UserServiceNameList>)]
|
# [nodatechange | (fulldatarequired all|<UserServiceNameList>)]
|
||||||
# [filtertime.* <Time>] [filter|filters <String>]
|
# [filter <String> (filtertime<String> <Time>)*]
|
||||||
# [(fields|parameters <String>)|(services <UserServiceNameList>)]
|
# [(fields|parameters <String>)|(services <UserServiceNameList>)]
|
||||||
# [aggregatebydate|aggregatebyuser [Boolean]]
|
# [aggregatebydate|aggregatebyuser [Boolean]]
|
||||||
# [maxresults <Number>]
|
# [maxresults <Number>]
|
||||||
@@ -25491,7 +25491,7 @@ def doUpdateBrowsers():
|
|||||||
checkEntityAFDNEorAccessErrorExit(None, Ent.CHROME_BROWSER, deviceId, i, count)
|
checkEntityAFDNEorAccessErrorExit(None, Ent.CHROME_BROWSER, deviceId, i, count)
|
||||||
|
|
||||||
def _getChromeProfileName():
|
def _getChromeProfileName():
|
||||||
profileName = getString(Cmd.OB_CHROMEPROFILE_ID)
|
profileName = getString(Cmd.OB_CHROMEPROFILE_NAME)
|
||||||
if not profileName.startswith('customers'):
|
if not profileName.startswith('customers'):
|
||||||
customerId = _getCustomerId()
|
customerId = _getCustomerId()
|
||||||
profileName = f'customers/{customerId}/profiles/{profileName}'
|
profileName = f'customers/{customerId}/profiles/{profileName}'
|
||||||
@@ -25598,15 +25598,15 @@ CHROMEPROFILE_ORDERBY_CHOICE_MAP = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# gam show chromeprofiles
|
# gam show chromeprofiles
|
||||||
# [filtertime.* <Time>] [filter <String>]
|
# [filter <String> (filtertime<String> <Time>)*]
|
||||||
# [orderby <ChromeProfileOrderByFieldName> [ascending|descending]]
|
# [orderby <ChromeProfileOrderByFieldName> [ascending|descending]]
|
||||||
# <ChromeProfileFieldName>* [fields <ChromeProfileFieldNameList>]
|
# <ChromeProfileFieldName>* [fields <ChromeProfileFieldNameList>]
|
||||||
# [formatjson]
|
# [formatjson]
|
||||||
# gam print chromeprofiles [todrive <ToDriveAttribute>*]
|
# gam print chromeprofiles [todrive <ToDriveAttribute>*]
|
||||||
# [filtertime.* <Time>] [filter <String>]
|
# [filter <String> (filtertime<String> <Time>)*]
|
||||||
# [orderby <ChromeProfileOrderByFieldName> [ascending|descending]]
|
# [orderby <ChromeProfileOrderByFieldName> [ascending|descending]]
|
||||||
# <ChromeProfileFieldName>* [fields <ChromeProfileFieldNameList>]
|
# <ChromeProfileFieldName>* [fields <ChromeProfileFieldNameList>]
|
||||||
# [[formatjson [quotechar <Character>]]
|
# [formatjson [quotechar <Character>]]
|
||||||
def doPrintShowChromeProfiles():
|
def doPrintShowChromeProfiles():
|
||||||
def _printProfile(profile):
|
def _printProfile(profile):
|
||||||
row = flattenJSON(profile, timeObjects=CHROMEPROFILE_TIME_OBJECTS)
|
row = flattenJSON(profile, timeObjects=CHROMEPROFILE_TIME_OBJECTS)
|
||||||
@@ -25641,7 +25641,7 @@ def doPrintShowChromeProfiles():
|
|||||||
sortHeaders = True
|
sortHeaders = True
|
||||||
else:
|
else:
|
||||||
FJQC.GetFormatJSONQuoteChar(myarg, True)
|
FJQC.GetFormatJSONQuoteChar(myarg, True)
|
||||||
if filterTimes and filter is not None:
|
if filterTimes and cbfilter is not None:
|
||||||
for filterTimeName, filterTimeValue in iter(filterTimes.items()):
|
for filterTimeName, filterTimeValue in iter(filterTimes.items()):
|
||||||
cbfilter = cbfilter.replace(f'#{filterTimeName}#', filterTimeValue)
|
cbfilter = cbfilter.replace(f'#{filterTimeName}#', filterTimeValue)
|
||||||
fields = getItemFieldsFromFieldsList('chromeBrowserProfiles', fieldsList)
|
fields = getItemFieldsFromFieldsList('chromeBrowserProfiles', fieldsList)
|
||||||
@@ -25676,6 +25676,172 @@ def doPrintShowChromeProfiles():
|
|||||||
csvPF.SetSortTitles(['name', 'profileId'])
|
csvPF.SetSortTitles(['name', 'profileId'])
|
||||||
csvPF.writeCSVfile('Chrome Profiles')
|
csvPF.writeCSVfile('Chrome Profiles')
|
||||||
|
|
||||||
|
def _getChromeProfileNameList():
|
||||||
|
if not Cmd.PeekArgumentPresent(['select', 'filter', 'filters']):
|
||||||
|
return getString(Cmd.OB_CHROMEPROFILE_NAME_LIST).replace(',', ' ').split()
|
||||||
|
return []
|
||||||
|
|
||||||
|
def _initChromeProfileNameParameters():
|
||||||
|
cm = buildGAPIObject(API.CHROMEMANAGEMENT)
|
||||||
|
return (cm, {'profileNameList': _getChromeProfileNameList(), 'customerId': _getCustomerId(),
|
||||||
|
'cbfilter': None, 'filterTimes': {},
|
||||||
|
'OBY': OrderBy(CHROMEPROFILE_ORDERBY_CHOICE_MAP)})
|
||||||
|
|
||||||
|
def _getChromeProfileNameParameters(myarg, parameters):
|
||||||
|
if not parameters['cbfilter'] and myarg == 'select':
|
||||||
|
parameters['profileNameList'].extend(getEntityList(Cmd.OB_CHROMEPROFILE_NAME_LIST))
|
||||||
|
elif not parameters['profileNameList'] and myarg == 'orderby':
|
||||||
|
parameters['OBY'].GetChoice()
|
||||||
|
elif not parameters['profileNameList'] and myarg.startswith('filtertime'):
|
||||||
|
parameters['filterTimes'][myarg] = getTimeOrDeltaFromNow()
|
||||||
|
elif not parameters['profileNameList'] and myarg in {'filter', 'filters'}:
|
||||||
|
parameters['cbfilter'] = getString(Cmd.OB_STRING)
|
||||||
|
else:
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
|
||||||
|
def _getChromeProfileNameEntityForCommand(cm, parameters):
|
||||||
|
if parameters['cbfilter'] is None:
|
||||||
|
customerId = parameters['customerId']
|
||||||
|
for i, profileName in enumerate(parameters['profileNameList']):
|
||||||
|
if not profileName.startswith('customers'):
|
||||||
|
parameters['profileNameList'][i] = f'customers/{customerId}/profiles/{profileName}'
|
||||||
|
return
|
||||||
|
if parameters['filterTimes']:
|
||||||
|
for filterTimeName, filterTimeValue in iter(parameters['filterTimes'].items()):
|
||||||
|
parameters['cbfilter'] = parameters['cbfilter'].replace(f'#{filterTimeName}#', filterTimeValue)
|
||||||
|
printGettingAllAccountEntities(Ent.CHROME_PROFILE, parameters['cbfilter'])
|
||||||
|
pageMessage = getPageMessage()
|
||||||
|
try:
|
||||||
|
feed = yieldGAPIpages(cm.customers().profiles(), 'list', 'chromeBrowserProfiles',
|
||||||
|
pageMessage=pageMessage,
|
||||||
|
throwReasons=[GAPI.INVALID_ARGUMENT, GAPI.PERMISSION_DENIED],
|
||||||
|
parent=f'customers/{parameters["customerId"]}', pageSize=200,
|
||||||
|
filter=parameters['cbfilter'], orderBy=parameters['OBY'].orderBy,
|
||||||
|
fields='nextPageToken,chromeBrowserProfiles(name)')
|
||||||
|
for profiles in feed:
|
||||||
|
for profile in profiles:
|
||||||
|
parameters['profileNameList'].append(profile['name'])
|
||||||
|
except (GAPI.invalidArgument, GAPI.permissionDenied) as e:
|
||||||
|
entityActionFailedExit([Ent.CHROME_PROFILE, parameters['cbfilter']], str(e))
|
||||||
|
|
||||||
|
CHROMEPROFILECOMMAND_TIME_OBJECTS = {
|
||||||
|
'clientExecutionTime',
|
||||||
|
'issueTime',
|
||||||
|
}
|
||||||
|
|
||||||
|
def _showChromeProfileCommand(profcmd, FJQC, i=0, count=0):
|
||||||
|
if FJQC.formatJSON:
|
||||||
|
printLine(json.dumps(cleanJSON(profcmd, timeObjects=CHROMEPROFILECOMMAND_TIME_OBJECTS),
|
||||||
|
ensure_ascii=False, sort_keys=True))
|
||||||
|
return
|
||||||
|
printEntity([Ent.CHROME_PROFILE_COMMAND, profcmd['name']], i, count)
|
||||||
|
Ind.Increment()
|
||||||
|
showJSON(None, profcmd, timeObjects=CHROMEPROFILECOMMAND_TIME_OBJECTS)
|
||||||
|
Ind.Decrement()
|
||||||
|
|
||||||
|
# gam create chromeprofilecommand <ChromeProfileNameEntity>
|
||||||
|
# [clearcache [<Boolean>]] [clearcookies [<Boolean>]]
|
||||||
|
# [formatjson]
|
||||||
|
def doCreateChromeProfileCommand():
|
||||||
|
cm, parameters = _initChromeProfileNameParameters()
|
||||||
|
body = {'commandType': 'clearBrowsingData', 'payload': {}}
|
||||||
|
FJQC = FormatJSONQuoteChar()
|
||||||
|
while Cmd.ArgumentsRemaining():
|
||||||
|
myarg = getArgument()
|
||||||
|
if myarg == 'clearcache':
|
||||||
|
body['payload']['clearCache'] = getBoolean()
|
||||||
|
elif myarg == 'clearcookies':
|
||||||
|
body['payload']['clearCookies'] = getBoolean()
|
||||||
|
else:
|
||||||
|
FJQC.GetFormatJSON(myarg)
|
||||||
|
_getChromeProfileNameEntityForCommand(cm, parameters)
|
||||||
|
count = len(parameters['profileNameList'])
|
||||||
|
i = 0
|
||||||
|
for profileName in parameters['profileNameList']:
|
||||||
|
i +=1
|
||||||
|
try:
|
||||||
|
profcmd = callGAPI(cm.customers().profiles().commands(), 'create',
|
||||||
|
throwReasons=[GAPI.INVALID_ARGUMENT, GAPI.NOT_FOUND, GAPI.PERMISSION_DENIED],
|
||||||
|
parent=profileName, body=body)
|
||||||
|
_showChromeProfileCommand(profcmd, FJQC)
|
||||||
|
except (GAPI.notFound) as e:
|
||||||
|
entityActionFailedWarning([Ent.CHROME_PROFILE_COMMAND, profileName], str(e), i, count)
|
||||||
|
except (GAPI.invalidArgument, GAPI.permissionDenied) as e:
|
||||||
|
entityActionFailedExit([Ent.CHROME_PROFILE_COMMAND, profileName], str(e))
|
||||||
|
|
||||||
|
# gam info chromeprofilecommand <ChromeProfileCommandName>
|
||||||
|
# [formatjson]
|
||||||
|
def doInfoChromeProfileCommand():
|
||||||
|
cm = buildGAPIObject(API.CHROMEMANAGEMENT)
|
||||||
|
profileCommandName = _getChromeProfileName()
|
||||||
|
FJQC = FormatJSONQuoteChar()
|
||||||
|
while Cmd.ArgumentsRemaining():
|
||||||
|
myarg = getArgument()
|
||||||
|
FJQC.GetFormatJSON(myarg)
|
||||||
|
try:
|
||||||
|
profcmd = callGAPI(cm.customers().profiles().commands(), 'get',
|
||||||
|
throwReasons=[GAPI.INVALID_ARGUMENT, GAPI.NOT_FOUND, GAPI.PERMISSION_DENIED],
|
||||||
|
name=profileCommandName)
|
||||||
|
_showChromeProfileCommand(profcmd, FJQC)
|
||||||
|
except (GAPI.invalidArgument, GAPI.notFound, GAPI.permissionDenied) as e:
|
||||||
|
entityActionFailedExit([Ent.CHROME_PROFILE, profileCommandName], str(e))
|
||||||
|
|
||||||
|
# gam show chromeprofilecommands <ChromeProfileNameEntity>
|
||||||
|
# [formatjson]
|
||||||
|
# gam print chromeprofilecommands <ChromeProfilNameEntity> [todrive <ToDriveAttribute>*]
|
||||||
|
# [formatjson [quotechar <Character>]]
|
||||||
|
def doPrintShowChromeProfileCommands():
|
||||||
|
def _printProfileCommand(profcmd):
|
||||||
|
row = flattenJSON(profcmd, timeObjects=CHROMEPROFILECOMMAND_TIME_OBJECTS)
|
||||||
|
if not FJQC.formatJSON:
|
||||||
|
csvPF.WriteRowTitles(row)
|
||||||
|
elif csvPF.CheckRowTitles(row):
|
||||||
|
csvPF.WriteRowNoFilter({'name': profcmd['name'],
|
||||||
|
'JSON': json.dumps(cleanJSON(profcmd, timeObjects=CHROMEPROFILECOMMAND_TIME_OBJECTS),
|
||||||
|
ensure_ascii=False, sort_keys=True)})
|
||||||
|
|
||||||
|
csvPF = CSVPrintFile(['name']) if Act.csvFormat() else None
|
||||||
|
FJQC = FormatJSONQuoteChar(csvPF)
|
||||||
|
cm, parameters = _initChromeProfileNameParameters()
|
||||||
|
while Cmd.ArgumentsRemaining():
|
||||||
|
myarg = getArgument()
|
||||||
|
if csvPF and myarg == 'todrive':
|
||||||
|
csvPF.GetTodriveParameters()
|
||||||
|
elif _getChromeProfileNameParameters(myarg, parameters):
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
FJQC.GetFormatJSONQuoteChar(myarg, True)
|
||||||
|
_getChromeProfileNameEntityForCommand(cm, parameters)
|
||||||
|
count = len(parameters['profileNameList'])
|
||||||
|
i = 0
|
||||||
|
for profileName in parameters['profileNameList']:
|
||||||
|
i +=1
|
||||||
|
printGettingEntityItemForWhom(Ent.CHROME_PROFILE_COMMAND, profileName, i, count)
|
||||||
|
pageMessage = getPageMessage()
|
||||||
|
try:
|
||||||
|
profcmds = callGAPIpages(cm.customers().profiles().commands(), 'list', 'chromeBrowserProfileCommands',
|
||||||
|
pageMessage=pageMessage,
|
||||||
|
throwReasons=[GAPI.NOT_FOUND, GAPI.INVALID_ARGUMENT, GAPI.PERMISSION_DENIED],
|
||||||
|
parent=profileName, pageSize=100)
|
||||||
|
if not csvPF:
|
||||||
|
jcount = len(profcmds)
|
||||||
|
Ind.Increment()
|
||||||
|
j = 0
|
||||||
|
for profcmd in profcmds:
|
||||||
|
j += 1
|
||||||
|
_showChromeProfileCommand(profcmd, FJQC, j, jcount)
|
||||||
|
Ind.Decrement()
|
||||||
|
else:
|
||||||
|
for profcmd in profcmds:
|
||||||
|
_printProfileCommand(profcmd)
|
||||||
|
except (GAPI.notFound) as e:
|
||||||
|
entityActionFailedWarning([Ent.CHROME_PROFILE, profileName], str(e), i, count)
|
||||||
|
except (GAPI.invalidArgument, GAPI.permissionDenied) as e:
|
||||||
|
entityActionFailedExit([Ent.CHROME_PROFILE, profileName], str(e))
|
||||||
|
if csvPF:
|
||||||
|
csvPF.writeCSVfile('Chrome Profile Commands')
|
||||||
|
|
||||||
BROWSER_ORDERBY_CHOICE_MAP = {
|
BROWSER_ORDERBY_CHOICE_MAP = {
|
||||||
'annotatedassetid': 'annotated_asset_id', 'asset': 'annotated_asset_id', 'assetid': 'annotated_asset_id',
|
'annotatedassetid': 'annotated_asset_id', 'asset': 'annotated_asset_id', 'assetid': 'annotated_asset_id',
|
||||||
'annotatedlocation': 'annotated_location', 'location': 'annotated_location',
|
'annotatedlocation': 'annotated_location', 'location': 'annotated_location',
|
||||||
@@ -73269,11 +73435,11 @@ def printShowForms(users):
|
|||||||
FORM_RESPONSE_TIME_OBJECTS = {'createTime', 'lastSubmittedTime'}
|
FORM_RESPONSE_TIME_OBJECTS = {'createTime', 'lastSubmittedTime'}
|
||||||
|
|
||||||
# gam <UserTypeEntity> print formresponses <DriveFileEntity> [todrive <ToDriveAttribute>*]
|
# gam <UserTypeEntity> print formresponses <DriveFileEntity> [todrive <ToDriveAttribute>*]
|
||||||
# [filtertime.* <Time>] [filter <String>]
|
# [filter <String> (filtertime<String> <Time>)*]
|
||||||
# (addcsvdata <FieldName> <String>)*
|
# (addcsvdata <FieldName> <String>)*
|
||||||
# [countsonly|(formatjson [quotechar <Character>])]
|
# [countsonly|(formatjson [quotechar <Character>])]
|
||||||
# gam <UserTypeEntity> show formresponses <DriveFileEntity>
|
# gam <UserTypeEntity> show formresponses <DriveFileEntity>
|
||||||
# [filtertime.* <Time>] [filter <String>]
|
# [filter <String> (filtertime<String> <Time>)*]
|
||||||
# [countsonly|formatjson]
|
# [countsonly|formatjson]
|
||||||
def printShowFormResponses(users):
|
def printShowFormResponses(users):
|
||||||
csvPF = CSVPrintFile(['User', 'formId', 'responseId', 'createTime', 'lastSubmittedTime', 'respondentEmail', 'totalScore'],
|
csvPF = CSVPrintFile(['User', 'formId', 'responseId', 'createTime', 'lastSubmittedTime', 'respondentEmail', 'totalScore'],
|
||||||
@@ -73299,7 +73465,7 @@ def printShowFormResponses(users):
|
|||||||
addCSVData[k] = getString(Cmd.OB_STRING, minLen=0)
|
addCSVData[k] = getString(Cmd.OB_STRING, minLen=0)
|
||||||
else:
|
else:
|
||||||
FJQC.GetFormatJSONQuoteChar(myarg, True)
|
FJQC.GetFormatJSONQuoteChar(myarg, True)
|
||||||
if filterTimes and filter is not None:
|
if filterTimes and frfilter is not None:
|
||||||
for filterTimeName, filterTimeValue in iter(filterTimes.items()):
|
for filterTimeName, filterTimeValue in iter(filterTimes.items()):
|
||||||
frfilter = frfilter.replace(f'#{filterTimeName}#', filterTimeValue)
|
frfilter = frfilter.replace(f'#{filterTimeName}#', filterTimeValue)
|
||||||
if csvPF:
|
if csvPF:
|
||||||
@@ -76616,6 +76782,7 @@ MAIN_ADD_CREATE_FUNCTIONS = {
|
|||||||
Cmd.ARG_CHATMESSAGE: doCreateChatMessage,
|
Cmd.ARG_CHATMESSAGE: doCreateChatMessage,
|
||||||
Cmd.ARG_CHROMENETWORK: doCreateChromeNetwork,
|
Cmd.ARG_CHROMENETWORK: doCreateChromeNetwork,
|
||||||
Cmd.ARG_CHROMEPOLICYIMAGE: doCreateChromePolicyImage,
|
Cmd.ARG_CHROMEPOLICYIMAGE: doCreateChromePolicyImage,
|
||||||
|
Cmd.ARG_CHROMEPROFILECOMMAND: doCreateChromeProfileCommand,
|
||||||
Cmd.ARG_CIGROUP: doCreateCIGroup,
|
Cmd.ARG_CIGROUP: doCreateCIGroup,
|
||||||
Cmd.ARG_CONTACT: doCreateDomainContact,
|
Cmd.ARG_CONTACT: doCreateDomainContact,
|
||||||
Cmd.ARG_COURSE: doCreateCourse,
|
Cmd.ARG_COURSE: doCreateCourse,
|
||||||
@@ -76810,6 +76977,7 @@ MAIN_COMMANDS_WITH_OBJECTS = {
|
|||||||
Cmd.ARG_CHATSPACE: doInfoChatSpace,
|
Cmd.ARG_CHATSPACE: doInfoChatSpace,
|
||||||
Cmd.ARG_CHROMEAPP: doInfoChromeApp,
|
Cmd.ARG_CHROMEAPP: doInfoChromeApp,
|
||||||
Cmd.ARG_CHROMEPROFILE: doInfoChromeProfile,
|
Cmd.ARG_CHROMEPROFILE: doInfoChromeProfile,
|
||||||
|
Cmd.ARG_CHROMEPROFILECOMMAND: doInfoChromeProfileCommand,
|
||||||
Cmd.ARG_CHROMESCHEMA: doInfoChromePolicySchemas,
|
Cmd.ARG_CHROMESCHEMA: doInfoChromePolicySchemas,
|
||||||
Cmd.ARG_CIGROUP: doInfoCIGroups,
|
Cmd.ARG_CIGROUP: doInfoCIGroups,
|
||||||
Cmd.ARG_CIGROUPMEMBERS: doInfoCIGroupMembers,
|
Cmd.ARG_CIGROUPMEMBERS: doInfoCIGroupMembers,
|
||||||
@@ -76896,6 +77064,7 @@ MAIN_COMMANDS_WITH_OBJECTS = {
|
|||||||
Cmd.ARG_CHROMENEEDSATTN: doPrintShowChromeNeedsAttn,
|
Cmd.ARG_CHROMENEEDSATTN: doPrintShowChromeNeedsAttn,
|
||||||
Cmd.ARG_CHROMEPOLICY: doPrintShowChromePolicies,
|
Cmd.ARG_CHROMEPOLICY: doPrintShowChromePolicies,
|
||||||
Cmd.ARG_CHROMEPROFILE: doPrintShowChromeProfiles,
|
Cmd.ARG_CHROMEPROFILE: doPrintShowChromeProfiles,
|
||||||
|
Cmd.ARG_CHROMEPROFILECOMMAND: doPrintShowChromeProfileCommands,
|
||||||
Cmd.ARG_CHROMESCHEMA: doPrintShowChromePolicySchemas,
|
Cmd.ARG_CHROMESCHEMA: doPrintShowChromePolicySchemas,
|
||||||
Cmd.ARG_CHROMESNVALIDITY: doPrintChromeSnValidity,
|
Cmd.ARG_CHROMESNVALIDITY: doPrintChromeSnValidity,
|
||||||
Cmd.ARG_CHROMEVERSIONS: doPrintShowChromeVersions,
|
Cmd.ARG_CHROMEVERSIONS: doPrintShowChromeVersions,
|
||||||
@@ -77028,6 +77197,7 @@ MAIN_COMMANDS_WITH_OBJECTS = {
|
|||||||
Cmd.ARG_CHROMENEEDSATTN: doPrintShowChromeNeedsAttn,
|
Cmd.ARG_CHROMENEEDSATTN: doPrintShowChromeNeedsAttn,
|
||||||
Cmd.ARG_CHROMEPOLICY: doPrintShowChromePolicies,
|
Cmd.ARG_CHROMEPOLICY: doPrintShowChromePolicies,
|
||||||
Cmd.ARG_CHROMEPROFILE: doPrintShowChromeProfiles,
|
Cmd.ARG_CHROMEPROFILE: doPrintShowChromeProfiles,
|
||||||
|
Cmd.ARG_CHROMEPROFILECOMMAND: doPrintShowChromeProfileCommands,
|
||||||
Cmd.ARG_CHROMESCHEMA: doPrintShowChromePolicySchemas,
|
Cmd.ARG_CHROMESCHEMA: doPrintShowChromePolicySchemas,
|
||||||
Cmd.ARG_CHROMEVERSIONS: doPrintShowChromeVersions,
|
Cmd.ARG_CHROMEVERSIONS: doPrintShowChromeVersions,
|
||||||
Cmd.ARG_CIGROUPMEMBERS: doShowCIGroupMembers,
|
Cmd.ARG_CIGROUPMEMBERS: doShowCIGroupMembers,
|
||||||
@@ -77210,6 +77380,7 @@ MAIN_COMMANDS_OBJ_ALIASES = {
|
|||||||
Cmd.ARG_CHROMENETWORKS: Cmd.ARG_CHROMENETWORK,
|
Cmd.ARG_CHROMENETWORKS: Cmd.ARG_CHROMENETWORK,
|
||||||
Cmd.ARG_CHROMEPOLICIES: Cmd.ARG_CHROMEPOLICY,
|
Cmd.ARG_CHROMEPOLICIES: Cmd.ARG_CHROMEPOLICY,
|
||||||
Cmd.ARG_CHROMEPROFILES: Cmd.ARG_CHROMEPROFILE,
|
Cmd.ARG_CHROMEPROFILES: Cmd.ARG_CHROMEPROFILE,
|
||||||
|
Cmd.ARG_CHROMEPROFILECOMMANDS: Cmd.ARG_CHROMEPROFILECOMMAND,
|
||||||
Cmd.ARG_CHROMESCHEMAS: Cmd.ARG_CHROMESCHEMA,
|
Cmd.ARG_CHROMESCHEMAS: Cmd.ARG_CHROMESCHEMA,
|
||||||
Cmd.ARG_CIGROUPS: Cmd.ARG_CIGROUP,
|
Cmd.ARG_CIGROUPS: Cmd.ARG_CIGROUP,
|
||||||
Cmd.ARG_CIGROUPSMEMBERS: Cmd.ARG_CIGROUPMEMBERS,
|
Cmd.ARG_CIGROUPSMEMBERS: Cmd.ARG_CIGROUPMEMBERS,
|
||||||
|
|||||||
@@ -485,6 +485,8 @@ class GamCLArgs():
|
|||||||
ARG_CHROMEPOLICIES = 'chromepolicies'
|
ARG_CHROMEPOLICIES = 'chromepolicies'
|
||||||
ARG_CHROMEPROFILE = 'chromeprofile'
|
ARG_CHROMEPROFILE = 'chromeprofile'
|
||||||
ARG_CHROMEPROFILES = 'chromeprofiles'
|
ARG_CHROMEPROFILES = 'chromeprofiles'
|
||||||
|
ARG_CHROMEPROFILECOMMAND = 'chromeprofilecommand'
|
||||||
|
ARG_CHROMEPROFILECOMMANDS = 'chromeprofilecommands'
|
||||||
ARG_CHROMESCHEMA = 'chromeschema'
|
ARG_CHROMESCHEMA = 'chromeschema'
|
||||||
ARG_CHROMESCHEMAS = 'chromeschemas'
|
ARG_CHROMESCHEMAS = 'chromeschemas'
|
||||||
ARG_CHROMESNVALIDITY = 'chromesnvalidity'
|
ARG_CHROMESNVALIDITY = 'chromesnvalidity'
|
||||||
@@ -855,7 +857,8 @@ class GamCLArgs():
|
|||||||
OB_CHAT_SPACE = 'ChatSpace'
|
OB_CHAT_SPACE = 'ChatSpace'
|
||||||
OB_CHAT_SPACE_LIST = 'ChatSpaceList'
|
OB_CHAT_SPACE_LIST = 'ChatSpaceList'
|
||||||
OB_CHAT_THREAD = 'ChatThread'
|
OB_CHAT_THREAD = 'ChatThread'
|
||||||
OB_CHROMEPROFILE_ID = 'ChromeProfileId'
|
OB_CHROMEPROFILE_NAME = 'ChromeProfileName'
|
||||||
|
OB_CHROMEPROFILE_NAME_LIST = 'ChromeProfileNameList'
|
||||||
OB_CHROME_VERSION = 'ChromeVersion'
|
OB_CHROME_VERSION = 'ChromeVersion'
|
||||||
OB_CIDR_NETMASK = 'CIDRnetmask'
|
OB_CIDR_NETMASK = 'CIDRnetmask'
|
||||||
OB_CIGROUP_ALIAS_LIST = "CIGroupAliasList"
|
OB_CIGROUP_ALIAS_LIST = "CIGroupAliasList"
|
||||||
|
|||||||
@@ -111,6 +111,7 @@ class GamEntity():
|
|||||||
CHROME_POLICY_IMAGE = 'cpim'
|
CHROME_POLICY_IMAGE = 'cpim'
|
||||||
CHROME_POLICY_SCHEMA = 'cpsc'
|
CHROME_POLICY_SCHEMA = 'cpsc'
|
||||||
CHROME_PROFILE = 'cpro'
|
CHROME_PROFILE = 'cpro'
|
||||||
|
CHROME_PROFILE_COMMAND = 'cpcm'
|
||||||
CHROME_RELEASE = 'crel'
|
CHROME_RELEASE = 'crel'
|
||||||
CHROME_VERSION = 'cver'
|
CHROME_VERSION = 'cver'
|
||||||
CLASSIFICATION_LABEL = 'dlab'
|
CLASSIFICATION_LABEL = 'dlab'
|
||||||
@@ -462,6 +463,7 @@ class GamEntity():
|
|||||||
CHROME_POLICY_IMAGE: ['Chrome Policy Images', 'Chrome Policy Image'],
|
CHROME_POLICY_IMAGE: ['Chrome Policy Images', 'Chrome Policy Image'],
|
||||||
CHROME_POLICY_SCHEMA: ['Chrome Policy Schemas', 'Chrome Policy Schema'],
|
CHROME_POLICY_SCHEMA: ['Chrome Policy Schemas', 'Chrome Policy Schema'],
|
||||||
CHROME_PROFILE: ['Chrome Profiles', 'Chrome Profile'],
|
CHROME_PROFILE: ['Chrome Profiles', 'Chrome Profile'],
|
||||||
|
CHROME_PROFILE_COMMAND: ['Chrome Profile Commands', 'Chrome Profile Command'],
|
||||||
CHROME_RELEASE: ['Chrome Releases', 'Chrome Release'],
|
CHROME_RELEASE: ['Chrome Releases', 'Chrome Release'],
|
||||||
CHROME_VERSION: ['Chrome Versions', 'Chrome Version'],
|
CHROME_VERSION: ['Chrome Versions', 'Chrome Version'],
|
||||||
CLASSIFICATION_LABEL: ['Classification Labels', 'Classification Label'],
|
CLASSIFICATION_LABEL: ['Classification Labels', 'Classification Label'],
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
[metadata]
|
[metadata]
|
||||||
name = GAM for Google Workspace
|
name = GAM for Google Workspace
|
||||||
version = attr: gam.var.GAM_VERSION
|
#version = attr: gam.var.GAM_VERSION
|
||||||
|
version = 7.13.01
|
||||||
description = Command line management for Google Workspaces
|
description = Command line management for Google Workspaces
|
||||||
long_description = file: readme.md
|
long_description = file: readme.md
|
||||||
long_description_content_type = text/markdown
|
long_description_content_type = text/markdown
|
||||||
|
|||||||
@@ -2,9 +2,11 @@
|
|||||||
- [API documentation](#api-documentation)
|
- [API documentation](#api-documentation)
|
||||||
- [Introduction](#introduction)
|
- [Introduction](#introduction)
|
||||||
- [Definitions](#definitions)
|
- [Definitions](#definitions)
|
||||||
- [Delete Chrome profiles](#delete-chrome-profiles)
|
- [Delete Chrome Profiles](#delete-chrome-profiles)
|
||||||
- [Display Chrome profiles](#display-chrome-profiles)
|
- [Display Chrome Profiles](#display-chrome-profiles)
|
||||||
- [Profile Query Searchable Fields](#profile-query-searchable-fields)
|
- [Profile Query Searchable Fields](#profile-query-searchable-fields)
|
||||||
|
- [Create a Chrome Profile command](#create-a-chrome-profile-command)
|
||||||
|
- [Display Chrome Profile commands](#display-chrome-profile-commands)
|
||||||
|
|
||||||
## Introduction
|
## Introduction
|
||||||
These features were added in version 7.01.00.
|
These features were added in version 7.01.00.
|
||||||
@@ -21,13 +23,15 @@ Follow instructions at: Turn on managed profile reporting
|
|||||||
|
|
||||||
## API documentation
|
## API documentation
|
||||||
* [Chrome Management API - Profiles](https://developers.google.com/chrome/management/reference/rest/v1/customers.profiles)
|
* [Chrome Management API - Profiles](https://developers.google.com/chrome/management/reference/rest/v1/customers.profiles)
|
||||||
|
* [Chrome Management API - Profile Commands](https://developers.google.com/chrome/management/reference/rest/v1/customers.profiles.commands)
|
||||||
* [Turn on Chrome Browser and Profile Reporting](https://support.google.com/chrome/a/answer/9301421)
|
* [Turn on Chrome Browser and Profile Reporting](https://support.google.com/chrome/a/answer/9301421)
|
||||||
|
|
||||||
## Definitions
|
## Definitions
|
||||||
```
|
```
|
||||||
<CustomerID> ::= <String>
|
<CustomerID> ::= <String>
|
||||||
<ChromeProfilePermanentID> ::= <String>
|
<ChromeProfilePermanentID> ::= <String>
|
||||||
<ChromeProfileName> ::= customers/<CustomerID>/profiles/<ChromeProfilePermanentID>
|
<ChromeProfileName> ::= customers/<CustomerID>/profiles/<ChromeProfilePermanentID> | <ChromeProfilePermanentID>
|
||||||
|
<ChromeProfileCommandName> ::= <ChomeProfileName>/commands/<String>
|
||||||
|
|
||||||
<ChromeProfileFieldName> ::=
|
<ChromeProfileFieldName> ::=
|
||||||
affiliationstate|
|
affiliationstate|
|
||||||
@@ -89,7 +93,7 @@ Select the fields to be displayed:
|
|||||||
* `<ChromeProfileFieldName>* [fields <ChromeProfileFieldNameList>]` - Display a selected list of fields
|
* `<ChromeProfileFieldName>* [fields <ChromeProfileFieldNameList>]` - Display a selected list of fields
|
||||||
|
|
||||||
By default, Gam displays the information as an indented list of keys and values:
|
By default, Gam displays the information as an indented list of keys and values:
|
||||||
- `formatjson` - Display the fields in JSON format.
|
* `formatjson` - Display the fields in JSON format.
|
||||||
|
|
||||||
```
|
```
|
||||||
gam show chromeprofiles
|
gam show chromeprofiles
|
||||||
@@ -110,14 +114,14 @@ The `filtertime<String> <Time>` value replaces the string `#fiktertime<String>#`
|
|||||||
The characters following `filtertime` can be any combination of lowercase letters and numbers.
|
The characters following `filtertime` can be any combination of lowercase letters and numbers.
|
||||||
|
|
||||||
By default, Gam displays the information as an indented list of keys and values:
|
By default, Gam displays the information as an indented list of keys and values:
|
||||||
- `formatjson` - Display the fields in JSON format.
|
* `formatjson` - Display the fields in JSON format.
|
||||||
|
|
||||||
```
|
```
|
||||||
gam print chromeprofiles [todrive <ToDriveAttribute>*]
|
gam print chromeprofiles [todrive <ToDriveAttribute>*]
|
||||||
[filtertime.* <Time>] [filter <String>]
|
[filtertime.* <Time>] [filter <String>]
|
||||||
[orderby <ChromeProfileOrderByFieldName> [ascending|descending]]
|
[orderby <ChromeProfileOrderByFieldName> [ascending|descending]]
|
||||||
<ChromeProfileFieldName>* [fields <ChromeProfileFieldNameList>]
|
<ChromeProfileFieldName>* [fields <ChromeProfileFieldNameList>]
|
||||||
[[formatjson [quotechar <Character>]]
|
[formatjson [quotechar <Character>]]
|
||||||
```
|
```
|
||||||
|
|
||||||
Use these options to select Chrome profiles; if none are chosen, all Chrome profiles in the account are selected:
|
Use these options to select Chrome profiles; if none are chosen, all Chrome profiles in the account are selected:
|
||||||
@@ -192,4 +196,39 @@ gam print chromeprofiles filter "lastPolicySyncTime >= \"#filtertime1#\" lastPol
|
|||||||
Print information about Chrome profiles on Windows.
|
Print information about Chrome profiles on Windows.
|
||||||
```
|
```
|
||||||
gam print chromeprofiles filter "osPlatformType=WINDOWS"
|
gam print chromeprofiles filter "osPlatformType=WINDOWS"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Create a Chrome Profile command
|
||||||
|
```
|
||||||
|
gam create chromeprofilecommand <ChromeProfileName>
|
||||||
|
[clearcache [<Boolean>]] [clearcookies [<Boolean>]]
|
||||||
|
[formatjson]
|
||||||
|
```
|
||||||
|
## Display Chrome Profile commands
|
||||||
|
```
|
||||||
|
gam info chromeprofilecommand <ChromeProfileCommandName>
|
||||||
|
[formatjson]
|
||||||
|
```
|
||||||
|
By default, Gam displays the information as an indented list of keys and values:
|
||||||
|
* `formatjson` - Display the fields in JSON format.
|
||||||
|
|
||||||
|
```
|
||||||
|
gam show chromeprofilecommands <ChromeProfileName>
|
||||||
|
[formatjson]
|
||||||
|
```
|
||||||
|
|
||||||
|
By default, Gam displays the information as an indented list of keys and values:
|
||||||
|
* `formatjson` - Display the fields in JSON format.
|
||||||
|
```
|
||||||
|
gam print chromeprofilecommands <ChromeProfileName> [todrive <ToDriveAttribute>*]
|
||||||
|
[formatjson [quotechar <Character>]]
|
||||||
|
```
|
||||||
|
By default, Gam displays the information as columns of fields; the following option causes the output to be in JSON format:
|
||||||
|
* `formatjson` - Display the fields in JSON format.
|
||||||
|
|
||||||
|
By default, when writing CSV files, Gam uses a quote character of double quote `"`. The quote character is used to enclose columns that contain
|
||||||
|
the quote character itself, the column delimiter (comma by default) and new-line characters. Any quote characters within the column are doubled.
|
||||||
|
When using the `formatjson` option, double quotes are used extensively in the data resulting in hard to read/process 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.
|
||||||
|
|
||||||
|
|||||||
@@ -10,6 +10,20 @@ 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.13.00
|
||||||
|
|
||||||
|
Added commands that send remote commands to Chrome browser profiles and display the results;
|
||||||
|
at the moment, these commands can clear the browser cache and cookies.
|
||||||
|
|
||||||
|
* See: https://github.com/GAM-team/GAM/wiki/Chrome-Profile-Management#create-a-chrome-profile-command
|
||||||
|
|
||||||
|
### 7.12.02
|
||||||
|
|
||||||
|
Updated `gam print users` to handle the following error:
|
||||||
|
```
|
||||||
|
ERROR: 503: serviceNotAvailable - The service is currently unavailable
|
||||||
|
```
|
||||||
|
|
||||||
### 7.12.01
|
### 7.12.01
|
||||||
|
|
||||||
Added support for `plan free` in `gam create resoldsubscription`.
|
Added support for `plan free` in `gam create resoldsubscription`.
|
||||||
|
|||||||
@@ -251,7 +251,7 @@ writes the credentials into the file oauth2.txt.
|
|||||||
admin@server:/Users/admin$ rm -f /Users/admin/GAMConfig/oauth2.txt
|
admin@server:/Users/admin$ rm -f /Users/admin/GAMConfig/oauth2.txt
|
||||||
admin@server:/Users/admin$ gam version
|
admin@server:/Users/admin$ 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/admin/GAMConfig/gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: /Users/admin/GAMConfig/oauth2.txt, Not Found
|
||||||
GAM 7.12.01 - https://github.com/GAM-team/GAM - pyinstaller
|
GAM 7.13.00 - https://github.com/GAM-team/GAM - pyinstaller
|
||||||
GAM Team <google-apps-manager@googlegroups.com>
|
GAM Team <google-apps-manager@googlegroups.com>
|
||||||
Python 3.13.5 64-bit final
|
Python 3.13.5 64-bit final
|
||||||
MacOS Sequoia 15.5 x86_64
|
MacOS Sequoia 15.5 x86_64
|
||||||
@@ -989,7 +989,7 @@ 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.12.01 - https://github.com/GAM-team/GAM - pythonsource
|
GAM 7.13.00 - https://github.com/GAM-team/GAM - pythonsource
|
||||||
GAM Team <google-apps-manager@googlegroups.com>
|
GAM Team <google-apps-manager@googlegroups.com>
|
||||||
Python 3.13.5 64-bit final
|
Python 3.13.5 64-bit final
|
||||||
Windows-10-10.0.17134 AMD64
|
Windows-10-10.0.17134 AMD64
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
Print the current version of Gam with details
|
Print the current version of Gam with details
|
||||||
```
|
```
|
||||||
gam version
|
gam version
|
||||||
GAM 7.12.01 - https://github.com/GAM-team/GAM - pyinstaller
|
GAM 7.13.00 - https://github.com/GAM-team/GAM - pyinstaller
|
||||||
GAM Team <google-apps-manager@googlegroups.com>
|
GAM Team <google-apps-manager@googlegroups.com>
|
||||||
Python 3.13.5 64-bit final
|
Python 3.13.5 64-bit final
|
||||||
MacOS Sequoia 15.5 x86_64
|
MacOS Sequoia 15.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
|
||||||
GAM 7.12.01 - https://github.com/GAM-team/GAM - pyinstaller
|
GAM 7.13.00 - https://github.com/GAM-team/GAM - pyinstaller
|
||||||
GAM Team <google-apps-manager@googlegroups.com>
|
GAM Team <google-apps-manager@googlegroups.com>
|
||||||
Python 3.13.5 64-bit final
|
Python 3.13.5 64-bit final
|
||||||
MacOS Sequoia 15.5 x86_64
|
MacOS Sequoia 15.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
|
||||||
GAM 7.12.01 - https://github.com/GAM-team/GAM - pyinstaller
|
GAM 7.13.00 - https://github.com/GAM-team/GAM - pyinstaller
|
||||||
GAM Team <google-apps-manager@googlegroups.com>
|
GAM Team <google-apps-manager@googlegroups.com>
|
||||||
Python 3.13.5 64-bit final
|
Python 3.13.5 64-bit final
|
||||||
MacOS Sequoia 15.5 x86_64
|
MacOS Sequoia 15.5 x86_64
|
||||||
@@ -64,7 +64,7 @@ MacOS High Sierra 10.13.6 x86_64
|
|||||||
Path: /Users/Admin/bin/gam7
|
Path: /Users/Admin/bin/gam7
|
||||||
Version Check:
|
Version Check:
|
||||||
Current: 5.35.08
|
Current: 5.35.08
|
||||||
Latest: 7.12.01
|
Latest: 7.13.00
|
||||||
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.12.01
|
7.13.00
|
||||||
```
|
```
|
||||||
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.12.01 - https://github.com/GAM-team/GAM
|
GAM 7.13.00 - https://github.com/GAM-team/GAM
|
||||||
GAM Team <google-apps-manager@googlegroups.com>
|
GAM Team <google-apps-manager@googlegroups.com>
|
||||||
Python 3.13.5 64-bit final
|
Python 3.13.5 64-bit final
|
||||||
MacOS Sequoia 15.5 x86_64
|
MacOS Sequoia 15.5 x86_64
|
||||||
|
|||||||
Reference in New Issue
Block a user