Many changes: Gmail API, CSV files, print commands

This commit is contained in:
Ross Scroggs
2016-07-29 17:52:42 -07:00
parent 0dc8accb64
commit f6f15c8801
3 changed files with 3911 additions and 2674 deletions

View File

@ -42,8 +42,7 @@ If an item contains spaces, it should be surrounded by " or '.
<Date> ::= <Year>-<Month>-<Day>
<DateTime> ::= <Year>-<Month>-<Day>(<Space>|T)<Hour>:<Minute>
<Time> ::= <Year>-<Month>-<Day>(<Space>|T)<Hour>:<Minute>[:<Second>[.<MilliSeconds>[Z]]]
<PrintJobAge> ::= <Number>(m|h|d)
<REPattern> ::= <Python Regular Expression, see: https://docs.python.org/2/library/re.html>
<RegularExpression> ::= <Python Regular Expression, see: https://docs.python.org/2/library/re.html>
<Tag> ::= <String>
<UniqueID> ::= uid:<String>
@ -58,7 +57,7 @@ If an item contains spaces, it should be surrounded by " or '.
<CourseID> ::= <Number>|d:<CourseAlias>
<CourseParticipantType> ::= teacher|teachers|student|students
<CrOSID> ::= <String>
<CrOSItem> ::= <CrOSID>|(query:<Query>)|(query <Query>)
<CrOSItem> ::= <CrOSID>|(query:<QueryCrOS>)|(query <QueryCrOS>)
<DomainAlias> ::= <String>
<DriveFileACLRole> :: =commenter|editor|owner|reader|writer
<EventColorIndex> ::== <Number in range 1-11>
@ -75,25 +74,36 @@ If an item contains spaces, it should be surrounded by " or '.
<FieldName> ::= <String>
<FileName> ::= <String>
<FileNamePattern> ::= <String>
<FilterID> ::= <Sttring>
<FolderName> ::= <String>
<GroupItem> ::= <EmailAddress>|<UniqueID>|<String>
<HostName> ::= <String>
<Key> ::= <String>
<LabelID> ::= <String>
<LabelName> ::= <String>
<LabelReplacement> ::= <String>
<Marker> ::= <String>
<MobileID> ::= <String>
<MobileItem> ::= <MobileID>|(query:<Query>)|(query <Query>)
<MobileItem> ::= <MobileID>|(query:<QueryMobile>)|(query <QueryMobile>)
<Name> ::= <String>
<NotificationID> ::= <String>
<OrgUnitID> ::= <String>
<OrgUnitPath> ::= /|(/<String)+
<PermissionID> ::= id:<String>|<EmailAddress>|anyone|anyonewithlink
<PrinterID> ::= <String>
<PrintJobAge> ::= <Number>(m|h|d)
<PrintJobID> ::= <String>
<PrintJobStatus> ::= done|error|held|in_progress|queued|submitted
<PropertyKey> ::= <String>
<PropertyValue> ::= <String>
<Query> ::= <String>
<QueryContact> ::= <String> See: https://developers.google.com/google-apps/contacts/v3/reference#contacts-query-parameters-reference
<QueryCrOS> ::= <String> See: https://support.google.com/chrome/a/answer/1698333?hl=en
<QueryDriveFile> :: = <String> See: https://developers.google.com/drive/v2/web/search-parameters
<QueryGmail> ::= <String> See: https://support.google.com/mail/answer/7190
<QueryMobile> ::= <String> See: https://support.google.com/a/answer/1408863?hl=en#search
<QueryPrinter> ::= <String> See: https://developers.google.com/cloud-print/docs/appInterfaces#search
<QueryPrintJob> ::= <String> See: https://developers.google.com/cloud-print/docs/appInterfaces#parameters_3
<QueryUser> :: = <String> See: https://developers.google.com/admin-sdk/directory/v1/guides/search-users
<RequestID> ::= <String>
<ResourceID> ::= <String>
<RoleItem> ::= <UniqueID>|<String>
@ -234,6 +244,9 @@ If an item contains spaces, it should be surrounded by " or '.
<MobileOrderByFieldName> ::=
deviceid|email|lastsync|model|name|os|status|type
<OrgUnitFieldName> ::=
description|id|inherit|name|orgunitpath|parent|parentid|inherit
<PrintJobOrderByFieldName> ::=
create_time|status|title
@ -243,7 +256,7 @@ If an item contains spaces, it should be surrounded by " or '.
changepasswordatnextlogin|changepassword|
creationtime|
deletiontime|
email|emails|
email|emails|otheremail|otheremails|
externalids|externalid|
familyname|firstname|fullname|givenname|lastname|name|
id|
@ -254,6 +267,7 @@ If an item contains spaces, it should be surrounded by " or '.
ismailboxsetup|
lastlogintime|
noneditablealiases|aliases|nicknames|
notes|note|
organizations|organization|
orgunitpath|org|ou|
phones|phone|
@ -261,6 +275,7 @@ If an item contains spaces, it should be surrounded by " or '.
relations|relation|
suspended|
thumbnailphotourl|photo|photourl|
websites|website|
custom all|<SchemaNameList>
<UserOrderByFieldName> ::=
@ -277,6 +292,7 @@ If an item contains spaces, it should be surrounded by " or '.
<EmailAddressList> ::= '<EmailAddress>(,<EmailAddress>)*'
<EventIDList> ::= '<EventID>(,<EventID>)*'
<FileFormatList> ::= '<FileFormat>(,<FileFormat)*'
<FilterIDList> ::= '<FilterID>(,<FilterID>)*'
<GroupFieldNameList> ::= '<GroupFieldName(,<GroupFieldName>)*'
<GroupSettingsFieldNameList> ::= '<GroupSettingsFieldName(,<GroupSettingsFieldName>)*'
<GroupList> ::= '<GroupItem>(,<GroupItem>)*'
@ -311,7 +327,7 @@ If an item contains spaces, it should be surrounded by " or '.
(file <FileName>)|
(csvfile <FileName>:<FieldName>)|
(license|licenses|licence|licences <SKUIDList>)|
(query <Query>)
(query <QueryUser>)
# Item attributes
@ -410,9 +426,10 @@ If an item contains spaces, it should be surrounded by " or '.
(externalid|externalids clear|(account|customer|network|organization|<String> <String>))|
(firstname|givenname <String>)|
(gal|includeinglobaladdresslist <Boolean>)|
(im|ims clear|(type work|home|other|(custom <String>) protocol aim|gtalk|icq|jabber|msn|net_meeting|qq|skype|yahoo|(custom_protocol <String>) [primary] <String>))|
(im|ims clear|(type work|home|other|(custom <String>) protocol aim|gtalk|icq|jabber|msn|net_meeting|qq|skype|yahoo|(custom_protocol <String>) <String> [notprimary|primary]))|
(ipwhitelisted <Boolean>)|
(lastname|familyname <String>)|
(note|notes clear|([text_plain|text_html] <String>|(file <FileName>)))|
(organization|organizations clear|([type domain_only|school|unknown|work] [customtype <String>] [name <String>] [title <String>] [department <String>] [symbol <String>]
[costcenter <String>] [location <String>] [description <String>] [domain <String>] notprimary|primary))|
(org|ou|orgunitpath <OrgUnitPath>)
@ -421,6 +438,7 @@ If an item contains spaces, it should be surrounded by " or '.
[value <String>] notprimary|primary))|
(relation|relations clear|(spouse|child|mother|father|parent|brother|sister|friend|relative|domestic_partner|manager|assistant|referred_by|partner|<String> <String>))|
(suspended <Boolean>)|
(website|websites clear|(home_page|blog|profile|work|home|other|ftp|reservations|app_install_page|<String> <URL> [notprimary|primary]))|
(<SchemaName>.<FieldName> [multivalued|multivalue|value] <String>)
@ -428,7 +446,7 @@ gam version
gam help
gam batch <FileName>|- [charset <Charset>]
gam csv <FileName>|- [charset <Charset>] [matchfield <FieldName> <PythonRegularExpression>] gam <GAM argument list>
gam csv <FileName>|- [charset <Charset>] [matchfield <FieldName> <RegularExpression>] gam <GAM argument list>
gam oauth|oauth2 create|request
gam oauth|oauth2 delete|revoke
@ -457,6 +475,8 @@ gam print domains [todrive]
gam create domainalias|aliasdomain <DomainAlias> <DomainName>
gam delete domainalias|aliasdomain <DomainAlias>
gam info domainalias|aliasdomain <DomainAlias>
gam print domainaliases|aliasdomains [todrive]
gam info customer
gam update customer [adminsecondaryemail|alternateemail <EmailAddress>] [language <LanguageCode] [phone|phonenumber <String>]
@ -480,7 +500,7 @@ gam update org|ou <OrgUnitPath> [name <Name>] [description <String>] [parent <Or
gam update org|ou <OrgUnitPath> add|move <CrOSTypeEntity>|<UserTypeEntity>
gam delete org|ou <OrgUnitPath>
gam info org|ou <OrgUnitPath> [nousers] [children|child]
gam print orgs|ous [todrive] [toplevelonly] [from_parent <OrgUnitPath>] [allfields|([name] [description] [parent] [id] [parentid] [inherit])]
gam print orgs|ous [todrive] [toplevelonly] [from_parent <OrgUnitPath>] [allfields|<OrgUnitFieldName>*]
gam create alias|nickname <EmailAddress> user|group|target <UniqueID>|<EmailAddress>
gam update alias|nickname <EmailAddress> user|group|target <UniqueID>|<EmailAddress>
@ -494,7 +514,7 @@ gam audit activity delete <EmailAddress> <RequestID>
gam audit activity download <EmailAddress> <RequestID>
gam audit activity status [<EmailAddress> <RequestID>]
gam audit export request <EmailAddress> [begin <DateTime>] [end <DateTime>] [search <Query>] [headersonly] [includedeleted]
gam audit export request <EmailAddress> [begin <DateTime>] [end <DateTime>] [search <QueryGmail>] [headersonly] [includedeleted]
gam audit export delete <EmailAddress> <RequestID>
gam audit export download <EmailAddress> <RequestID>
gam audit export status [<EmailAddress> <RequestID>]
@ -513,22 +533,40 @@ gam calendar <CalendarItem> addevent <EventAttributes>+
gam calendar <CalendarItem> wipe
gam update cros <CrOSItem> <CrOSAttributes>+
gam info cros <CrOSItem>
gam print cros [todrive] [query <Query>] [basic|full] [nolists|recentusers|timeranges] [listlimit <Number>]
[orderby <CrOSOrderByFieldName> [ascending|descending]]
gam <CrOSTypeEntity> update <CrOSAttributes>+
gam info cros <CrOSItem> [nolists] [listlimit <Number>]
[basic|full|allfields] <CrOSFieldName>* [fields <CrOSFieldNameList>]
gam print cros [todrive] [query <QueryCrOS>]
[orderby <CrOSOrderByFieldName> [ascending|descending]] [nolists] [listlimit <Number>]
[basic|full|allfields] <CrOSFieldName>* [fields <CrOSFieldNameList>]
gam <CrOSTypeEntity> print
Summary of printing:
gam print cros
Prints a header row and deviceId for all CrOS devices.
gam <CrOSTypeEntity> print cros
Prints no header row and deviceId for specified CrOS devices
gam print cros ... basic|full
Prints a header row and selected fields for specified CrOS devices.
The basic argument yields these column headers: deviceId,annotatedAssetId,annotatedLocation,annotatedUser,lastSync,notes,serialNumber,status
The full argument yields all column headers including two headers, recentUsers and activeTimeRanges,
that repeat with two subvalues each, yielding a large number of columns that make the output hard to process.
The nolists argument suppresses these two headers; if you want these headers in a more manageable form use the following arguments.
The listlimit <Number> argument limits the number of repetitions to <Number>. If <Number> equals zero, there is no limit.
If recentusers is specified as a field, each pair of values for recentUsers is put on a separate row with all of the other headers.
If timeranges is specified as a field, each pair of values for activeTimeRanges is put on a separate row with all of the other headers.
gam update mobile <MobileItem> <MobileAttributes>+
gam delete mobile <MobileItem>
gam info mobile <MobileItem>
gam print mobile [todrive] [query <Query>]
gam print mobile [todrive] [query <QueryMobile>]
[orderby <MobileOrderByFieldName> [ascending|descending]]
gam create group <EmailAddress> <GroupAttributes>*
gam update group <GroupItem> [admincreated <Boolean>] [email <EmailAddress>] <GroupAttributes>*
gam update group <GroupItem> add [owner|manager|member] <UserTypeEntity>
gam update group <GroupItem> remove [owner|manager|member] <UserTypeEntity>
gam update group <GroupItem> delete|remove [owner|manager|member] <UserTypeEntity>
gam update group <GroupItem> sync [owner|manager|member] <UserTypeEntity>
gam update group <GroupItem> update [owner|manager|member] <UserTypeEntity>
gam delete group <GroupItem>
@ -537,9 +575,11 @@ gam update group <GroupItem> clear [owner] [manager] [member]
gam print groups [todrive] ([domain <DomainName>] [member <UserItem>])
[maxresults <Number>] [delimiter <String>]
[members] [owners] [managers] <GroupFieldName>* [settings]
[members] [owners] [managers] [settings] <GroupFieldName>* [fields <GroupFieldNameList>|<GroupSettingsFieldNameList>]
gam print group-members|groups-members [todrive] ([domain <DomainName>] [member <UserItem>])|[group <GroupItem>] [membernames] [fields <MembersFieldNameList>]
gam print group-members|groups-members [todrive] ([domain <DomainName>] [member <UserItem>])|[group <GroupItem>]
[membernames] [fields <MembersFieldNameList>]
gam print license|licenses|licence|licences [todrive] [products|product <ProductIDList>] [skus|sku <SKUIDList>]
@ -553,23 +593,30 @@ gam delete resource <ResourceID>
gam info resource <ResourceID>
gam print resources [todrive] [allfields] [id] [description] [email] [type]
gam create schema|schemas <SchemaName> <SchemaFieldDefinition>*
gam update schema <SchemaName> <SchemaFieldDefinition>*
gam create schema|schemas <SchemaName> <SchemaFieldDefinition>+
gam update schema <SchemaName> <SchemaFieldDefinition>+
gam delete schema <SchemaName>
gam info schema <SchemaName>
gam show schema|schemas
gam print schema|schemas
gam print tokens|token [todrive] [<UserTypeEntity>]
gam create user <EmailAddress> <UserAttrubutes>*
gam update user <UserItem> <UserAttributes>+
gam delete user <UserItem>
gam undelete user <UserItem> [org|ou <OrgUnitPath>]
gam info user [<UserItem>] [noaliases] [nogroups] [nolicenses|nolicences] [noschemas] [schemas <SchemaNameList>] [userview] [skus|sku <SKUIDList>]
gam print users [todrive] ([domain <DomainName>] [query <Query>] [deleted_only|only_deleted])
[groups] [license|licenses|licence|licences] [emailpart|emailparts|username]
gam print users [todrive] ([domain <DomainName>] [query <QueryUser>] [deleted_only|only_deleted])
[groups] [license|licenses|licence|licences] [emailpart|emailparts|username]
[orderby <UserOrderByFieldName> [ascending|descending]] [userview]
[allfields | <UserFieldName>*]
[basic|full|allfields | <UserFieldName>* | fields <UserFieldNameList>]
gam <UserTypeEntity> print
Summary of printing:
gam print users
Prints a header row and primaryEmail for all users.
gam <UserTypeEntity> print users
Prints no header row and primaryEmail for specified users
gam create verify|verification <DomainName>
gam update verify|verification <DomainName> cname|txt|text|site|file
@ -584,7 +631,7 @@ gam print courses [todrive] [teacher] [student] [alias|aliases]
gam course <CourseID> add alias <CourseAlias>
gam course <CourseID> delete alias <CourseAlias>
gam course <CourseID> add teachers|students <UserItem>
gam course <CourseID> delete teachers|students <UserItem>
gam course <CourseID> delete|remove teachers|students <UserItem>
gam course <CourseID> sync teachers|students <UserTypeEntity>
gam print course-participants [todrive](course <CourseID>)* [teacher] [student] [show all|students|teachers]
@ -592,7 +639,7 @@ gam printer register
gam update printer <PrinterID> <PrinterAttributes>+
gam delete printer <PrinterID>
gam info printer <PrinterID> [everything]
gam print printers [todrive] [query <Query>] [type <String>] [status <String>] [extrafields <String>]
gam print printers [todrive] [query <QueryPrinter>] [type <String>] [status <String>] [extrafields <String>]
gam printer <PrinterID> add user|manager|owner <EmailAddress>|[domain:]<DomainName>|public
gam printer <PrinterID> delete <EmailAddress>|[domain:]<DomainName>|public
@ -602,15 +649,15 @@ gam printjob <PrintJobID> delete
gam printjob <PrintJobID> resubmit <PrinterID>
gam printjob <PrinterID>|any fetch
[olderthan|newerthan <PrintJobAge>] [query <Query>]
[status done|error|held|in_progress|queued|submitted]
[olderthan|newerthan <PrintJobAge>] [query <QueryPrintJob>]
[status <PrintJobStatus>]
[orderby <PrintJobOrderByFieldName> [ascending|descending]]
[owner|user <EmailAddress>]
[limit <Number>]
[limit <Number>] [drivedir|(targetfolder <FilePath>)]
gam printjob <PrinterID> submit <FileName>|<URL> [name|title <String>] (tag <String>)*
gam print printjobs [todrive] [printer|printerid <PrinterID>]
[olderthan|newerthan <PrintJobAge>] [query <Query>]
[status done|error|held|in_progress|queued|submitted]
[olderthan|newerthan <PrintJobAge>] [query <QueryPrintJob>]
[status <PrintJobStatus>]
[orderby <PrintJobOrderByFieldName> [ascending|descending]]
[owner|user <EmailAddress>]
[limit <Number>]
@ -626,23 +673,24 @@ gam <UserTypeEntity> add calendar <CalendarItem> <CalendarAttributes>*
gam <UserTypeEntity> update calendar <CalendarItem> <CalendarAttributes>+
gam <UserTypeEntity> delete|del calendar <CalendarItem>
gam <UserTypeEntity> show calendars
gam <UserTypeEntity> info calendar <CalendarItem>|primary
gam <UserTypeEntity> print calendars [todrive]
gam <UserTypeEntity> show calsettings
gam <UserTypeEntity> update calattendees csv <FileName> [dryrun] [start <Date>] [end <Date>] [allevents]
gam <UserTypeEntity> transfer seccals <UserItem> [keepuser]
gam <UserTypeEntity> show driveactivity [todrive] [fileid <DriveFileID>] [folderid <DriveFolderID>]
gam <UserTypeEntity> show drivesettings [todrive]
gam <UserTypeEntity> print|show driveactivity [todrive] [fileid <DriveFileID>] [folderid <DriveFolderID>]
gam <UserTypeEntity> print|show drivesettings [todrive]
gam <UserTypeEntity> print|show filelist [todrive] [query <QueryDriveFile>] [allfields|<DriveFieldName>*]
gam <UserTypeEntity> show fileinfo <DriveFileID> [allfields|<DriveFieldName>*]
gam <UserTypeEntity> show filerevisions <DriveFileID>
gam <UserTypeEntity> show filelist [todrive] [query <Query>] [allfields|<DriveFieldName>*]
gam <UserTypeEntity> show filetree
gam <UserTypeEntity> add drivefile [drivefilename <DriveFileName>] <DriveFileAddAttributes>*
gam <UserTypeEntity> update drivefile (id <DriveFileID)|(drivefilename <DriveFileName>)|(query <Query) [copy] [newfilename <DriveFileName>] <DriveFileUpdateAttributes>*
gam <UserTypeEntity> get drivefile (id <DriveFileID>)|(query <Query>) [format <FileFormatList>] [targetfolder <FilePath>] [revision <Number>]
gam <UserTypeEntity> delete|del drivefile <DriveFileID>|<DriveFileURL>|(query:<Query>) [purge|untrash]
gam <UserTypeEntity> update drivefile (id <DriveFileID)|(drivefilename <DriveFileName>)|(query <QueryDriveFile) [copy] [newfilename <DriveFileName>] <DriveFileUpdateAttributes>*
gam <UserTypeEntity> get drivefile (id <DriveFileID>)|(query <QueryDriveFile>) [format <FileFormatList>] [targetfolder <FilePath>] [revision <Number>]
gam <UserTypeEntity> delete|del drivefile <DriveFileID>|<DriveFileURL>|(query:<QueryDriveFile>) [purge|untrash]
gam <UserTypeEntity> transfer drive <UserItem> [keepuser]
gam <UserTypeEntity> delete|del emptydrivefolders
@ -663,15 +711,15 @@ gam <UserTypeEntity> delete|del license <SKUID>
gam <UserTypeEntity> update photo <FileNamePattern>
gam <UserTypeEntity> delete|del photo
gam <UserTypeEntity> get photo
gam <UserTypeEntity> get photo [drivedir|(targetfolder <FilePath>)]
gam <UserTypeEntity> profile share|shared|unshare|unshared
gam <UserTypeEntity> show profile
gam <UserTypeEntity> print
gam <UserTypeEntity> delete|del token|tokens|3lo|oauth clientid <ClientID>
gam <UserTypeEntity> show tokens|token|3lo|oauth [clientid <ClientID>]
gam <UserTypeEntity> delete|del token|tokens clientid <ClientID>
gam <UserTypeEntity> show tokens|token [clientid <ClientID>]
gam <UserTypeEntity> print tokens|token [todrive] [clientid <ClientID>]
gam print tokens|token [todrive] [clientid <ClientID>] [<UserTypeEntity>]
gam <UserTypeEntity> update user <UserAttrubutes>
@ -681,50 +729,65 @@ gam <UserTypeEntity> deprovision|deprov
#
gam <UserTypeEntity> [add] label|labels <Name> [messagelistvisibility hide|show] [labellistvisibility hide|show|showifunread]
gam <UserTypeEntity> update labelsettings <LabelName> [name <Name>] [messagelistvisibility hide|show] [labellistvisibility hide|show|showifunread]
gam <UserTypeEntity> update label|labels [search <PythonRegularExpression>] [replace <LabelReplacement>] [merge]
gam <UserTypeEntity> delete|del label|labels <LabelName>|regex:<REPattern>|--ALL_LABELS--
gam <UserTypeEntity> update label|labels [search <RegularExpression>] [replace <LabelReplacement>] [merge]
gam <UserTypeEntity> delete|del label|labels <LabelName>|regex:<RegularExpression>|--ALL_LABELS--
gam <UserTypeEntity> show labels|label [onlyuser] [showcounts]
gam <UserTypeEntity> delete message|messages query <Query> [doit] [max_to_delete <Number>]
gam <UserTypeEntity> modify message|messages query <Query> (addlabel <LabelName>)* (removelabel <LabelName>)* [doit] [max_to_modify <Number>]
gam <UserTypeEntity> trash message|messages query <Query> [doit] [max_to_trash <Number>]
gam <UserTypeEntity> untrash message|messages query <Query> [doit] [max_to_untrash <Number>]
gam <UserTypeEntity> delete messages query <QueryGmail> [doit] [max_to_delete|max_to_process <Number>]
gam <UserTypeEntity> modify messages query <QueryGmail> [doit] [max_to_modify|max_to_process <Number>] (addlabel <LabelName>)* (removelabel <LabelName>)*
gam <UserTypeEntity> trash messages query <QueryGmail> [doit] [max_to_trash|max_to_process <Number>]
gam <UserTypeEntity> untrash messages query <QueryGmail> [doit] [max_to_untrash|max_to_process <Number>]
#
# Update user Gmail settings
#
gam <UserTypeEntity> show gmailprofile [todrive]
gam <UserTypeEntity> show gplusprofile [todrive]
gam <UserTypeEntity> arrows <Boolean>
gam <UserTypeEntity> delegate|delegates to <UserEntity>
gam <UserTypeEntity> delete|del delegate|delegates <UserEntity>
gam <UserTypeEntity> add delegate|delegates <EmailAddress>
gam <UserTypeEntity> delegate|delegates to <EmailAddress>
gam <UserTypeEntity> delete|del delegate|delegates <EmailAddress>
gam <UserTypeEntity> show delegates|delegate [csv]
gam <UserTypeEntity> print delegates [todrive]
gam <UserTypeEntity> filter [from <EmailAddress>] [to <EmailAddress>] [subject <String>] [haswords <List>] [nowords <List>] [musthaveattachment]
[label <LabelName>] [markread] [archive] [star] [forward <EmailAddress>] [trash] [neverspam]
# A condition and an action must both be specified
gam <UserTypeEntity> [add] filter [from <EmailAddress>] [to <EmailAddress>] [subject <String>] [haswords|query <List>] [nowords|negatedquery <List>] [musthaveattachment|hasattachment] [excludechats] [size larger|smaller <ByteCount>]
[label <LabelID>] [important|notimportant] [star] [trash] [markread] [archive] [neverspam] [forward <EmailAddress>]
gam <UserTypeEntity> delete filters <FilterIDEntity>
gam <UserTypeEntity> show filters
gam <UserTypeEntity> info filters <FilterIDEntity>
gam <UserTypeEntity> print filters [todrive]
gam <UserTypeEntity> forward <FalseValues> [keep|archive|delete] [<EmailAddress>]
gam <UserTypeEntity> forward <TrueValues> keep|archive|delete <EmailAddress>
gam <UserTypeEntity> forward <FalseValues>
gam <UserTypeEntity> forward <TrueValues> keep|leaveininbox|archive|delete|trash|markread <EmailAddress>
gam <UserTypeEntity> show forward
gam <UserTypeEntity> print forward [todrive]
gam <UserTypeEntity> imap|imap4 <Boolean>
gam <UserTypeEntity> add forwardingaddress|forwardingaddresses <EmailAddress>
gam <UserTypeEntity> delete forwardingaddress|forwardingaddresses <EmailAddress>
gam <UserTypeEntity> show forwardingaddress|forwardingaddresses
gam <UserTypeEntity> info forwardingaddress|forwardingaddresses <EmailAddress>
gam <UserTypeEntity> print forwardingaddress|forwardingaddresses [todrive]
gam <UserTypeEntity> imap|imap4 <Boolean> [noautoexpunge] [expungebehavior archive|deleteforever|trash] [maxfoldersize 0|1000|2000|5000|10000]
gam <UserTypeEntity> show imap|imap4
gam <UserTypeEntity> pop|pop3 <Boolean> [for allmail|newmail|mailfromnowon] [action keep|archive|delete]
gam <UserTypeEntity> pop|pop3 <Boolean> [for allmail|newmail|mailfromnowon|fromnowown] [action keep|leaveininbox|archive|delete|trash|markread]
gam <UserTypeEntity> show pop|pop3
gam <UserTypeEntity> language <Language>
gam <UserTypeEntity> pagesize 25|50|100
gam <UserTypeEntity> sendas <EmailAddress> <Name> [default] [replyto <EmailAddress>]
gam <UserTypeEntity> show sendas
gam <UserTypeEntity> [add] sendas <EmailAddress> <Name> [replyto <EmailAddress>] [default] [treatasalias <Boolean>] [signature|sig <String>|(file <FileName> [charset <CharSet>]) (replace <RegularExpression> <String>)*]
gam <UserTypeEntity> update sendas <EmailAddress> [name <Name>] [replyto <EmailAddress>] [default] [treatasalias <Boolean>] [signature|sig <String>|(file <FileName> [charset <CharSet>]) (replace <RegularExpression> <String>)*]
gam <UserTypeEntity> delete sendas <EmailAddress>
gam <UserTypeEntity> show sendas [format]
gam <UserTypeEntity> info sendas <EmailAddress> [format]
gam <UserTypeEntity> print sendas [todrive]
gam <UserTypeEntity> shortcuts <Boolean>
gam <UserTypeEntity> signature|sig <String>|(file <FileName> [charset <Charset>]) (replace <Tag> <String>)*
gam <UserTypeEntity> signature|sig <String>|(file <FileName> [charset <Charset>]) (replace <Tag> <String>)* [name <String>] [replyto <EmailAddress>]
gam <UserTypeEntity> show signature|sig [format]
gam <UserTypeEntity> snippets <Boolean>
@ -732,8 +795,8 @@ gam <UserTypeEntity> snippets <Boolean>
gam <UserTypeEntity> utf|utf8|utf-8|unicode <Boolean>
gam <UserTypeEntity> vacation <FalseValues>
gam <UserTypeEntity> vacation <TrueValues> subject <String> (message <String>)|(file <FileName> [charset <CharSet>]) (replace <Tag> <String>)*
gam <UserTypeEntity> vacation <TrueValues> subject <String> (message <String>)|(file <FileName> [charset <CharSet>]) (replace <Tag> <String>)* [html]
[contactsonly] [domainonly] [startdate <Date>] [enddate <Date>]
gam <UserTypeEntity> show vacation
gam <UserTypeEntity> show vacation [format]
gam <UserTypeEntity> webclips <Boolean>

6262
src/gam.py

File diff suppressed because it is too large Load Diff

View File

@ -7,25 +7,25 @@ Added arguments to gam info group to suppress aliases listing and include groups
Added argument to gam print cros to limit number of activeTimeRanges and recentUsers entries
`gam print cros ... [listlimit <Number>]`
Added argument to `gam <Users> signature` and `gam <Users> vacation` to allow specification of file character set so that extended characters can be read.
Added argument to `gam <UserTypeEntity> signature` and `gam <UserTypeEntity> vacation` to allow specification of file character set so that extended characters can be read.
Credit to Steve Main for suggesting the following enhancement.
Added argument to `gam <Users> signature` and `gam <Users> vacation` to allow pattern substitution in the signature and vacation message.
`gam <Users> signature <String>|(file <FileName> [charset <Charset>]) (replace <Tag> <String>)*`
`gam <Users> vacation <TrueValues> subject <String> (message <String>)|(file <FileName> [charset <CharSet>]) (replace <Tag> <String>)*
Added argument to `gam <UserTypeEntity> signature` and `gam <UserTypeEntity> vacation` to allow pattern substitution in the signature and vacation message.
`gam <UserTypeEntity> signature <String>|(file <FileName> [charset <Charset>]) (replace <Tag> <String>)*`
`gam <UserTypeEntity> vacation <TrueValues> subject <String> (message <String>)|(file <FileName> [charset <CharSet>]) (replace <Tag> <String>)*
[contactsonly] [domainonly] [startdate <Date>] [enddate <Date>]`
Every instance of `{<Tag>}` in the signature/message will be replaced by `<String>`. Instances of the form `{RT}...{Text}...{/RT}` will be eliminated
if there was no `<Tag>` specified that matches `Text` or if a `<Tag>` matching `Text` was specified but the matching `<String>` is empty.
This is especially useful with CSV files.
`gam csv Users.csv gam user "~User" signature file SignatureTemplate.txt replace "#User#" "~User" replace "#Title#" "~Title"`
Added argument to `gam <Users> show signature` to format the signature.
`gam <Users> show signature [format]`
Added argument to `gam <UserTypeEntity> show signature` to format the signature.
`gam <UserTypeEntity> show signature [format]`
Added argument to gam add/update calendar to allow specification of event notifications
`gam <Users> add/update calendar <Calendar> notification email|sms eventcreation|eventchange|eventcancellation|eventresponce|agenda`
`gam <UserTypeEntity> add/update calendar <Calendar> notification email|sms eventcreation|eventchange|eventcancellation|eventresponce|agenda`
Added option to reminder and notification arguments of update calendar to allowing clearing of reminders/notifications.
`gam <Users> update calendar <Calendar> [reminder clear] [notification clear]`
`gam <UserTypeEntity> update calendar <Calendar> [reminder clear] [notification clear]`
Added arguments to `gam print group-members` to allow selecting subsets of groups.
Added argument to `gam print group-members` to add member full name to output,
@ -42,10 +42,10 @@ Added argument to `gam print printjobs` and `gam printjob <PrinterID> fetch` to
`limit <Number>` specifies the maximum number of print jobs to retrieve; defaults to 25, set limit to 0 to retrieve all print jobs.
Credit to Seth Stein for the following enhancements.
Added argument to `gam <Users> get drivefile` to allow downloading a specific revision of a drive file.
`gam <Users> get drivefile (id <DriveFileID>)|(query <Query>) [format <FileFormatList>] [targetfolder <FilePath>] [revision <Number>]`
Added argument to `gam <UserTypeEntity> get drivefile` to allow downloading a specific revision of a drive file.
`gam <UserTypeEntity> get drivefile (id <DriveFileID>)|(query <Query>) [format <FileFormatList>] [targetfolder <FilePath>] [revision <Number>]`
Added command to show drive file revisions.
`gam <Users> show filerevisions <DriveFileID>`
`gam <UserTypeEntity> show filerevisions <DriveFileID>`
Added argument to `gam print adminroles` to allow uploading to Google Drive.
`gam print adminroles [todrive]`
@ -54,16 +54,16 @@ Added `group, groups, mobile` arguments to `gam report`.
`gam report admin|calendar|calendars|drive|docs|doc|groups|group|logins|login|mobile|tokens|token ...`
Added command to show user Google+ profile.
`gam <Users> show gplusprofile [todrive]`
`gam <UserTypeEntity> show gplusprofile [todrive]`
To enable this command, visit: https://github.com/jay0lee/GAM/wiki/CreatingClientSecretsFile
In step 3.v, enable the Google+ API
In step 6.iii.d, add `https://www.googleapis.com/auth/plus.me` to the API scopes - Service Account list, then remove and re-add the authorization.
Added argument to `gam <Users> show labels` to allow seeing message counts for each label.
`gam <Users> show labels|label [onlyuser] [showcounts]`
Added argument to `gam <UserTypeEntity> show labels` to allow seeing message counts for each label.
`gam <UserTypeEntity> show labels|label [onlyuser] [showcounts]`
Added argument to `gam <Users> show fileinfo` to allow field selection.
`gam <Users> show fileinfo <DriveFileID> [allfields|<DriveFieldName>*]`
Added argument to `gam <UserTypeEntity> show fileinfo` to allow field selection.
`gam <UserTypeEntity> show fileinfo <DriveFileID> [allfields|<DriveFieldName>*]`
Added argument to `gam update group` to allow removing members by role.
`gam update group <Group> clear [members] [managers] [owners]`
@ -73,12 +73,104 @@ Changed `gam print admins` to include 'id:' in OrgUnitID column as with other `g
Fixed GAM to handle both future date error messages in `gam report`
Fixed `gam <Users> show delegates` to handle Unicode characters in delagator name.
Fixed `gam <UserTypeEntity> show delegates` to handle Unicode characters in delagator name.
Fixed `gam <Users> get drivefile` to properly handle file extension.
Fixed `gam <UserTypeEntity> get drivefile` to properly handle file extension.
Fixed `gam create alias <Name> target <Group>`.
2016/07/29
Added command to empty drive drive trash.
`gam <UserTypeEntity> empty drivetrash`
Added alternative command to add delegates and command to print delegates.
`gam <UserTypeEntity> add delegate|delegates <UserEntity>`
`gam <UserTypeEntity> print delegates [todrive]`
Improved Gmail filter processing.
`gam <UserTypeEntity> [add] filter [from <EmailAddress>] [to <EmailAddress>] [subject <String>] [haswords|query <List>] [nowords|negatedquery <List>] [musthaveattachment|hasattachment] [excludechats] [size larger|smaller <ByteCount>]
[label <LabelID>] [important|notimportant] [star] [trash] [markread] [archive] [neverspam] [forward <EmailAddress>]`
`gam <UserTypeEntity> delete filters <FilterIDEntity>`
`gam <UserTypeEntity> show filters`
`gam <UserTypeEntity> info filters <FilterIDEntity>`
`gam <UserTypeEntity> print filters [todrive]`
Added commands to process Gmail forwarding addresses.
`gam <UserTypeEntity> add forwardingaddress|forwardingaddresses <EmailAddressEntity>`
`gam <UserTypeEntity> delete forwardingaddress|forwardingaddresses <EmailAddressEntity>`
`gam <UserTypeEntity> show forwardingaddress|forwardingaddresses`
`gam <UserTypeEntity> info forwardingaddress|forwardingaddresses <EmailAddressEntity>`
`gam <UserTypeEntity> print forwardingaddress|forwardingaddresses [todrive]`
Improved Gmail forward processing.
`gam <UserTypeEntity> forward <FalseValues>`
`gam <UserTypeEntity> forward <TrueValues> keep|leaveininbox|archive|delete|trash|markread <EmailAddress>`
`gam <UserTypeEntity> show forward`
`gam <UserTypeEntity> print forward [todrive]`
Improved Gmail sendas processing.
`gam <UserTypeEntity> [add] sendas <EmailAddress> <Name> [replyto <EmailAddress>] [default] [treatasalias <Boolean>] [signature|sig <String>|(file <FileName> [charset <CharSet>]) (replace <REPattern> <String>)*]`
`gam <UserTypeEntity> update sendas <EmailAddress> [name <Name>] [replyto <EmailAddress>] [default] [treatasalias <Boolean>] [signature|sig <String>|(file <FileName> [charset <CharSet>]) (replace <REPattern> <String>)*]`
`gam <UserTypeEntity> delete sendas <EmailAddressEntity>`
`gam <UserTypeEntity> show sendas [format]`
`gam <UserTypeEntity> info sendas <EmailAddressEntity> [format]`
`gam <UserTypeEntity> print sendas [todrive]`
Improved Gmail signature processing.
`gam <UserTypeEntity> signature|sig <String>|(file <FileName> [charset <Charset>]) (replace <Tag> <String>)* [name <String>] [replyto <EmailAddress>] `
`gam <UserTypeEntity> show signature|sig [format]`
Use Gmail API for POP/IMAP/Vacation processing.
`gam <UserTypeEntity> imap|imap4 <Boolean> [noautoexpunge] [expungebehavior archive|deleteforever|trash] [maxfoldersize 0|1000|2000|5000|10000]`
`gam <UserTypeEntity> pop|pop3 <Boolean> [for allmail|newmail|mailfromnowon|fromnowown] [action keep|leaveininbox|archive|delete|trash|markread]`
`gam <UserTypeEntity> vacation <FalseValues>`
`gam <UserTypeEntity> vacation <TrueValues> subject <String> (message <String>)|(file <FileName> [charset <CharSet>]) (replace <Tag> <String>)* [html]
[contactsonly] [domainonly] [startdate <Date>] [enddate <Date>]`
`gam <UserTypeEntity> show vacation [format]`
Added command toGet information about a specific calendar.
`gam <UserTypeEntity> info calendar <EmailAddress>`
Added command to print calendars to CSV file, dropped all arguments from gam show calendars.
`gam <UserTypeEntity> print calendars [todrive]`
`gam <UserTypeEntity> show calendars`
Added command to print Gmail Profiles to CSV file, dropped all arguments from gam show gmailprofile.
`gam <UserTypeEntity> print gmailprofile [todrive]`
`gam <UserTypeEntity> show gmailprofile`
Added command to print Gplus Profiles to CSV file, dropped all arguments from gam show gplusprofile.
`gam <UserTypeEntity> print gplusprofile [todrive]`
`gam <UserTypeEntity> show gplusprofile`
Added command to print user schemas to CSV file, renamed command to display formatted user schemas to gam show schemas.
`gam print schemas [todrive]`
`gam show schemas`
Added command to print user access tokens to CSV file.
`gam <UserTypeEntity> print tokens|token|3lo|oauth [todrive]`
Added arguments to gam info cros to allow specification of desired output fields.
`gam info cros <CrosDeviceEntity> [nolists] [listlimit <Number>]
[basic|full|allfields] <CrOSFieldName>* [fields <CrOSFieldNameList>]`
Added drivedir and targetfolder <FilePath> arguments to gam printjob fetch and gam get photo to
allow specification of the destination folder for the file retrieved from Google. The default
location for these commands is the current working directory, drivedir specifies the value of the environment variable GAMDRIVEDIR and
targetfolder <FilePath> specifies a user-choosen path.
`gam printjob <PrinterID>|any fetch
[olderthan|newerthan <PrintJobAge>] [query <QueryPrintJob>]
[status <PrintJobStatus>]
[orderby <PrintJobOrderByFieldName> [ascending|descending]]
[owner|user <EmailAddress>]
[limit <Number>] [drivedir|(targetfolder <FilePath>)]`
`gam <UserTypeEntity> get photo [drivedir|(targetfolder <FilePath>)]`
Commands that produce CSV file output have been changed to make the leftmost column(s) be the key fields.
If you have scripts that process the CSV files as flat files, expecting the columns to be in a particular
order, they will have to be updated. If your scripts process the CSV files by column header, no changes should be required.
GAM 3.65
-fix vacation issues (Ross)
-fix Windows path issues (Ross)