mirror of
https://github.com/GAM-team/GAM.git
synced 2026-06-22 15:11:37 +00:00
Compare commits
14 Commits
20231122.1
...
20231212.2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2bb0088ade | ||
|
|
d113b3ec8e | ||
|
|
97e13b92be | ||
|
|
dc832b8c7f | ||
|
|
56c33fec87 | ||
|
|
48862997b0 | ||
|
|
59dd01f1e8 | ||
|
|
d639e8e728 | ||
|
|
1c0e6ebf9c | ||
|
|
c289fb08f1 | ||
|
|
a64d6f1215 | ||
|
|
b0f05c2dea | ||
|
|
46d4e78b79 | ||
|
|
0562639715 |
2
.github/workflows/build.yml
vendored
2
.github/workflows/build.yml
vendored
@@ -114,7 +114,7 @@ jobs:
|
||||
path: |
|
||||
bin.tar.xz
|
||||
src/cpython
|
||||
key: gam-${{ matrix.jid }}-202311118
|
||||
key: gam-${{ matrix.jid }}-20231212
|
||||
|
||||
- name: Untar Cache archive
|
||||
if: matrix.goal == 'build' && steps.cache-python-ssl.outputs.cache-hit == 'true'
|
||||
|
||||
@@ -16,44 +16,7 @@
|
||||
<FalseValues>= false|off|no|disabled|0
|
||||
<TrueValues> ::= true|on|yes|enabled|1
|
||||
|
||||
<Charset> ::= ascii|latin1|mbcs|utf-8|utf-8-sig|utf-16|<String>
|
||||
<CalendarColorIndex> ::= <Number in range 1-24>
|
||||
<CalendarColorName> ::=
|
||||
amethyst|avocado|banana|basil|birch|blueberry|
|
||||
cherryblossom|citron|cobalt|cocoa|eucalyptus|flamingo|
|
||||
grape|graphite|lavender|mango|peacock|pistachio|
|
||||
pumpkin|radicchio|sage|tangerine|tomato|wisteria|
|
||||
<ColorHex> ::= "#<Hex><Hex><Hex><Hex><Hex><Hex>"
|
||||
<ColorNameGoogle> ::=
|
||||
asparagus|bluevelvet|bubblegum|cardinal|chocolateicecream|denim|desertsand|
|
||||
earthworm|macaroni|marsorange|mountaingray|mountaingrey|mouse|oldbrickred|
|
||||
pool|purpledino|purplerain|rainysky|seafoam|slimegreen|spearmint|
|
||||
toyeggplant|vernfern|wildstrawberries|yellowcab
|
||||
<ColorNameWeb> ::=
|
||||
aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|
|
||||
blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|
|
||||
cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|
|
||||
darkgrey|darkgreen|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|
|
||||
darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|
|
||||
darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|
|
||||
firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|
|
||||
gray|grey|green|greenyellow|honeydew|hotpink|indianred|indigo|ivory|khaki|
|
||||
lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|
|
||||
lightgoldenrodyellow|lightgray|lightgrey|lightgreen|lightpink|lightsalmon|
|
||||
lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|
|
||||
lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|
|
||||
mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|
|
||||
mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|
|
||||
navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|
|
||||
palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|
|
||||
peru|pink|plum|powderblue|purple|red|rosybrown|royalblue|saddlebrown|salmon|
|
||||
sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|
|
||||
slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|
|
||||
wheat|white|whitesmoke|yellow|yellowgreen
|
||||
<ColorName> ::= <ColorNameGoogle>|<ColorNameWeb>
|
||||
<ColorValue> ::= <ColorName>|<ColorHex>
|
||||
<DayOfWeek> ::= mon|tue|wed|thu|fri|sat|sun
|
||||
<DriveLabelLanguageCode> ::=
|
||||
<BCP47LanguageCode> ::=
|
||||
ar-sa| # Arabic Saudi Arabia
|
||||
cs-cz| # Czech Czech Republic
|
||||
da-dk| # Danish Denmark
|
||||
@@ -91,6 +54,43 @@
|
||||
zh-cn| # Chinese China
|
||||
zh-hk| # Chinese Hong Kong
|
||||
zh-tw # Chinese Taiwan
|
||||
<Charset> ::= ascii|latin1|mbcs|utf-8|utf-8-sig|utf-16|<String>
|
||||
<CalendarColorIndex> ::= <Number in range 1-24>
|
||||
<CalendarColorName> ::=
|
||||
amethyst|avocado|banana|basil|birch|blueberry|
|
||||
cherryblossom|citron|cobalt|cocoa|eucalyptus|flamingo|
|
||||
grape|graphite|lavender|mango|peacock|pistachio|
|
||||
pumpkin|radicchio|sage|tangerine|tomato|wisteria|
|
||||
<ColorHex> ::= "#<Hex><Hex><Hex><Hex><Hex><Hex>"
|
||||
<ColorNameGoogle> ::=
|
||||
asparagus|bluevelvet|bubblegum|cardinal|chocolateicecream|denim|desertsand|
|
||||
earthworm|macaroni|marsorange|mountaingray|mountaingrey|mouse|oldbrickred|
|
||||
pool|purpledino|purplerain|rainysky|seafoam|slimegreen|spearmint|
|
||||
toyeggplant|vernfern|wildstrawberries|yellowcab
|
||||
<ColorNameWeb> ::=
|
||||
aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|
|
||||
blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|
|
||||
cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|
|
||||
darkgrey|darkgreen|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|
|
||||
darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|
|
||||
darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|
|
||||
firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|
|
||||
gray|grey|green|greenyellow|honeydew|hotpink|indianred|indigo|ivory|khaki|
|
||||
lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|
|
||||
lightgoldenrodyellow|lightgray|lightgrey|lightgreen|lightpink|lightsalmon|
|
||||
lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|
|
||||
lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|
|
||||
mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|
|
||||
mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|
|
||||
navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|
|
||||
palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|
|
||||
peru|pink|plum|powderblue|purple|red|rosybrown|royalblue|saddlebrown|salmon|
|
||||
sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|
|
||||
slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|
|
||||
wheat|white|whitesmoke|yellow|yellowgreen
|
||||
<ColorName> ::= <ColorNameGoogle>|<ColorNameWeb>
|
||||
<ColorValue> ::= <ColorName>|<ColorHex>
|
||||
<DayOfWeek> ::= mon|tue|wed|thu|fri|sat|sun
|
||||
<EventColorIndex> ::= <Number in range 1-11>
|
||||
<EventColorName> ::=
|
||||
banana|basil|blueberry|flamingo|graphite|grape|
|
||||
|
||||
@@ -69,13 +69,13 @@ gam redirect stdout ./NewStudents.out redirect stderr ./NewStudents.err tbatch N
|
||||
## CSV files
|
||||
```
|
||||
gam csv <FileName>|-|(gsheet <UserGoogleSheet>)|(gdoc <UserGoogleDoc>) [charset <Charset>] [warnifnodata]
|
||||
[columndelimiter <Character>] [quotechar <Character>] [fields <FieldNameList>]
|
||||
[columndelimiter <Character>] [noescapechar <Boolean>] [quotechar <Character>] [fields <FieldNameList>]
|
||||
(matchfield|skipfield <FieldName> <RegularExpression>)* [showcmds [<Boolean>]]
|
||||
[maxrows <Integer>]
|
||||
gam <GAMArgumentList>
|
||||
|
||||
gam loop <FileName>|-|(gsheet <UserGoogleSheet>)|(gdoc <UserGoogleDoc>) [charset <Charset>] [warnifnodata]
|
||||
[columndelimiter <Character>] [quotechar <Character>] [fields <FieldNameList>]
|
||||
[columndelimiter <Character>] [noescapechar <Boolean>] [quotechar <Character>] [fields <FieldNameList>]
|
||||
(matchfield|skipfield <FieldName> <RegularExpression>)* [showcmds [<Boolean>]]
|
||||
[maxrows <Integer>]
|
||||
gam <GAMArgumentList>
|
||||
@@ -87,6 +87,7 @@ gam loop <FileName>|-|(gsheet <UserGoogleSheet>)|(gdoc <UserGoogleDoc>) [charset
|
||||
* `gsheet <UserGoogleSheet>` - A Google Sheet and the one or more columns that contain data
|
||||
* `gdoc <UserGoogleDoc>` - A Google Doc and the one or more columns that contain data
|
||||
* `columndelimiter <Character>` - Columns are separated by `<Character>`; if not specified, the value of `csv_input_column_delimiter` from `gam.cfg` will be used
|
||||
* `noescapechar <Boolean>` - Should `\` be ignored as an escape character; if not specified, the value of `csv_input_no_escape_char` from `gam.cfg` will be used
|
||||
* `quotechar <Character>` - The column quote characer is `<Character>`; if not specified, the value of `csv_input_quote_char` from `gam.cfg` will be used
|
||||
* `fields <FieldNameList>` - The column headings of a CSV file that does not contain column headings.
|
||||
* `(matchfield|skipfield <FieldName> <RegularExpression>)*` - The criteria to select rows from the CSV file; can be used multiple times; if not specified, all rows are selected
|
||||
|
||||
94
docs/CSV-Special-Characters.md
Normal file
94
docs/CSV-Special-Characters.md
Normal file
@@ -0,0 +1,94 @@
|
||||
# CSV Special Characters
|
||||
- [Python CSV documentation](https://docs.python.org/3/library/csv.html#dialects-and-formatting-parameters)
|
||||
|
||||
## Python variables that control CSV file reading/writing:
|
||||
```
|
||||
Dialect.delimiter
|
||||
A one-character string used to separate fields.
|
||||
It defaults to ','.
|
||||
|
||||
Dialect.doublequote
|
||||
Controls how instances of quotechar appearing inside a field should themselves be quoted.
|
||||
When True, the character is doubled. When False, the escapechar is used as a prefix to the quotechar.
|
||||
It defaults to True.
|
||||
|
||||
Dialect.escapechar
|
||||
A one-character string used by the writer to escape the delimiter if quoting is set to QUOTE_NONE and the quotechar if doublequote is False.
|
||||
On reading, the escapechar removes any special meaning from the following character.
|
||||
It defaults to None, which disables escaping.
|
||||
|
||||
Dialect.lineterminator
|
||||
The string used to terminate lines produced by the writer.
|
||||
It defaults to '\r\n'.
|
||||
|
||||
The reader is hard-coded to recognise either '\r' or '\n' as end-of-line, and ignores lineterminator.
|
||||
|
||||
Dialect.quotechar
|
||||
A one-character string used to quote fields containing special characters, such as the delimiter or quotechar, or which contain new-line characters.
|
||||
It defaults to '"'.
|
||||
|
||||
Dialect.quoting
|
||||
Controls when quotes should be generated by the writer and recognised by the reader. It can take on any of the QUOTE_* constants (see section Module Contents).
|
||||
It defaults to QUOTE_MINIMAL.
|
||||
```
|
||||
|
||||
## GAM variables that control CSV file reading/writing:
|
||||
```
|
||||
csv_input_column_delimiter = , - Dialect.delimiter
|
||||
csv_input_no_escape_char = true - Dialect.escapechar is set to None if true, '\' if false
|
||||
csv_input_quote_char = " - Dialect.quotechar
|
||||
csv_output_column_delimiter = , - Dialect.delimiter
|
||||
csv_output_no_escape_char = false - Dialect.escapechar is set to None if true, '\' if false
|
||||
csv_output_line_terminator = lf - Dialect.lineterminator
|
||||
csv_output_quote_char = " - Dialect.quotechar
|
||||
todrive_no_escape_char = true - Dialect.escapechar is set to None if true, '\' if false
|
||||
```
|
||||
|
||||
GAM sets Dialect.doublequote to true and Dialect.quoting to QUOTE_MINIMAL; there are no variables to change these values.
|
||||
|
||||
## Examples
|
||||
|
||||
### Local file, default settings
|
||||
With these settings, here are examples of how field values are mapped on output to a local file:
|
||||
```
|
||||
csv_output_column_delimiter = ,
|
||||
csv_output_no_escape_char = false
|
||||
csv_output_quote_char = "
|
||||
```
|
||||
|
||||
| Input | Output |
|
||||
|-------|--------|
|
||||
| abc def | abc def |
|
||||
| abc,def | "abc,def" |
|
||||
| abc"def | "abc""def" |
|
||||
| abc\def | abc\\\\def |
|
||||
|
||||
### Local file, modified settings
|
||||
With these settings, here are examples of how field values are mapped on output to a local file:
|
||||
```
|
||||
csv_output_column_delimiter = ,
|
||||
csv_output_no_escape_char = true
|
||||
csv_output_quote_char = "
|
||||
```
|
||||
|
||||
| Input | Output |
|
||||
|-------|--------|
|
||||
| abc def | abc def |
|
||||
| abc,def | "abc,def" |
|
||||
| abc"def | "abc""def" |
|
||||
| abc\def | abc\def |
|
||||
|
||||
### todrive, default settings
|
||||
With these settings, here are examples of how field values are mapped on output to todrive
|
||||
```
|
||||
csv_output_column_delimiter = ,
|
||||
todrive_no_escape_char = true
|
||||
csv_output_quote_char = "
|
||||
```
|
||||
|
||||
| Input | Output |
|
||||
|-------|--------|
|
||||
| abc def | abc def |
|
||||
| abc,def | "abc,def" |
|
||||
| abc"def | "abc""def" |
|
||||
| abc\def | abc\def |
|
||||
@@ -103,12 +103,21 @@ Client access works when accessing Resource calendars.
|
||||
creator.id|
|
||||
creator.self
|
||||
|
||||
<EventFocusTimePropertiesSubfieldName> ::=
|
||||
focustimeproperties.chatstatus|
|
||||
focustimeproperties.declinemode|
|
||||
focustimeproperties.declinemessage
|
||||
|
||||
<EventOrganizerSubfieldName> ::=
|
||||
organizer.displayname|
|
||||
organizer.email|
|
||||
organizer.id|
|
||||
organizer.self
|
||||
|
||||
<EventOutOfOfficePropertiesSubfieldName> ::=
|
||||
outofoffice.declinemode|
|
||||
outofoffice.declinemessage
|
||||
|
||||
<EventWorkingLocationPropertiesSubfieldName> ::=
|
||||
workinglocationproperties.homeoffice|
|
||||
workinglocationproperties.customlocation|
|
||||
@@ -132,6 +141,7 @@ Client access works when accessing Resource calendars.
|
||||
endtimeunspecified|
|
||||
extendedproperties|
|
||||
eventtype|
|
||||
<EventFocusTimePropertiesSubfieldName>
|
||||
gadget|
|
||||
guestscaninviteothers|
|
||||
guestscanmodify|
|
||||
@@ -145,6 +155,7 @@ Client access works when accessing Resource calendars.
|
||||
organizer|
|
||||
<EventOrganizerSubfieldName>|
|
||||
originalstart|originalstarttime|
|
||||
<EventOutOfOfficePropertiesSubfieldName>
|
||||
privatecopy|
|
||||
recurrence|
|
||||
recurringeventid|
|
||||
@@ -158,14 +169,23 @@ Client access works when accessing Resource calendars.
|
||||
updated|
|
||||
visibility|
|
||||
workinglocationproperties|
|
||||
<EventWorkingLocationPropertiesSubfieldName>
|
||||
<EventFieldNameList> ::= "<EventFieldName>(,<EventFieldName>)*"
|
||||
|
||||
<AttendeeAttendance> ::= optional|required
|
||||
<AttendeeStatus> ::= accepted|declined|needsaction|tentative
|
||||
|
||||
<EventType> ::=
|
||||
default|
|
||||
focustime|
|
||||
outofoffice|
|
||||
workinglocation
|
||||
<EventTypeList> ::= "<EventType>(,<EventType>)*"
|
||||
|
||||
<EventSelectProperty> ::=
|
||||
(after|starttime|timemin <Time>)|
|
||||
(before|endtime|timemax <Time>)|
|
||||
(eventtype|eventtypes <EventTypeList>)|
|
||||
(query <QueryCalendar>)|
|
||||
(privateextendedproperty <String>)|
|
||||
(sharedextendedproperty <String>)|
|
||||
@@ -211,6 +231,7 @@ Client access works when accessing Resource calendars.
|
||||
<PropertyValue> ::= <String>
|
||||
|
||||
<EventAttribute> ::=
|
||||
(allday <Date>)|
|
||||
(anyonecanaddself [<Boolean>])|
|
||||
(attachment <String> <URL>)|
|
||||
(attendee <EmailAddress>)|
|
||||
@@ -219,7 +240,7 @@ Client access works when accessing Resource calendars.
|
||||
(color <EventColorName>)|
|
||||
(colorindex|colorid <EventColorIndex>)|
|
||||
(description <String>)|
|
||||
(end (allday <Date>)|<Time>)|
|
||||
(end|endtime (allday <Date>)|<Time>)|
|
||||
(guestscaninviteothers <Boolean>)|
|
||||
guestscantinviteothers|
|
||||
(guestscanmodify <Boolean>)|
|
||||
@@ -234,16 +255,18 @@ Client access works when accessing Resource calendars.
|
||||
(optionalattendee <EmailAddress>)|
|
||||
(originalstart|originalstarttime (allday <Date>)|<Time>)|
|
||||
(privateproperty <PropertyKey> <PropertyValue>)|
|
||||
(range <Date> <Date>)|
|
||||
(recurrence <RRULE, EXRULE, RDATE and EXDATE line>)|
|
||||
(reminder <Number> email|popup))|
|
||||
(selectattendees [<AttendeeAttendance>] [<AttendeeStatus>] <UserTypeEntity>)|
|
||||
(sequence <Integer>)|
|
||||
(sharedproperty <PropertyKey> <PropertyValue>)|
|
||||
(source <String> <URL>)|
|
||||
(start (allday <Date>)|<Time>)|
|
||||
(start|starttime (allday <Date>)|<Time>)|
|
||||
(status confirmed|tentative|cancelled)|
|
||||
(summary <String>)|
|
||||
tentative|
|
||||
(timerange <Time> <Time>)|
|
||||
(timezone <TimeZone>)|
|
||||
(transparency opaque|transparent)|
|
||||
(visibility default|public|private)
|
||||
@@ -293,10 +316,12 @@ This is dense reading; a simpler approach is to define a test event in Google Ca
|
||||
the recurrence rule that you want, then use `gam info event` to get the recurrence rule and use it in subsequent commands.
|
||||
|
||||
```
|
||||
RRULE:FREQ=DAILY
|
||||
RRULE:FREQ=DAILY;COUNT=30
|
||||
RRULE:FREQ=WEEKLY;BYDAY=WE
|
||||
RRULE:FREQ=WEEKLY;WKST=SU;COUNT=13;BYDAY=WE
|
||||
RRULE:FREQ=DAILY - Daily
|
||||
RRULE:FREQ=DAILY;COUNT=30 - Daily for 30 days
|
||||
RRULE:FREQ=WEEKLY - Weekly on the same day of the week as the starting day; e.g., every Wednesday
|
||||
RRULE:FREQ=WEEKLY;COUNT=13 - Weekly on the same day of the week as the starting day; e.g., every Wednesday, for 13 weeks
|
||||
RRULE:FREQ=MONTHLY - Monthly on the same day of the month as the starting day; e.g., every 15th of the month
|
||||
RRULE:FREQ=MONTHLY;BYDAY=4TH - Monthly on the fourth instance of the starting day; e.g., every 4th Thursday
|
||||
```
|
||||
|
||||
## Event colors
|
||||
@@ -320,6 +345,7 @@ If none of the following options are selected, all events are selected.
|
||||
The Google Calendar API processes `<EventSelectProperty>*`; you may specify none or multiple properties.
|
||||
* `after|starttime|timemin <Time>` - Lower bound (inclusive) for an event's end time to filter by. If timeMax is set, timeMin must be smaller than timeMax.
|
||||
* `before|endtime|timemax <Time>` - Upper bound (exclusive) for an event's start time to filter by. If timeMin is set, timeMax must be greater than timeMin.
|
||||
* `eventtypes <EventTypeList>` - Select events based on their type.
|
||||
* `query <QueryCalendar>` - Free text search terms to find events that match these terms in any field, except for extended properties
|
||||
* `privateextendedproperty <String>` - A required private property; `<String>` must be of the form `propertyName=value`
|
||||
* `sharedextendedproperty <String>` - A required shared property; `<String>` must be of the form `propertyName=value`
|
||||
|
||||
@@ -109,7 +109,7 @@ By default, Gam displays the information as an indented list of keys and values.
|
||||
### Display information about all chat members in a chat space
|
||||
```
|
||||
gam show chatmembers space <ChatSpace>
|
||||
[showinvited [<Boolean>]] [filter <String>]
|
||||
[showinvited [<Boolean>]] [showgroups [<Boolean>]] [filter <String>]
|
||||
[formatjson]
|
||||
```
|
||||
By default, Gam displays the information as an indented list of keys and values.
|
||||
@@ -117,7 +117,7 @@ By default, Gam displays the information as an indented list of keys and values.
|
||||
|
||||
```
|
||||
gam print chatmembers [todrive <ToDriveAttribute>*] space <ChatSpace>
|
||||
[showinvited [<Boolean>]] [filter <String>]
|
||||
[showinvited [<Boolean>]] [showgroups [<Boolean>]] [filter <String>]
|
||||
[formatjson [quotechar <Character>]]
|
||||
```
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -36,8 +36,9 @@
|
||||
See: https://support.google.com/a/answer/7549103
|
||||
<QueryDeviceList> ::= "<QueryDevice>(,<QueryDevice>)*"
|
||||
<DeviceID> ::= devices/<String>
|
||||
<DeviceIDList> ::= "<DeviceID>(,<DeviceID>)*"
|
||||
<DeviceEntity> ::=
|
||||
<DeviceIDList> |
|
||||
<DeviceIDList> | devicesn <String> |
|
||||
(query:<QueryDevice>)|(query <QueryDevice>)
|
||||
<DeviceType> ::= android|chrome_os|google_sync|linux|mac_os|windows
|
||||
<DeviceUserID> ::= devices/<String>/deviceUsers/<String>
|
||||
|
||||
@@ -90,7 +90,7 @@
|
||||
(gdoc(:<FieldName>)+ <UserGoogleDoc>)|
|
||||
(gcscsv(:<FieldName>)+ <StorageBucketObjectName>)|
|
||||
(gcsdoc(:<FieldName>)+ <StorageBucketObjectName>))
|
||||
[warnifnodata] [columndelimiter <Character>] [quotechar <Character>]
|
||||
[warnifnodata] [columndelimiter <Character>] [noescapechar <Boolean>] [quotechar <Character>]
|
||||
[endcsv|(fields <FieldNameList>)]
|
||||
(matchfield|skipfield <FieldName> <RegularExpression>)*
|
||||
[delimiter <Character>])|
|
||||
@@ -100,7 +100,7 @@
|
||||
(gdoc(:<FieldName>)+ <UserGoogleDoc>)|
|
||||
(gcscsv(:<FieldName>)+ <StorageBucketObjectName>)|
|
||||
(gcsdoc(:<FieldName>)+ <StorageBucketObjectName>))
|
||||
[warnifnodata] [columndelimiter <Character>] [quotechar <Character>]
|
||||
[warnifnodata] [columndelimiter <Character>] [noescapechar <Boolean>] [quotechar <Character>]
|
||||
[endcsv|(fields <FieldNameList>)]
|
||||
(matchfield|skipfield <FieldName> <RegularExpression>)*
|
||||
[delimiter <Character>])|
|
||||
@@ -117,7 +117,7 @@
|
||||
(gdoc(:<FieldName>)+ <UserGoogleDoc>)|
|
||||
(gcscsv(:<FieldName>)+ <StorageBucketObjectName>)|
|
||||
(gcsdoc(:<FieldName>)+ <StorageBucketObjectName>))
|
||||
[warnifnodata] [columndelimiter <Character>] [quotechar <Character>]
|
||||
[warnifnodata] [columndelimiter <Character>] [noescapechar <Boolean>] [quotechar <Character>]
|
||||
[endcsv|(fields <FieldNameList>)]
|
||||
(matchfield|skipfield <FieldName> <RegularExpression>)*
|
||||
[delimiter <Character>])|
|
||||
@@ -128,7 +128,7 @@
|
||||
(gdoc <UserGoogleDoc>)|
|
||||
(gcscsv <StorageBucketObjectName>)|
|
||||
(gcsdoc <StorageBucketObjectName>))
|
||||
[charset <Charset>] [columndelimiter <Character>] [quotechar <Character>] [fields <FieldNameList>])
|
||||
[charset <Charset>] [columndelimiter <Character>] [noescapechar <Boolean>] [quotechar <Character>] [fields <FieldNameList>])
|
||||
keyfield <FieldName> [keypattern <RegularExpression>] [keyvalue <String>] [delimiter <Character>]
|
||||
subkeyfield <FieldName> [keypattern <RegularExpression>] [keyvalue <String>] [delimiter <Character>]
|
||||
(matchfield|skipfield <FieldName> <RegularExpression>)*
|
||||
@@ -263,7 +263,7 @@ croscsvfile
|
||||
(gdoc(:<FieldName>)+ <UserGoogleDoc>)|
|
||||
(gcscsv(:<FieldName>)+ <StorageBucketObjectName>)|
|
||||
(gcsdoc(:<FieldName>)+ <StorageBucketObjectName>))
|
||||
[warnifnodata] [columndelimiter <Character>] [quotechar <Character>]
|
||||
[warnifnodata] [columndelimiter <Character>] [noescapechar <Boolean>] [quotechar <Character>]
|
||||
[endcsv|(fields <FieldNameList>)]
|
||||
(matchfield|skipfield <FieldName> <RegularExpression>)*
|
||||
[delimiter <Character>]
|
||||
@@ -276,6 +276,7 @@ croscsvfile
|
||||
* `gcsdoc(:<FieldName>)+ <StorageBucketObjectName>` - A Google Cloud Storage Bucket Object and the one or more columns that contain ChromeOS deviceIds
|
||||
* `warnifnodata` - Issue message 'No CSV file data found' and exit with return code 60 if there is no data selected from the file
|
||||
* `columndelimiter <Character>` - Columns are separated by `<Character>`; if not specified, the value of `csv_input_column_delimiter` from `gam.cfg` will be used
|
||||
* `noescapechar <Boolean>` - Should `\` be ignored as an escape character; if not specified, the value of `csv_input_no_escape_char` from `gam.cfg` will be used
|
||||
* `quotechar <Character>` - The column quote characer is `<Character>`; if not specified, the value of `csv_input_quote_char` from `gam.cfg` will be used
|
||||
* `endcsv` - Use this option to signal the end of the csvfile parameters in the case that the next argument on the command line is `fields` but is specifying the output field list for the command not column headings
|
||||
* `fields <FieldNameList>` - The column headings of a CSV file that does not contain column headings
|
||||
@@ -290,7 +291,7 @@ croscsvfile_sn
|
||||
(gdoc(:<FieldName>)+ <UserGoogleDoc>)|
|
||||
(gcscsv(:<FieldName>)+ <StorageBucketObjectName>)|
|
||||
(gcsdoc(:<FieldName>)+ <StorageBucketObjectName>))
|
||||
[warnifnodata] [columndelimiter <Character>] [quotechar <Character>]
|
||||
[warnifnodata] [columndelimiter <Character>] [noescapechar <Boolean>] [quotechar <Character>]
|
||||
[endcsv|(fields <FieldNameList>)]
|
||||
(matchfield|skipfield <FieldName> <RegularExpression>)*
|
||||
[delimiter <Character>]
|
||||
@@ -303,6 +304,7 @@ croscsvfile_sn
|
||||
* `gcsdoc(:<FieldName>)+ <StorageBucketObjectName>` - A Google Cloud Storage Bucket Object and the one or more columns that contain ChromeOS serial numbers
|
||||
* `warnifnodata` - Issue message 'No CSV file data found' and exit with return code 60 if there is no data selected from the file
|
||||
* `columndelimiter <Character>` - Columns are separated by `<Character>`; if not specified, the value of `csv_input_column_delimiter` from `gam.cfg` will be used
|
||||
* `noescapechar <Boolean>` - Should `\` be ignored as an escape character; if not specified, the value of `csv_input_no_escape_char` from `gam.cfg` will be used
|
||||
* `quotechar <Character>` - The column quote characer is `<Character>`; if not specified, the value of `csv_input_quote_char` from `gam.cfg` will be used
|
||||
* `endcsv` - Use this option to signal the end of the csvfile parameters in the case that the next argument on the command line is `fields` but is specifying the output field list for the command not column headings
|
||||
* `fields <FieldNameList>` - The column headings of a CSV file that does not contain column headings
|
||||
@@ -334,7 +336,7 @@ csvdatafile
|
||||
(gdoc(:<FieldName>)+ <UserGoogleDoc>)|
|
||||
(gcscsv(:<FieldName>)+ <StorageBucketObjectName>)|
|
||||
(gcsdoc(:<FieldName>)+ <StorageBucketObjectName>))
|
||||
[warnifnodata] [columndelimiter <Character>] [quotechar <Character>]
|
||||
[warnifnodata] [columndelimiter <Character>] [noescapechar <Boolean>] [quotechar <Character>]
|
||||
[endcsv|(fields <FieldNameList>)]
|
||||
(matchfield|skipfield <FieldName> <RegularExpression>)*
|
||||
[delimiter <Character>]
|
||||
@@ -348,6 +350,7 @@ csvdatafile
|
||||
* `gcsdoc(:<FieldName>)+ <StorageBucketObjectName>` - A Google Cloud Storage Bucket Object and the one or more columns that contain ChromeOS deviceIds
|
||||
* `warnifnodata` - Issue message 'No CSV file data found' and exit with return code 60 if there is no data selected from the file
|
||||
* `columndelimiter <Character>` - Columns are separated by `<Character>`; if not specified, the value of `csv_input_column_delimiter` from `gam.cfg` will be used
|
||||
* `noescapechar <Boolean>` - Should `\` be ignored as an escape character; if not specified, the value of `csv_input_no_escape_char` from `gam.cfg` will be used
|
||||
* `quotechar <Character>` - The column quote characer is `<Character>`; if not specified, the value of `csv_input_quote_char` from `gam.cfg` will be used
|
||||
* `endcsv` - Use this option to signal the end of the csvfile parameters in the case that the next argument on the command line is `fields` but is specifying the output field list for the command not column headings
|
||||
* `fields <FieldNameList>` - The column headings of a CSV file that does not contain column headings
|
||||
@@ -363,7 +366,7 @@ csvkmd
|
||||
(gdoc <UserGoogleDoc>)|
|
||||
(gcscsv <StorageBucketObjectName>)|
|
||||
(gcsdoc <StorageBucketObjectName>))
|
||||
[charset <Charset>] [columndelimiter <Character>] [quotechar <Character>] [fields <FieldNameList>])
|
||||
[charset <Charset>] [columndelimiter <Character>] [noescapechar <Boolean>] [quotechar <Character>] [fields <FieldNameList>])
|
||||
keyfield <FieldName> [keypattern <RegularExpression>] [keyvalue <String>] [delimiter <Character>]
|
||||
subkeyfield <FieldName> [keypattern <RegularExpression>] [keyvalue <String>] [delimiter <Character>]
|
||||
(matchfield|skipfield <FieldName> <RegularExpression>)*
|
||||
@@ -376,6 +379,7 @@ csvkmd
|
||||
* `gdoc <UserGoogleDoc>` - A Google Doc containing rows with columns of the type of item specified
|
||||
* `warnifnodata` - Issue message 'No CSV file data found' and exit with return code 60 if there is no data selected from the file
|
||||
* `columndelimiter <Character>` - Columns are separated by `<Character>`; if not specified, the value of `csv_input_column_delimiter` from `gam.cfg` will be used
|
||||
* `noescapechar <Boolean>` - Should `\` be ignored as an escape character; if not specified, the value of `csv_input_no_escape_char` from `gam.cfg` will be used
|
||||
* `quotechar <Character>` - The column quote characer is `<Character>`; if not specified, the value of `csv_input_quote_char` from `gam.cfg` will be used
|
||||
* `endcsv` - Use this option to signal the end of the csvfile parameters in the case that the next argument on the command line is `fields` but is specifying the output field list for the command not column headings
|
||||
* `fields <FieldNameList>` - The column headings of a CSV file that does not contain column headings
|
||||
|
||||
@@ -63,7 +63,7 @@ A CSV file with one or more columns per row that contain Items.
|
||||
(gdoc(:<FieldName>)+ <UserGoogleDoc>)|
|
||||
(gcscsv(:<FieldName>)+ <StorageBucketObjectName>)|
|
||||
(gcsdoc(:<FieldName>)+ <StorageBucketObjectName>))
|
||||
[warnifnodata] [columndelimiter <Character>] [quotechar <Character>]
|
||||
[warnifnodata] [columndelimiter <Character>] [noescapechar <Boolean>] [quotechar <Character>]
|
||||
[endcsv|(fields <FieldNameList>)]
|
||||
(matchfield|skipfield <FieldName> <RegularExpression>)*
|
||||
[delimiter <Character>]
|
||||
@@ -75,6 +75,7 @@ A CSV file with one or more columns per row that contain Items.
|
||||
* `gcsdoc(:<FieldName>)+ <StorageBucketObjectName>` - A Google Cloud Storage Bucket Object and the one or more columns that contain Items
|
||||
* `warnifnodata` - Issue message 'No CSV file data found' and exit with return code 60 if there is no data selected from the file
|
||||
* `columndelimiter <Character>` - Columns are separated by `<Character>`; if not specified, the value of `csv_input_column_delimiter` from `gam.cfg` will be used
|
||||
* `noescapechar <Boolean>` - Should `\` be ignored as an escape character; if not specified, the value of `csv_input_no_escape_char` from `gam.cfg` will be used
|
||||
* `quotechar <Character>` - The column quote characer is `<Character>`; if not specified, the value of `csv_input_quote_char` from `gam.cfg` will be used
|
||||
* `endcsv` - Use this option to signal the end of the csvfile parameters in the case that the next argument on the command line is `fields` but is specifying the output field list for the command not column headings
|
||||
* `fields <FieldNameList>` - The column headings of a CSV file that does not contain column headings
|
||||
@@ -90,7 +91,7 @@ A CSV file with a key column that contains an Item and optional subkey and data
|
||||
(gdoc <UserGoogleDoc>)|
|
||||
(gcscsv <StorageBucketObjectName>)|
|
||||
(gcsdoc <StorageBucketObjectName>))
|
||||
[charset <Charset>] [columndelimiter <Character>] [quotechar <Character>] [fields <FieldNameList>])
|
||||
[charset <Charset>] [columndelimiter <Character>] [noescapechar <Boolean>] [quotechar <Character>] [fields <FieldNameList>])
|
||||
keyfield <FieldName> [keypattern <RegularExpression>] [keyvalue <String>] [delimiter <Character>]
|
||||
subkeyfield <FieldName> [keypattern <RegularExpression>] [keyvalue <String>] [delimiter <Character>]
|
||||
(matchfield|skipfield <FieldName> <RegularExpression>)*
|
||||
@@ -102,6 +103,7 @@ A CSV file with a key column that contains an Item and optional subkey and data
|
||||
* `gcscsv <StorageBucketObjectName>` - A Google Cloud Storage Bucket Object containing rows with columns of items
|
||||
* `gcsdoc <StorageBucketObjectName>` - A Google Cloud Storage Bucket Object containing rows with columns of items
|
||||
* `columndelimiter <Character>` - Columns are separated by `<Character>`; if not specified, the value of `csv_input_column_delimiter` from `gam.cfg` will be used
|
||||
* `noescapechar <Boolean>` - Should `\` be ignored as an escape character; if not specified, the value of `csv_input_no_escape_char` from `gam.cfg` will be used
|
||||
* `quotechar <Character>` - The column quote characer is `<Character>`; if not specified, the value of `csv_input_quote_char` from `gam.cfg` will be used
|
||||
* `endcsv` - Use this option to signal the end of the csvfile parameters in the case that the next argument on the command line is `fields` but is specifying the output field list for the command not column headings
|
||||
* `fields <FieldNameList>` - The column headings of a CSV file that does not contain column headings
|
||||
|
||||
@@ -127,7 +127,7 @@
|
||||
(gdoc(:<FieldName>)+ <UserGoogleDoc>)|
|
||||
(gcscsv(:<FieldName>)+ <StorageBucketObjectName>)|
|
||||
(gcsdoc(:<FieldName>)+ <StorageBucketObjectName>))
|
||||
[warnifnodata] [columndelimiter <Character>] [quotechar <Character>]
|
||||
[warnifnodata] [columndelimiter <Character>] [noescapechar <Boolean>][quotechar <Character>]
|
||||
[endcsv|(fields <FieldNameList>)]
|
||||
(matchfield|skipfield <FieldName> <RegularExpression>)*
|
||||
[delimiter <Character>])|
|
||||
@@ -148,7 +148,7 @@
|
||||
(gdoc(:<FieldName>)+ <UserGoogleDoc>)|
|
||||
(gcscsv(:<FieldName>)+ <StorageBucketObjectName>)|
|
||||
(gcsdoc(:<FieldName>)+ <StorageBucketObjectName>))
|
||||
[warnifnodata] [columndelimiter <Character>] [quotechar <Character>]
|
||||
[warnifnodata] [columndelimiter <Character>] [noescapechar <Boolean>][quotechar <Character>]
|
||||
[endcsv|(fields <FieldNameList>)]
|
||||
(matchfield|skipfield <FieldName> <RegularExpression>)*
|
||||
[delimiter <Character>])|
|
||||
@@ -161,7 +161,7 @@
|
||||
(gdoc <UserGoogleDoc>)|
|
||||
(gcscsv <StorageBucketObjectName>)|
|
||||
(gcsdoc <StorageBucketObjectName>))
|
||||
[charset <Charset>] [columndelimiter <Character>] [quotechar <Character>] [fields <FieldNameList>])
|
||||
[charset <Charset>] [columndelimiter <Character>] [noescapechar <Boolean>][quotechar <Character>] [fields <FieldNameList>])
|
||||
keyfield <FieldName> [keypattern <RegularExpression>] [keyvalue <String>] [delimiter <Character>]
|
||||
subkeyfield <FieldName> [keypattern <RegularExpression>] [keyvalue <String>] [delimiter <Character>]
|
||||
(matchfield|skipfield <FieldName> <RegularExpression>)*
|
||||
@@ -360,7 +360,7 @@ csvfile
|
||||
(gdoc(:<FieldName>)+ <UserGoogleDoc>)|
|
||||
(gcscsv(:<FieldName>)+ <StorageBucketObjectName>)|
|
||||
(gcsdoc(:<FieldName>)+ <StorageBucketObjectName>))
|
||||
[warnifnodata] [columndelimiter <Character>] [quotechar <Character>]
|
||||
[warnifnodata] [columndelimiter <Character>] [noescapechar <Boolean>][quotechar <Character>]
|
||||
[endcsv|(fields <FieldNameList>)]
|
||||
(matchfield|skipfield <FieldName> <RegularExpression>)*
|
||||
[delimiter <Character>]
|
||||
@@ -373,7 +373,8 @@ csvfile
|
||||
* `gcsdoc(:<FieldName>)+ <StorageBucketObjectName>` - A Google Cloud Storage Bucket Object and the one or more columns that contain Users
|
||||
* `warnifnodata` - Issue message 'No CSV file data found' and exit with return code 60 if there is no data selected from the file
|
||||
* `columndelimiter <Character>` - Columns are separated by `<Character>`; if not specified, the value of `csv_input_column_delimiter` from `gam.cfg` will be used
|
||||
* `quotechar <Character>` - The column quote characer is `<Character>`; if not specified, the value of `csv_input_quote_char` from `gam.cfg` will be used
|
||||
* `noescapechar <Boolean>` - Should `\` be ignored as an escape character; if not specified, the value of `csv_input_no_escape_char` from `gam.cfg` will be used
|
||||
* `quotechar <Character>` - The column quote character is `<Character>`; if not specified, the value of `csv_input_quote_char` from `gam.cfg` will be used
|
||||
* `endcsv` - Use this option to signal the end of the csvfile parameters in the case that the next argument on the command line is `fields` but is specifying the output field list for the command not column headings
|
||||
* `fields <FieldNameList>` - The column headings of a CSV file that does not contain column headings
|
||||
* `(matchfield|skipfield <FieldName> <RegularExpression>)*` - The criteria to select rows from the CSV file; can be used multiple times; if not specified, all rows are selected
|
||||
@@ -408,7 +409,7 @@ csvdatafile
|
||||
(gdoc(:<FieldName>)+ <UserGoogleDoc>)|
|
||||
(gcscsv(:<FieldName>)+ <StorageBucketObjectName>)|
|
||||
(gcsdoc(:<FieldName>)+ <StorageBucketObjectName>))
|
||||
[warnifnodata] [columndelimiter <Character>] [quotechar <Character>]
|
||||
[warnifnodata] [columndelimiter <Character>] [noescapechar <Boolean>][quotechar <Character>]
|
||||
[endcsv|(fields <FieldNameList>)]
|
||||
(matchfield|skipfield <FieldName> <RegularExpression>)*
|
||||
[delimiter <Character>]
|
||||
@@ -422,7 +423,8 @@ csvdatafile
|
||||
* `gcsdoc(:<FieldName>)+ <StorageBucketObjectName>` - A Google Cloud Storage Bucket Object and the one or more columns contain the type of item specified
|
||||
* `warnifnodata` - Issue message 'No CSV file data found' and exit with return code 60 if there is no data selected from the file
|
||||
* `columndelimiter <Character>` - Columns are separated by `<Character>`; if not specified, the value of `csv_input_column_delimiter` from `gam.cfg` will be used
|
||||
* `quotechar <Character>` - The column quote characer is `<Character>`; if not specified, the value of `csv_input_quote_char` from `gam.cfg` will be used
|
||||
* `noescapechar <Boolean>` - Should `\` be ignored as an escape character; if not specified, the value of `csv_input_no_escape_char` from `gam.cfg` will be used
|
||||
* `quotechar <Character>` - The column quote character is `<Character>`; if not specified, the value of `csv_input_quote_char` from `gam.cfg` will be used
|
||||
* `endcsv` - Use this option to signal the end of the csvfile parameters in the case that the next argument on the command line is `fields` but is specifying the output field list for the command not column headings
|
||||
* `fields <FieldNameList>` - The column headings of a CSV file that does not contain column headings
|
||||
* `(matchfield|skipfield <FieldName> <RegularExpression>)*` - The criteria to select rows from the CSV file; can be used multiple times; if not specified, all rows are selected
|
||||
@@ -439,7 +441,7 @@ csvkmd
|
||||
(gdoc <UserGoogleDoc>)|
|
||||
(gcscsv <StorageBucketObjectName>)|
|
||||
(gcsdoc <StorageBucketObjectName>))
|
||||
[charset <Charset>] [columndelimiter <Character>] [quotechar <Character>] [fields <FieldNameList>])
|
||||
[charset <Charset>] [columndelimiter <Character>] [noescapechar <Boolean>][quotechar <Character>] [fields <FieldNameList>])
|
||||
keyfield <FieldName> [keypattern <RegularExpression>] [keyvalue <String>] [delimiter <Character>]
|
||||
subkeyfield <FieldName> [keypattern <RegularExpression>] [keyvalue <String>] [delimiter <Character>]
|
||||
(matchfield|skipfield <FieldName> <RegularExpression>)*
|
||||
@@ -454,7 +456,8 @@ csvkmd
|
||||
* `gcsdoc <StorageBucketObjectName>` - A Google Cloud Storage Bucket Object with columns of the type of item specified
|
||||
* `warnifnodata` - Issue message 'No CSV file data found' and exit with return code 60 if there is no data selected from the file
|
||||
* `columndelimiter <Character>` - Columns are separated by `<Character>`; if not specified, the value of `csv_input_column_delimiter` from `gam.cfg` will be used
|
||||
* `quotechar <Character>` - The column quote characer is `<Character>`; if not specified, the value of `csv_input_quote_char` from `gam.cfg` will be used
|
||||
* `noescapechar <Boolean>` - Should `\` be ignored as an escape character; if not specified, the value of `csv_input_no_escape_char` from `gam.cfg` will be used
|
||||
* `quotechar <Character>` - The column quote character is `<Character>`; if not specified, the value of `csv_input_quote_char` from `gam.cfg` will be used
|
||||
* `endcsv` - Use this option to signal the end of the csvfile parameters in the case that the next argument on the command line is `fields` but is specifying the output field list for the command not column headings
|
||||
* `fields <FieldNameList>` - The column headings of a CSV file that does not contain column headings
|
||||
* `(keyfield <FieldName> [keypattern <RegularExpression>] [keyvalue <String>] [delimiter <Character>])+`
|
||||
|
||||
@@ -10,6 +10,125 @@ Add the `-s` option to the end of the above commands to suppress creating the `g
|
||||
|
||||
See [Downloads](https://github.com/taers232c/GAMADV-XTD3/wiki/Downloads) for Windows or other options, including manual installation
|
||||
|
||||
### 6.66.12
|
||||
|
||||
Upgraded to Python 3.12.1 where possible.
|
||||
|
||||
Updated all drive commands to handle the following error:
|
||||
```
|
||||
ERROR: 401: Active session is invalid. Error code: 4 - authError
|
||||
```
|
||||
This is due to the Drive SDK API being disabled in the user's OU.
|
||||
* See: https://support.google.com/a/answer/6105699
|
||||
|
||||
### 6.66.11
|
||||
|
||||
Fixed/improved handling of shortcuts in `gam <UserTypeEntity> transfer drive`.
|
||||
|
||||
### 6.66.10
|
||||
|
||||
Updated `gam create datatransfer` to handle the following error:
|
||||
```
|
||||
ERROR: 401: Active session is invalid. Error code: 4 - authError
|
||||
```
|
||||
|
||||
### 6.66.09
|
||||
|
||||
Fixed bug in `gam <UserTypeEntity> print filelist ... allfields` that caused a trap
|
||||
when `gam.cfg` contained `drive_v3_native_names = False`.
|
||||
|
||||
### 6.66.08
|
||||
|
||||
Added additional columns `isBase` and `baseId` to `gam <UserTypeEntity> print fileparenttree`
|
||||
to simplify processing the output in a script.
|
||||
|
||||
### 6.66.07
|
||||
|
||||
Fixed bug in `gam <UserTypeEntity> print diskusage` that caused a trap.
|
||||
|
||||
### 6.66.06
|
||||
|
||||
Added a command the print the parent tree of file/folder.
|
||||
```
|
||||
gam <UserTypeEntity> print fileparenttree <DriveFileEntity> [todrive <ToDriveAttribute>*]
|
||||
[stripcrsfromname]
|
||||
```
|
||||
* See: https://github.com/taers232c/GAMADV-XTD3/wiki/Users-Drive-Files-Display#display-file-parent-tree
|
||||
|
||||
### 6.66.05
|
||||
|
||||
Added column `space.name` to `gam <UserTypeEntity> print chatmembers`.
|
||||
|
||||
### 6.66.04
|
||||
|
||||
Updated Chat info|show|print commands to display all time fields in local time if specified in `gam.cfg`.
|
||||
|
||||
### 6.66.03
|
||||
|
||||
Fixed bug in `gam <UserTypeEntity> print filelist select <DriveFileEntity>` where `stripcrsfromname` was not being
|
||||
applied to files below the selected folder.
|
||||
|
||||
### 6.66.02
|
||||
|
||||
Updated device commmands to handle the following error caused by an invalid query.
|
||||
```
|
||||
ERROR: 400: invalidArgument - Request contains an invalid argument.
|
||||
```
|
||||
|
||||
Added fields `deviceid` and `hostname` to `<DeviceFieldName>`.
|
||||
|
||||
### 6.66.01
|
||||
|
||||
Added the following variables to gam.cfg that allow control over whether `\` is used as an escape character
|
||||
when reading/writing CSV files.
|
||||
```
|
||||
csv_input_no_escape_char - default value True
|
||||
csv_output_no_escape_char - default value False
|
||||
todrive_no_escape_char - default value True
|
||||
```
|
||||
When the value is True, `\` is ignored as an escape character; when the value is False,
|
||||
`\\` on input is converted to `\`, `\` on output is converted to `\\`.
|
||||
|
||||
* See: https://github.com/taers232c/GAMADV-XTD3/wiki/CSV-Special-Characters
|
||||
|
||||
### 6.66.00
|
||||
|
||||
Added support for `Focus Time` and `Out of Office` status events in user's primary calendars.
|
||||
* See: https://github.com/taers232c/GAMADV-XTD3/wiki/Users-Calendars-Events#status-events
|
||||
This is a work-in-progress.
|
||||
|
||||
Updated `gam <UserTypeEntity> print|show messages` to allow option `show_size` to be used with option `countsonly`
|
||||
to display the cumulative size of the messages selected.
|
||||
```
|
||||
gam user user@domain.com print messages query "newer_than:31d" countsonly showsize
|
||||
Getting all Messages for user@domain.com
|
||||
Got 16 Messagess for user@domain.com...
|
||||
User,messages,size
|
||||
user@domain.com,16,92806
|
||||
```
|
||||
|
||||
### 6.65.17
|
||||
|
||||
Added the option `mappermissionsdomain <DomainName1> <DomainName2>` to `gam <UserTypeEntity> create drivefileacl <DriveFileEntity>`
|
||||
that maps `<DomainName1>` to `<DomainName2>` in the `user <UserItem>)|(group <GroupItem>)|(domain <DomainName>)` options;
|
||||
`<UserItem>` and `<GroupItem>` must specify email addresses for the mapping to succeed.
|
||||
The option can be specified multiple times to provide different mappings. This option will be most useful
|
||||
when reading a CSV file containing ACLs referencing `<DomainName1>` and you want a new ACL with the same options but in `<DomainName2>`.
|
||||
|
||||
### 6.65.16
|
||||
|
||||
Fixed bug in `gam <UserTypeEntity> print filecounts` where `Item Cap` showed an incorrect value.
|
||||
|
||||
Added option `addorigfieldstosubject` to `gam <UserTypeEntity> forward messages|threads` that causes GAM
|
||||
to append the original `from`, `to` and `date` fields to the message subject.
|
||||
```
|
||||
Fwd: Ross to TestUser (Original From: Ross Scroggs <ross.scroggs@gmail.com> To: testuser@domain.com Date: Thu, 23 Nov 2023 07:01:59 -0800)
|
||||
```
|
||||
|
||||
### 6.65.15
|
||||
|
||||
Added additional options to `gam <UserTypeEntity> print|show youtubechannels`.
|
||||
|
||||
### 6.65.14
|
||||
|
||||
Fixed bug in gam <UserTypeEntity> copy|move drivefile` that caused a trap.
|
||||
|
||||
@@ -334,7 +334,7 @@ writes the credentials into the file oauth2.txt.
|
||||
admin@server:/Users/admin/bin/gamadv-xtd3$ rm -f /Users/admin/GAMConfig/oauth2.txt
|
||||
admin@server:/Users/admin/bin/gamadv-xtd3$ ./gam version
|
||||
WARNING: Config File: /Users/admin/GAMConfig/gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: /Users/admin/GAMConfig/oauth2.txt, Not Found
|
||||
GAMADV-XTD3 6.65.14 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource
|
||||
GAMADV-XTD3 6.66.12 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource
|
||||
Ross Scroggs <ross.scroggs@gmail.com>
|
||||
Python 3.10.8 64-bit final
|
||||
MacOS High Sierra 10.13.6 x86_64
|
||||
@@ -1002,7 +1002,7 @@ writes the credentials into the file oauth2.txt.
|
||||
C:\GAMADV-XTD3>del C:\GAMConfig\oauth2.txt
|
||||
C:\GAMADV-XTD3>gam version
|
||||
WARNING: Config File: C:\GAMConfig\gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: C:\GAMConfig\oauth2.txt, Not Found
|
||||
GAMADV-XTD3 6.65.14 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource
|
||||
GAMADV-XTD3 6.66.12 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource
|
||||
Ross Scroggs <ross.scroggs@gmail.com>
|
||||
Python 3.12.0 64-bit final
|
||||
Windows-10-10.0.17134 AMD64
|
||||
|
||||
@@ -112,7 +112,7 @@ You can redirect stdout and stderr to null and stderr can be redirected to stdou
|
||||
```
|
||||
<Redirect> ::=
|
||||
redirect csv <FileName> [multiprocess] [append] [noheader] [charset <Charset>]
|
||||
[columndelimiter <Character>] [quotechar <Character>]
|
||||
[columndelimiter <Character>] [noescapechar <Boolean>] [quotechar <Character>]
|
||||
[timestampcolumn <String>]
|
||||
[todrive <ToDriveAttribute>*] |
|
||||
redirect stdout <FileName> [multiprocess] [append] |
|
||||
@@ -141,8 +141,11 @@ subsequent GAM commands specify `append noheader`.
|
||||
The `charset <Charset>` subargument sets the character set of the CSV file; the default is the value of `charset`
|
||||
in `gam.cfg` which defaults to UTF-8.
|
||||
|
||||
The `columndelimiter <Character>` sets the intercolumn delimiter of the CSV file; the default value
|
||||
is the value of csv_output_column_delimiter` in `gam.cfg` which defaults to comma.
|
||||
The `columndelimiter <Character>` subargument sets the intercolumn delimiter of the CSV file; the default value
|
||||
is the value of `csv_output_column_delimiter` in `gam.cfg` which defaults to comma.
|
||||
|
||||
The `noescapechar <Boolean>` subargument controls whether `\` is used as an escape character when writing the CSV file; the default value
|
||||
is the value of `csv_output_no_escape_char` in `gam.cfg` which defaults to False.
|
||||
|
||||
The `quotechar <Character>` subargument sets the character used to quote fields in the CSV file
|
||||
that contaim special charactere; the default value is the value of `csv_output_quote_char` in `gam.cfg`
|
||||
|
||||
@@ -167,7 +167,7 @@ gam create user <EmailAddress> <UserAttribute>*
|
||||
gam update user <UserItem> <UserAttribute>
|
||||
[updateprimaryemail <RegularExpression> <EmailReplacement>]
|
||||
[updateoufromgroup <FileName> [charset <CharSet>]
|
||||
[columndelimiter <Character>] [quotechar <Character>]
|
||||
[columndelimiter <Character>] [noescapechar <Boolean>] [quotechar <Character>]
|
||||
[fields <FieldNameList>] [keyfield <FieldName>] [datafield <FieldName>]]
|
||||
[clearschema <SchemaName>] [clearschema <SchemaName>.<FieldName>]
|
||||
[createifnotfound] [notify <EmailAddress>] [subject <String>]
|
||||
|
||||
@@ -132,6 +132,9 @@ todrive_nobrowser
|
||||
todrive_noemail
|
||||
Enable/disable sending an email when todrive is specified
|
||||
Default: True
|
||||
todrive_no_escape_char
|
||||
When writing a CSV file to Google Drive, should `\` be ignored as an escape character.
|
||||
Default: True
|
||||
todrive_parent
|
||||
Parent folder for CSV files when todrive is specified;
|
||||
can be id:<DriveFolderID> or <DriveFolderName>
|
||||
@@ -180,6 +183,7 @@ direct the uploaded file to a particular user and location and add a timestamp t
|
||||
(tdlocale <Locale>)|
|
||||
(tdnobrowser [<Boolean>])|
|
||||
(tdnoemail [<Boolean>])|
|
||||
(tdnoescapechar [<Boolean>])|
|
||||
(tdparent (id:<DriveFolderID>)|<DriveFolderName>)|
|
||||
(tdretaintitle [<Boolean>])|
|
||||
(tdshare <EmailAddress> commenter|reader|writer)|
|
||||
@@ -233,6 +237,9 @@ If `tdfileid <DriveFileID>` is not specified, a new file is created.
|
||||
* `tdnobrowser` - If False, a browser is opened to view the file uploaded to Google Drive; if not specified, the `todrive_nobrowser` value from gam.cfg is used.
|
||||
* `tdnoemail` - If False, an email is sent to `tduser` informing them of name and URL of the uploaded file; if not specified, the `todrive_noemail` value from gam.cfg is used.
|
||||
|
||||
## Escape character
|
||||
* `tdnoescapechar <Boolean>` - Should `\` be ignored as an escape character; if not specified, the value of `todrive_no_escape_char` from `gam.cfg` will be used
|
||||
|
||||
## Local copy
|
||||
* `tdlocalcopy` - Should a local copy of the CSV file be saved in addition to the file uploaded to Google Drive; if not specified, the `todrive_localcopy` value from gam.cfg is used.
|
||||
|
||||
@@ -265,7 +272,7 @@ If `tdfileid <DriveFileID>` is not specified, a new file is created.
|
||||
You can specify `todrive` options in conjunction with `redirect csv`.
|
||||
```
|
||||
redirect csv <FileName> [multiprocess] [append] [noheader] [charset <Charset>]
|
||||
[columndelimiter <Character>] [quotechar <Character>]
|
||||
[columndelimiter <Character>] [noescapechar <Boolean>] [quotechar <Character>]
|
||||
[todrive <ToDriveAttribute>*]
|
||||
```
|
||||
If you are doing `redirect csv <FileName> multiprocess`, it is more efficient to specify `todrive <ToDriveAttribute>*` as part of
|
||||
@@ -274,6 +281,8 @@ the redirect as verification of the `todrive` settings, which can invole several
|
||||
`columndelimiter <Character>` and `quotechar <Character>` will not generally be used with `todrive` as
|
||||
Google Sheets only recognizes `,` as the column delimiter and `"` as the quote character.
|
||||
|
||||
`noescapechar true` will generally be used with `todrive` as Google Sheets does not recognize `\\` as an escaped `\`.
|
||||
|
||||
## Examples
|
||||
Generate a list of user IDs and names, title the file "User IDs and Names", upload it to the "GAM Reports" folder of usermgr@domain.com, add a timestamp to the title.
|
||||
```
|
||||
|
||||
@@ -17,9 +17,10 @@
|
||||
- [Empty calendar trash](#empty-calendar-trash)
|
||||
- [Display calendar events](#display-calendar-events)
|
||||
- [Update calendar event attendees](#update-calendar-event-attendees)
|
||||
- [Working location events](#working-location-events)
|
||||
- [Manage working location events](#manage-working-location-events)
|
||||
- [Display working location events](#display-working-location-events)
|
||||
- [Status events](#status-events)
|
||||
- [Focus time events](#focus-time-events)
|
||||
- [Out of officeevents](#out-of-office-events)
|
||||
- [Working location events](#working-location-events)
|
||||
|
||||
## API documentation
|
||||
* https://developers.google.com/calendar/v3/reference/events
|
||||
@@ -47,7 +48,7 @@
|
||||
(gdoc <UserGoogleDoc>)|
|
||||
(gcscsv <StorageBucketObjectName>)|
|
||||
(gcsdoc <StorageBucketObjectName>))
|
||||
[warnifnodata] [columndelimiter <Character>] [quotechar <Character>]
|
||||
[warnifnodata] [columndelimiter <Character>] [noescapechar <Boolean>] [quotechar <Character>]
|
||||
[endcsv|(fields <FieldNameList>)]
|
||||
|
||||
<CSVFileSelector> ::=
|
||||
@@ -56,7 +57,7 @@
|
||||
(gdoc(:<FieldName>)+ <UserGoogleDoc>)|
|
||||
(gcscsv(:<FieldName>)+ <StorageBucketObjectName>)|
|
||||
(gcsdoc(:<FieldName>)+ <StorageBucketObjectName>))
|
||||
[warnifnodata] [columndelimiter <Character>] [quotechar <Character>]
|
||||
[warnifnodata] [columndelimiter <Character>] [noescapechar <Boolean>] [quotechar <Character>]
|
||||
[endcsv|(fields <FieldNameList>)]
|
||||
(matchfield|skipfield <FieldName> <RegularExpression>)*
|
||||
[delimiter <Character>]
|
||||
@@ -166,12 +167,21 @@
|
||||
creator.id|
|
||||
creator.self
|
||||
|
||||
<EventFocusTimePropertiesSubfieldName> ::=
|
||||
focustimeproperties.chatstatus|
|
||||
focustimeproperties.declinemode|
|
||||
focustimeproperties.declinemessage
|
||||
|
||||
<EventOrganizerSubfieldName> ::=
|
||||
organizer.displayname|
|
||||
organizer.email|
|
||||
organizer.id|
|
||||
organizer.self
|
||||
|
||||
<EventOutOfOfficePropertiesSubfieldName> ::=
|
||||
outofoffice.declinemode|
|
||||
outofoffice.declinemessage
|
||||
|
||||
<EventWorkingLocationPropertiesSubfieldName> ::=
|
||||
workinglocationproperties.homeoffice|
|
||||
workinglocationproperties.customlocation|
|
||||
@@ -195,6 +205,7 @@
|
||||
endtimeunspecified|
|
||||
extendedproperties|
|
||||
eventtype|
|
||||
<EventFocusTimePropertiesSubfieldName>
|
||||
gadget|
|
||||
guestscaninviteothers|
|
||||
guestscanmodify|
|
||||
@@ -208,6 +219,7 @@
|
||||
organizer|
|
||||
<EventOrganizerSubfieldName>|
|
||||
originalstart|originalstarttime|
|
||||
<EventOutOfOfficePropertiesSubfieldName>
|
||||
privatecopy|
|
||||
recurrence|
|
||||
recurringeventid|
|
||||
@@ -228,9 +240,17 @@
|
||||
<AttendeeStatus> ::= accepted|declined|needsaction|tentative
|
||||
```
|
||||
```
|
||||
<EventType> ::=
|
||||
default|
|
||||
focustime|
|
||||
outofoffice|
|
||||
workinglocation
|
||||
<EventTypeList> ::= "<EventType>(,<EventType>)*"
|
||||
|
||||
<EventSelectProperty> ::=
|
||||
(after|starttime|timemin <Time>)|
|
||||
(before|endtime|timemax <Time>)|
|
||||
(eventtype|eventtypes <EventTypeList>)|
|
||||
(query <QueryCalendar>)|
|
||||
(privateextendedproperty <String>)|
|
||||
(sharedextendedproperty <String>)|
|
||||
@@ -276,6 +296,7 @@
|
||||
<TimeZone> ::= <String>
|
||||
|
||||
<EventAttribute> ::=
|
||||
(allday <Date>)|
|
||||
(anyonecanaddself [<Boolean>])|
|
||||
(attachment <String> <URL>)|
|
||||
(attendee <EmailAddress>)|
|
||||
@@ -284,7 +305,7 @@
|
||||
(color <EventColorName>)|
|
||||
(colorindex|colorid <EventColorIndex>)|
|
||||
(description <String>)|
|
||||
(end (allday <Date>)|<Time>)|
|
||||
(end|endtime (allday <Date>)|<Time>)|
|
||||
(guestscaninviteothers <Boolean>)|
|
||||
guestscantinviteothers|
|
||||
(guestscanmodify <Boolean>)|
|
||||
@@ -299,23 +320,21 @@
|
||||
(optionalattendee <EmailAddress>)|
|
||||
(originalstart|originalstarttime (allday <Date>)|<Time>)|
|
||||
(privateproperty <PropertyKey> <PropertyValue>)|
|
||||
(range <Date> <Date>)|
|
||||
(recurrence <RRULE, EXRULE, RDATE and EXDATE line>)|
|
||||
(reminder <Number> email|popup))|
|
||||
(selectattendees [<AttendeeAttendance>] [<AttendeeStatus>] <UserTypeEntity>)|
|
||||
(sequence <Integer>)|
|
||||
(sharedproperty <PropertyKey> <PropertyValue>)|
|
||||
(source <String> <URL>)|
|
||||
(start (allday <Date>)|<Time>)|
|
||||
(start|starttime (allday <Date>)|<Time>)|
|
||||
(status confirmed|tentative|cancelled)|
|
||||
(summary <String>)|
|
||||
tentative|
|
||||
(timerange <Time> <Time>)|
|
||||
(timezone <TimeZone>)|
|
||||
(transparency opaque|transparent)|
|
||||
(visibility default|public|private)|
|
||||
(workinglocation (home|
|
||||
(custom <String>)|
|
||||
(office <String> [building|buildingid <String>] [floor|floorname <String>]
|
||||
[section|floorsection <String>] [desk|deskcode <String>])))
|
||||
(visibility default|public|private)
|
||||
|
||||
The following attributes are equivalent:
|
||||
available - transparency transparent
|
||||
@@ -330,8 +349,8 @@ The following attributes are equivalent:
|
||||
|
||||
<EventUpdateAttribute> ::=
|
||||
<EventAttribute>|
|
||||
clearattendees|
|
||||
clearattachments|
|
||||
clearattendees|
|
||||
clearhangoutsmeet|
|
||||
(clearprivateproperty <PropertyKey>)|
|
||||
(clearsharedproperty <PropertyKey>)|
|
||||
@@ -362,10 +381,12 @@ This is dense reading; a simpler approach is to define a test event in Google Ca
|
||||
the recurrence rule that you want, then use `gam calendar <EmailAddress> info events eventid <EventId>` to get the recurrence rule and use it in subsequent commands.
|
||||
|
||||
```
|
||||
RRULE:FREQ=DAILY
|
||||
RRULE:FREQ=DAILY;COUNT=30
|
||||
RRULE:FREQ=WEEKLY;BYDAY=WE
|
||||
RRULE:FREQ=WEEKLY;WKST=SU;COUNT=13;BYDAY=WE
|
||||
RRULE:FREQ=DAILY - Daily
|
||||
RRULE:FREQ=DAILY;COUNT=30 - Daily for 30 days
|
||||
RRULE:FREQ=WEEKLY - Weekly on the same day of the week as the starting day; e.g., every Wednesday
|
||||
RRULE:FREQ=WEEKLY;COUNT=13 - Weekly on the same day of the week as the starting day; e.g., every Wednesday, for 13 weeks
|
||||
RRULE:FREQ=MONTHLY - Monthly on the same day of the month as the starting day; e.g., every 15th of the month
|
||||
RRULE:FREQ=MONTHLY;BYDAY=4TH - Monthly on the fourth instance of the starting day; e.g., every 4th Thursday
|
||||
```
|
||||
|
||||
## Event colors
|
||||
@@ -406,6 +427,7 @@ If none of the following options are selected, all events are selected.
|
||||
The Google Calendar API processes `<EventSelectProperty>*`; you may specify none or multiple properties.
|
||||
* `after|starttime|timemin <Time>` - Lower bound (inclusive) for an event's end time to filter by. If timeMax is set, timeMin must be smaller than timeMax.
|
||||
* `before|endtime|timemax <Time>` - Upper bound (exclusive) for an event's start time to filter by. If timeMin is set, timeMax must be greater than timeMin.
|
||||
* `eventtypes <EventTypeList>` - Select events based on their type.
|
||||
* `query <QueryCalendar>` - Free text search terms to find events that match these terms in any field, except for extended properties
|
||||
* `privateextendedproperty <String>` - A required private property; `<String>` must be of the form `propertyName=value`
|
||||
* `sharedextendedproperty <String>` - A required shared property; `<String>` must be of the form `propertyName=value`
|
||||
@@ -563,13 +585,6 @@ gam <UserTypeEntity> delete events <UserCalendarEntity> [doit] [<EventNotificati
|
||||
```
|
||||
No events are deleted unless you specify the `doit` option; omit `doit` to verify that you properly selected the events to delete.
|
||||
|
||||
## Move calendar events to another calendar
|
||||
Generally you won't move all events from one calendar to another; typically, you'll move events created by the event creator
|
||||
using `matchfield creatoremail <RegularExpression>` in conjunction with other `<EventSelectProperty>` and `<EventMatchProperty>` options.
|
||||
```
|
||||
gam <UserTypeEntity> move events <UserCalendarEntity> [<EventEntity>] destination|to <CalendarItem> [<EventNotificationAttribute>]
|
||||
```
|
||||
|
||||
## Empty calendar trash
|
||||
A user signed in to Google Calendar can empty the calendar trash but there is no direct API support for this operation.
|
||||
To empty the calendar trash a temporary calendar is created, the deleted events are moved to the temporary calendar and then the temporary calendar is deleted.
|
||||
@@ -692,6 +707,105 @@ the second adds the primary email.
|
||||
|
||||
The attendee changes are displayed but not processed unless `doit` is specified.
|
||||
|
||||
## Status events
|
||||
|
||||
## Focus time events
|
||||
|
||||
## Manage focus time events
|
||||
You can create and delete focus time events; they can not be updated.
|
||||
To update a working location event, delete the working location event and recreate it.
|
||||
```
|
||||
gam <UserTypeEntity> create focustime
|
||||
[chatstatus available|donotdisturb]|
|
||||
[declinemode none|all|new] [declinemessage <String>]|
|
||||
(timerange <Time> <Time>)+
|
||||
|
||||
gam <UserTypeEntity> delete focustime
|
||||
(timerange <Time> <Time>)+
|
||||
```
|
||||
|
||||
focus time events span a time range:
|
||||
* `timerange <Time> <Time>` - A time range, may span multiple days
|
||||
|
||||
## Display focus time events
|
||||
```
|
||||
gam <UserTypeEntity> show focustime
|
||||
(timerange <Time> <Time>)+
|
||||
[showdayofweek]
|
||||
[formatjson]
|
||||
```
|
||||
`showdayofweek` displays `dayOfWeek` when event start and end times are displayed.
|
||||
|
||||
By default, Gam displays the information as an indented list of keys and values.
|
||||
* `formatjson` - Display the fields in JSON format.
|
||||
|
||||
```
|
||||
gam <UserTypeEntity> print focustime
|
||||
(timerange <Time> <Time>)+
|
||||
[showdayofweek]
|
||||
[formatjson [quotechar <Character>]] [todrive <ToDriveAttribute>*]
|
||||
```
|
||||
`showdayofweek` displays columns `start.dayOfWeek` and `end.dayOfWeek` when event start and end times are displayed.
|
||||
|
||||
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, Gam displays event details, use `countsonly` to display only the number of events. `formatjson` does not apply in this case.
|
||||
|
||||
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.
|
||||
|
||||
## Out of office events
|
||||
|
||||
## Manage out of office events
|
||||
You can create and delete out of office events; they can not be updated.
|
||||
To update a working location event, delete the working location event and recreate it.
|
||||
```
|
||||
gam <UserTypeEntity> create outofoffice
|
||||
[declinemode none|all|new] [declinemessage <String>]|
|
||||
(timerange <Time> <Time>)+
|
||||
|
||||
gam <UserTypeEntity> delete outofoffice
|
||||
(timerange <Time> <Time>)+
|
||||
```
|
||||
|
||||
out of office events span a time range:
|
||||
* `timerange <Time> <Time>` - A time range, may span multiple days
|
||||
|
||||
## Display out of office events
|
||||
```
|
||||
gam <UserTypeEntity> show outofoffice
|
||||
(timerange <Time> <Time>)+
|
||||
[showdayofweek]
|
||||
[formatjson]
|
||||
```
|
||||
`showdayofweek` displays `dayOfWeek` when event start and end times are displayed.
|
||||
|
||||
By default, Gam displays the information as an indented list of keys and values.
|
||||
* `formatjson` - Display the fields in JSON format.
|
||||
|
||||
```
|
||||
gam <UserTypeEntity> print outofoffice
|
||||
(timerange <Time> <Time>)+
|
||||
[showdayofweek]
|
||||
[formatjson [quotechar <Character>]] [todrive <ToDriveAttribute>*]
|
||||
```
|
||||
`showdayofweek` displays columns `start.dayOfWeek` and `end.dayOfWeek` when event start and end times are displayed.
|
||||
|
||||
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, Gam displays event details, use `countsonly` to display only the number of events. `formatjson` does not apply in this case.
|
||||
|
||||
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.
|
||||
|
||||
## Working location events
|
||||
|
||||
## Manage working location events
|
||||
|
||||
@@ -204,8 +204,9 @@ The `quotechar <Character>` option allows you to choose an alternate quote chara
|
||||
### Add members to a chat space
|
||||
```
|
||||
gam <UserTypeEntity> create chatmember <ChatSpace>
|
||||
[type human|bot]
|
||||
((user <UserItem>)|(members <UserTypeEntity>))*
|
||||
[type human|bot] [role member|manager]
|
||||
(user <UserItem>)* (members <UserTypeEntity>)*
|
||||
(group <GroupItem>)* (groups <GroupEntity>)*
|
||||
[formatjson|returnidonly]
|
||||
```
|
||||
By default, Gam displays the information about the chatmember as an indented list of keys and values.
|
||||
@@ -213,10 +214,11 @@ By default, Gam displays the information about the chatmember as an indented lis
|
||||
* `returnidonly` - Display the chatmember name only
|
||||
|
||||
### Delete members from a chat space
|
||||
Delete members by specifying a chat space and user email addresses.
|
||||
Delete members by specifying a chat space and user/group email addresses.
|
||||
```
|
||||
gam <UserTypeEntity> delete chatmember <ChatSpace>
|
||||
((user <UserItem>)|(members <UserTypeEntity>))+
|
||||
((user <UserItem>)|(members <UserTypeEntity>)|
|
||||
(group <GroupItem>)|(groups <GroupEntity>))+
|
||||
```
|
||||
|
||||
Delete members by specifying chatmember names.
|
||||
@@ -236,7 +238,7 @@ By default, Gam displays the information as an indented list of keys and values.
|
||||
### Display information about all chat members in a chat space
|
||||
```
|
||||
gam <UserTypeEntity> show chatmembers <ChatSpace>
|
||||
[showinvited [<Boolean>]] [filter <String>]
|
||||
[showinvited [<Boolean>]] [showgroups [<Boolean>]] [filter <String>]
|
||||
[formatjson]
|
||||
```
|
||||
|
||||
@@ -245,7 +247,7 @@ By default, Gam displays the information as an indented list of keys and values.
|
||||
|
||||
```
|
||||
gam <UserTypeEntity> print chatmembers [todrive <ToDriveAttribute>*] <ChatSpace>
|
||||
[showinvited [<Boolean>]] [filter <String>]
|
||||
[showinvited [<Boolean>]] [showgroups [<Boolean>]] [filter <String>]
|
||||
[formatjson [quotechar <Character>]]
|
||||
```
|
||||
|
||||
|
||||
@@ -78,7 +78,7 @@ gam <UserTypeEntity> print|show driveactivity [v2] [todrive <ToDriveAttributes>*
|
||||
yesterday|today|thismonth|(previousmonths <Integer>)]
|
||||
[action|actions [not] <DriveActivityActionList>]
|
||||
[consolidationstrategy legacy|none]
|
||||
[idmapfile <FileName>|(gsheet <UserGoogleSheet>) [charset <String>] [columndelimiter <Character>] [quotechar <Character>]]
|
||||
[idmapfile <FileName>|(gsheet <UserGoogleSheet>) [charset <String>] [columndelimiter <Character>] [noescapechar <Boolean>] [quotechar <Character>]]
|
||||
[formatjson [quotechar <Character>]]
|
||||
```
|
||||
By default, Drive Activity API v2 is used; the `v2` option is ignored.
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
- [Display file share counts](#display-file-share-counts)
|
||||
- [Display file tree](#display-file-tree)
|
||||
- [File selection starting point for Display file tree](#file-selection-starting-point-for-display-file-tree)
|
||||
- [Display file parent tree](#display-file-parent-tree)
|
||||
- [Display file list](#display-file-list)
|
||||
- [File selection by name and entity shortcuts for Display file list](#file-selection-by-name-and-entity-shortcuts-for-display-file-list)
|
||||
- [File selection starting point for Display file list](#file-selection-starting-point-for-display-file-list)
|
||||
@@ -33,6 +34,7 @@
|
||||
|
||||
## API documentation
|
||||
* https://developers.google.com/drive/api/v3/reference/files
|
||||
* https://support.google.com/a/answer/6105699
|
||||
|
||||
## Definitions
|
||||
* [`<DriveFileEntity>`](Drive-File-Selection)
|
||||
@@ -79,6 +81,7 @@
|
||||
canaddfolderfromanotherdrive|
|
||||
canaddmydriveparent|
|
||||
canchangecopyrequireswriterpermission|
|
||||
canchangecopyrequireswriterpermissionrestriction|
|
||||
canchangedomainusersonlyrestriction|
|
||||
canchangedrivebackground|
|
||||
canchangedrivemembersonlyrestriction|
|
||||
@@ -96,11 +99,14 @@
|
||||
canmanagemembers|
|
||||
canmodifycontent|
|
||||
canmodifycontentrestriction|
|
||||
canmodifyeditorcontentrestriction|
|
||||
canmodifylabels|
|
||||
canmodifyownercontentrestriction|
|
||||
canmovechildrenoutofdrive|
|
||||
canmovechildrenoutofteamdrive|
|
||||
canmovechildrenwithindrive|
|
||||
canmovechildrenwithinteamdrive|
|
||||
canmoveitemintodrive|
|
||||
canmoveitemintoteamdrive|
|
||||
canmoveitemoutofdrive|
|
||||
canmoveitemoutofteamdrive|
|
||||
@@ -112,6 +118,7 @@
|
||||
canreadrevisions|
|
||||
canreadteamdrive|
|
||||
canremovechildren|
|
||||
canremovecontentrestriction|
|
||||
canremovemydriveparent|
|
||||
canrename|
|
||||
canrenamedrive|
|
||||
@@ -946,6 +953,40 @@ Show file tree starting at the folder named "Middle Folder" and 2 levels deeper
|
||||
```
|
||||
gam user testuser show filetree select drivefilename "Middle Folder" depth 2
|
||||
```
|
||||
## Display file parent tree
|
||||
Print the parent tree of file/folder.
|
||||
```
|
||||
gam <UserTypeEntity> print fileparenttree <DriveFileEntity> [todrive <ToDriveAttribute>*]
|
||||
[stripcrsfromname]
|
||||
```
|
||||
### Examples
|
||||
```
|
||||
# My Drive file
|
||||
$ gam user user@domain.com print fileparenttree 1tDGtnaBXc1qx_9NjBSZOUUNZ7FoRc2u6
|
||||
User: user@domain.com, Print 1 File Parent Tree
|
||||
Owner,id,name,parentId,depth,isRoot
|
||||
user@domain.com,1tDGtnaBXc1qx_9NjBSZOUUNZ7FoRc2u6,Bottom Folder,1HvAJtmQ2KZrKJhzY8aeZVScHhZ3HBJLp,4,False
|
||||
user@domain.com,1HvAJtmQ2KZrKJhzY8aeZVScHhZ3HBJLp,Middle Folder,1CVqOJJLNQtxX4QEPdpDfbkjiq1oUsxne,3,False
|
||||
user@domain.com,1CVqOJJLNQtxX4QEPdpDfbkjiq1oUsxne,TopCopy,0AHYenC8f12ALUk9PVA,2,False
|
||||
user@domain.com,0AHYenC8f12ALUk9PVA,My Drive,,1,True
|
||||
|
||||
# Shared Drive file
|
||||
$ gam user user@domain.com print fileparenttree 1kAHa7Q801KXRF1DfoofNlW05UWDzddhVP_u_L2xGfFQ
|
||||
User: user@domain.com, Print 1 File Parent Tree
|
||||
Owner,id,name,parentId,depth,isRoot
|
||||
user@domain.com,1kAHa7Q801KXRF1DfoofNlW05UWDzddhVP_u_L2xGfFQ,Middle Doc,1DShPJ6iG1TnNsgiBn-Oy1OVE2BahYlPr,4,False
|
||||
user@domain.com,1DShPJ6iG1TnNsgiBn-Oy1OVE2BahYlPr,Middle Folder,1s3g64uWfuQrpXRPf82B-bWCB5VuyrOmQ,3,False
|
||||
user@domain.com,1s3g64uWfuQrpXRPf82B-bWCB5VuyrOmQ,Top Folder,0AL5LiIe4dqxZUk9PVA,2,False
|
||||
user@domain.com,0AL5LiIe4dqxZUk9PVA,TS Shared Drive 1,,1,True
|
||||
|
||||
# Shared with Me file
|
||||
$ gam user user@domain.com print fileparenttree 1S2D97pyG1vAil4hgNnGGLD2ldCwTOzXUM9D7XbeUv0s
|
||||
User: user@domain.com, Print 1 File Parent Tree
|
||||
Owner,id,name,parentId,depth,isRoot
|
||||
user@domain.com,1S2D97pyG1vAil4hgNnGGLD2ldCwTOzXUM9D7XbeUv0s,GooGoo,0B0NlVEBUkz-hfjVudlF4VHlYYWlmOEdCUUxDaHdLdXhJTF84YWQwbmpRWmZ3Qm0wZnpHSGs,2,False
|
||||
user@domain.com,0B0NlVEBUkz-hfjVudlF4VHlYYWlmOEdCUUxDaHdLdXhJTF84YWQwbmpRWmZ3Qm0wZnpHSGs,FooBar,,1,False
|
||||
```
|
||||
|
||||
## Display file list
|
||||
Display a list of file/folder details in CSV format.
|
||||
```
|
||||
@@ -1041,6 +1082,12 @@ Use the following option to select a subset of files based on their permissions.
|
||||
* `<PermissionMatch>* [<PermissionMatchAction>]` - Use permission matching to select files
|
||||
|
||||
## File selection starting point for Display file list
|
||||
You can limit the selection for files on a specific Shared drive.
|
||||
Any query will be applied to the Shared drive.
|
||||
```
|
||||
select <SharedDriveEntity>
|
||||
```
|
||||
|
||||
You can specify a specific folder from which to select files.
|
||||
```
|
||||
select <DriveFileEntity> [selectsubquery <QueryDriveFile>]
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
* https://developers.google.com/drive/api/v3/ref-single-parent
|
||||
* https://developers.google.com/drive/api/v3/shared-drives-diffs
|
||||
* https://developers.google.com/drive/api/v3/shortcuts
|
||||
* https://support.google.com/a/answer/6105699
|
||||
* https://support.google.com/a/answer/7374057
|
||||
* https://developers.google.com/docs/api/reference/rest
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@ Supported editions for this feature: Business Standard and Business Plus; Enterp
|
||||
<DriveLabelSelectionID> ::= <String>
|
||||
<DriveLabelSelectionIDList> ::= "<DriveLabelSelectionID>(,<DriveLabelSelectionID)*"
|
||||
|
||||
<DriveLabelLanguageCode> ::=
|
||||
<BCP47LanguageCode> ::=
|
||||
ar-sa| # Arabic Saudi Arabia
|
||||
cs-cz| # Czech Czech Republic
|
||||
da-dk| # Danish Denmark
|
||||
@@ -94,12 +94,12 @@ Three forms of the commands are available:
|
||||
|
||||
```
|
||||
gam [<UserTypeEntity>] info drivelabels <DriveLabelNameEntity>
|
||||
[[basic|full] [languagecode <DriveLabelLanguageCode>]
|
||||
[[basic|full] [languagecode <BCP47LanguageCode>]
|
||||
[formatjson] [adminaccess|asadmin]
|
||||
```
|
||||
* `basic` - Display fields: name,id,revisionId,labelType,properties.*; this is the default
|
||||
* `full` - Display all possible fields
|
||||
* `languagecode <DriveLabelLanguageCode>` - The BCP-47 language code to use for evaluating localized Field labels. When not specified, values in the default configured language will be used.
|
||||
* `languagecode <BCP47LanguageCode>` - The BCP-47 language code to use for evaluating localized Field labels. When not specified, values in the default configured language will be used.
|
||||
* `adminaccess|asadmin` - Use the user's admin credentials. This will return all Labels within the customer.
|
||||
|
||||
By default, Gam displays the information as an indented list of keys and values.
|
||||
@@ -107,13 +107,13 @@ By default, Gam displays the information as an indented list of keys and values.
|
||||
|
||||
```
|
||||
gam [<UserTypeEntity>] show drivelabels
|
||||
[basic|full] [languagecode <DriveLabelLanguageCode>]
|
||||
[basic|full] [languagecode <BCP47LanguageCode>]
|
||||
[publishedonly [<Boolean>]] [minimumrole applier|editor|organizer|reader]
|
||||
[formatjson] [adminaccess|asadmin]
|
||||
```
|
||||
* `basic` - Display fields: name,id,revisionId,labelType,properties.*; this is the default
|
||||
* `full` - Display all possible fields
|
||||
* `languagecode <DriveLabelLanguageCode>` - The BCP-47 language code to use for evaluating localized Field labels. When not specified, values in the default configured language will be used.
|
||||
* `languagecode <BCP47LanguageCode>` - The BCP-47 language code to use for evaluating localized Field labels. When not specified, values in the default configured language will be used.
|
||||
* `minimumrole applier|editor|organizer|reader` - Specifies the level of access the user must have on the returned Labels. Defaults to READER.
|
||||
* `adminaccess|asadmin` - Use the user's admin credentials. This will return all Labels within the customer.
|
||||
|
||||
@@ -122,13 +122,13 @@ By default, Gam displays the information as an indented list of keys and values.
|
||||
|
||||
```
|
||||
gam [<UserTypeEntity>] print drivelabels [todrive <ToDriveAttribute>*]
|
||||
[basic|full] [languagecode <DriveLabelLanguageCode>]
|
||||
[basic|full] [languagecode <BCP47LanguageCode>]
|
||||
[publishedonly [<Boolean>]] [minimumrole applier|editor|organizer|reader]
|
||||
[formatjson [quotechar <Character>]] [adminaccess|asadmin]
|
||||
```
|
||||
* `basic` - Display fields: name,id,revisionId,labelType,properties.*; this is the default
|
||||
* `full` - Display all possible fields
|
||||
* `languagecode <DriveLabelLanguageCode>` - The BCP-47 language code to use for evaluating localized Field labels. When not specified, values in the default configured language will be used.
|
||||
* `languagecode <BCP47LanguageCode>` - The BCP-47 language code to use for evaluating localized Field labels. When not specified, values in the default configured language will be used.
|
||||
* `minimumrole applier|editor|organizer|reader` - Specifies the level of access the user must have on the returned Labels. Defaults to READER.
|
||||
* `adminaccess|asadmin` - Use the user's admin credentials. This will return all Labels within the customer.
|
||||
|
||||
|
||||
@@ -129,11 +129,18 @@ specify `basicpermissions` and additional permission fields, e.g., `permissions.
|
||||
gam <UserTypeEntity> create|add drivefileacl <DriveFileEntity>
|
||||
anyone|(user <UserItem>)|(group <GroupItem>)|(domain <DomainName>) (role <DriveFileACLRole>)
|
||||
[withlink|(allowfilediscovery|discoverable [<Boolean>])] [expiration <Time>]
|
||||
(mappermissionsdomain <DomainName> <DomainName>)*
|
||||
[movetonewownersroot [<Boolean>]]
|
||||
[sendemail] [emailmessage <String>]
|
||||
[updatesheetprotectedranges [<Boolean>]]
|
||||
[showtitles] [nodetails|(csv [todrive <ToDriveAttribute>*] [formatjson [quotechar <Character>]])]
|
||||
```
|
||||
The option `mappermissionsdomain <DomainName1> <DomainName2>` maps `<DomainName1>` to `<DomainName2>` in the
|
||||
`user <UserItem>)|(group <GroupItem>)|(domain <DomainName>)` options;
|
||||
`<UserItem>` and `<GroupItem>` must specify email addresses for the mapping to succeed.
|
||||
The option can be specified multiple times to provide different mappings. This option will be most useful
|
||||
when reading a CSV file containing ACLs referencing `<DomainName1>` and you want a new ACL with the same options but in `<DomainName2>`.
|
||||
|
||||
From the Google Drive API documentation.
|
||||
* `movetonewownersroot` - This parameter only takes effect if the item is not in a shared drive and the request is attempting to transfer the ownership of the item.
|
||||
* `false` - Parents are not changed. The file is an orphan for the new owner. This is the default.
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
- [Display a selected set of messages](#display-a-selected-set-of-messages)
|
||||
- [Choose information to display](#choose-information-to-display)
|
||||
- [Display message content](#display-message-content)
|
||||
- [Display message count](#display-message-count)
|
||||
- [Display message counts](#display-message-counts)
|
||||
- [Display label counts](#display-label-counts)
|
||||
- [Print only options](#print-only-options)
|
||||
- [Show only options](#show-only-options)
|
||||
@@ -372,17 +372,22 @@ See below for message selection.
|
||||
gam <UserTypeEntity> forward message|messages recipient|to <RecipientEntity>
|
||||
(((query <QueryGmail> [querytime<String> <Date>]*) (matchlabel <LabelName>) [or|and])+
|
||||
[quick|notquick] [doit] [max_to_forward <Number>])|(ids <MessageIDEntity>)
|
||||
[subject <String>]
|
||||
[subject <String>] [addorigfieldstosubject]
|
||||
gam <UserTypeEntity> forward thread|threads recipient|to <RecipientEntity>
|
||||
(((query <QueryGmail> [querytime<String> <Date>]*) (matchlabel <LabelName>) [or|and])+
|
||||
[quick|notquick] [doit] [max_to_forward <Number>])|(ids <ThreadIDEntity>)
|
||||
[subject <String>]
|
||||
[subject <String>] [addorigfieldstosubject]
|
||||
```
|
||||
|
||||
By default, the message subject has `Fwd: ` prepended; use `subject <String>` to specify a new subject.
|
||||
|
||||
All `Cc` addresses are removed from the forwarded message.
|
||||
|
||||
If `addorigfieldstosubject` is specified, GAM appends the original `from`, `to` and `date` fields to the message subject.
|
||||
```
|
||||
Fwd: Ross to TestUser (Original From: Ross Scroggs <ross.scroggs@gmail.com> To: testuser@domain.com Date: Thu, 23 Nov 2023 07:01:59 -0800)
|
||||
```
|
||||
|
||||
See below for message selection.
|
||||
|
||||
## Manage messages/threads
|
||||
@@ -534,13 +539,15 @@ The `dateheaderconverttimezone [<Boolean>]>` option converts `<SMTPDateHeader>`
|
||||
* `showsize` - Display the message size
|
||||
* `showsnippet` - Display the message snippet
|
||||
|
||||
### Display message count
|
||||
### Display message counts
|
||||
* `countsonly` - Display the count of the number of messages
|
||||
* `showsize` - Display the cumulative message size
|
||||
|
||||
### Display label counts
|
||||
* `showlabels` - Display the message labels
|
||||
* `countsonly` - Display all message label counts
|
||||
* `positivecountsonly` - Display message label counts that are greater than 0
|
||||
* `showsize` - Display the cumulative message size for each label
|
||||
* `useronly` - Do not display system labels
|
||||
|
||||
## Print only options
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
- [API documentation](#api-documentation)
|
||||
- [Notes](#notes)
|
||||
- [Definitions](#definitions)
|
||||
- [Display Looker Studio assets](#display-data-studio-assets)
|
||||
- [Manage Looker Studio permissions](#manage-data-studio-permissions)
|
||||
- [Display Looker Studio assets](#display-looker-studio-assets)
|
||||
- [Manage Looker Studio permissions](#manage-looker-studio-permissions)
|
||||
- [Add Permissions](#add-permissions)
|
||||
- [Delete Permissions](#delete-permissions)
|
||||
- [Update Permissions](#update-permissions)
|
||||
- [Display Looker Studio permissions](#display-data-studio-permissions)
|
||||
- [Display Looker Studio permissions](#display-looker-studio-permissions)
|
||||
|
||||
## API documentation
|
||||
* https://developers.google.com/looker-studio/integrate/api/reference
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
- [API documentation](#api-documentation)
|
||||
- [Notes](#notes)
|
||||
- [Definitions](#definitions)
|
||||
- [Display Selected YouTube Channels](#display_selected-youtube_channels)
|
||||
- [Display Owned YouTube Channels](#display-owned-youtube_channels)
|
||||
- [Display Selected YouTube Channels](#display-selected-youtube-channels)
|
||||
- [Display Owned YouTube Channels](#display-owned-youtube-channels)
|
||||
|
||||
## API documentation
|
||||
* https://developers.google.com/youtube/v3/docs/channels/list
|
||||
@@ -18,6 +18,45 @@ gam user user@domain.com update serviceaccount
|
||||
## Definitions
|
||||
* [`<UserTypeEntity>`](Collections-of-Users)
|
||||
```
|
||||
<BCP47LanguageCode> ::=
|
||||
ar-sa| # Arabic Saudi Arabia
|
||||
cs-cz| # Czech Czech Republic
|
||||
da-dk| # Danish Denmark
|
||||
de-de| # German Germany
|
||||
el-gr| # Modern Greek Greece
|
||||
en-au| # English Australia
|
||||
en-gb| # English United Kingdom
|
||||
en-ie| # English Ireland
|
||||
en-us| # English United States
|
||||
en-za| # English South Africa
|
||||
es-es| # Spanish Spain
|
||||
es-mx| # Spanish Mexico
|
||||
fi-fi| # Finnish Finland
|
||||
fr-ca| # French Canada
|
||||
fr-fr| # French France
|
||||
he-il| # Hebrew Israel
|
||||
hi-in| # Hindi India
|
||||
hu-hu| # Hungarian Hungary
|
||||
id-id| # Indonesian Indonesia
|
||||
it-it| # Italian Italy
|
||||
ja-jp| # Japanese Japan
|
||||
ko-kr| # Korean Republic of Korea
|
||||
nl-be| # Dutch Belgium
|
||||
nl-nl| # Dutch Netherlands
|
||||
no-no| # Norwegian Norway
|
||||
pl-pl| # Polish Poland
|
||||
pt-br| # Portuguese Brazil
|
||||
pt-pt| # Portuguese Portugal
|
||||
ro-ro| # Romanian Romania
|
||||
ru-ru| # Russian Russian Federation
|
||||
sk-sk| # Slovak Slovakia
|
||||
sv-se| # Swedish Sweden
|
||||
th-th| # Thai Thailand
|
||||
tr-tr| # Turkish Turkey
|
||||
zh-cn| # Chinese China
|
||||
zh-hk| # Chinese Hong Kong
|
||||
zh-tw # Chinese Taiwan
|
||||
|
||||
<YouTubeChannelID> ::= <String>
|
||||
<YouTubeChannelIDList> ::= "<YouTubeChannelID>(,<YouTubeChannelID>)*"
|
||||
|
||||
@@ -37,22 +76,30 @@ gam user user@domain.com update serviceaccount
|
||||
Display YouTube channels selected by ID.
|
||||
```
|
||||
gam <UserTypeEntity> show youtubechannels
|
||||
channels <YouTubeChannelIDList>
|
||||
(mine|
|
||||
(ids|channels <YouTubeChannelIDList>)|
|
||||
(forusername <String>)|
|
||||
(managedbyme <String>))
|
||||
[languagecode <BCP47LanguageCode>]
|
||||
[allfields|(fields <YouTubeChannelFieldNameList>)]
|
||||
[formatjson]
|
||||
```
|
||||
By default, only the YouTube channel ID is displayed; use `allfields|fields` to selct additional fields for display.
|
||||
By default, only the YouTube channel ID is displayed; use `allfields|fields` to select additional fields for display.
|
||||
|
||||
By default, Gam displays the YouTube channels as an indented list of keys and values.
|
||||
* `formatjson` - Display the YouTube channels in JSON format
|
||||
|
||||
```
|
||||
gam <UserTypeEntity> print youtubechannels [todrive <ToDriveAttribute>*]
|
||||
[channels <YouTubeChannelIDList>]
|
||||
(mine|
|
||||
(ids|channels <YouTubeChannelIDList>)|
|
||||
(forusername <String>)|
|
||||
(managedbyme <String>))
|
||||
[languagecode <BCP47LanguageCode>]
|
||||
[allfields|(fields <YouTubeChannelFieldNameList>)]
|
||||
[formatjson [quotechar <Character>]]
|
||||
```
|
||||
By default, only the YouTube channel ID is displayed; use `allfields|fields` to selct additional fields for display.
|
||||
By default, only the YouTube channel ID is displayed; use `allfields|fields` to select additional fields for display.
|
||||
|
||||
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.
|
||||
@@ -67,20 +114,26 @@ The `quotechar <Character>` option allows you to choose an alternate quote chara
|
||||
Display YouTube channels owned by a user.
|
||||
```
|
||||
gam <UserTypeEntity> show youtubechannels
|
||||
[languagecode <BCP47LanguageCode>]
|
||||
[allfields|(fields <YouTubeChannelFieldNameList>)]
|
||||
[formatjson]
|
||||
```
|
||||
By default, only the YouTube channel ID is displayed; use `allfields|fields` to selct additional fields for display.
|
||||
By default, only the YouTube channel ID is displayed; use `allfields|fields` to select additional fields for display.
|
||||
|
||||
By default, Gam displays the YouTube channels as an indented list of keys and values.
|
||||
* `formatjson` - Display the YouTube channels in JSON format
|
||||
|
||||
```
|
||||
gam <UserTypeEntity> print youtubechannels [todrive <ToDriveAttribute>*]
|
||||
(mine|
|
||||
(ids|channels <YouTubeChannelIDList>)|
|
||||
(forusername <String>)|
|
||||
(managedbyme <String>))
|
||||
[languagecode <BCP47LanguageCode>]
|
||||
[allfields|(fields <YouTubeChannelFieldNameList>)]
|
||||
[formatjson [quotechar <Character>]]
|
||||
```
|
||||
By default, only the YouTube channel ID is displayed; use `allfields|fields` to selct additional fields for display.
|
||||
By default, only the YouTube channel ID is displayed; use `allfields|fields` to select additional fields for display.
|
||||
|
||||
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.
|
||||
|
||||
@@ -598,7 +598,7 @@ gam update user <UserItem> [ignorenullpassword] <UserAttribute>*
|
||||
[verifynotinvitable|alwaysevict] [noactionifalias]
|
||||
[updateprimaryemail <RegularExpression> <EmailReplacement>]
|
||||
[updateoufromgroup <FileName> [charset <CharSet>]
|
||||
[columndelimiter <Character>] [quotechar <Character>]
|
||||
[columndelimiter <Character>] [noescapechar <Boolean>] [quotechar <Character>]
|
||||
[fields <FieldNameList>] [keyfield <FieldName>] [datafield <FieldName>]]
|
||||
[clearschema <SchemaName>] [clearschema <SchemaName>.<FieldName>]
|
||||
[createifnotfound] [notfoundpassword random|<Password>]
|
||||
@@ -619,7 +619,7 @@ gam update users <UserTypeEntity> [ignorenullpassword] <UserAttribute>*
|
||||
[verifynotinvitable|alwaysevict] [noactionifalias]
|
||||
[updateprimaryemail <RegularExpression> <EmailReplacement>]
|
||||
[updateoufromgroup <FileName> [charset <CharSet>]
|
||||
[columndelimiter <Character>] [quotechar <Character>]
|
||||
[columndelimiter <Character>] [noescapechar <Boolean>] [quotechar <Character>]
|
||||
[fields <FieldNameList>] [keyfield <FieldName>] [datafield <FieldName>]]
|
||||
[clearschema <SchemaName>] [clearschema <SchemaName>.<FieldName>]
|
||||
[createifnotfound] [notfoundpassword random|<Password>]
|
||||
@@ -640,7 +640,7 @@ gam <UserTypeEntity> update users [ignorenullpassword] <UserAttribute>*
|
||||
[verifynotinvitable|alwaysevict] [noactionifalias]
|
||||
[updateprimaryemail <RegularExpression> <EmailReplacement>]
|
||||
[updateoufromgroup <FileName> [charset <CharSet>]
|
||||
[columndelimiter <Character>] [quotechar <Character>]
|
||||
[columndelimiter <Character>] [noescapechar <Boolean>] [quotechar <Character>]
|
||||
[fields <FieldNameList>] [keyfield <FieldName>] [datafield <FieldName>]]
|
||||
[clearschema <SchemaName>] [clearschema <SchemaName>.<FieldName>]
|
||||
[createifnotfound] [notfoundpassword random|<Password>]
|
||||
@@ -814,11 +814,12 @@ No update is performed if a user does not belong to any group in the CSV file or
|
||||
|
||||
```
|
||||
[updateoufromgroup <FileName> [charset <CharSet>]
|
||||
[columndelimiter <Character>] [quotechar <Character>]
|
||||
[columndelimiter <Character>] [noescapechar <Boolean>] [quotechar <Character>]
|
||||
[fields <FieldNameList>] [keyfield <FieldName>] [datafield <FieldName>]]
|
||||
```
|
||||
* `<FileName>` - A CSV file containing rows with columns of items
|
||||
* `columndelimiter <Character>` - Columns are separated by `<Character>`; if not specified, the value of `csv_input_column_delimiter` from `gam.cfg` will be used
|
||||
* `noescapechar <Boolean>` - Should `\` be ignored as an escape character; if not specified, the value of `csv_input_no_escape_char` from `gam.cfg` will be used
|
||||
* `quotechar <Character>` - The column quote characer is `<Character>`; if not specified, the value of `csv_input_quote_char` from `gam.cfg` will be used
|
||||
* `fields <FieldNameList>` - The column headings of a CSV file that does not contain column headings
|
||||
* `keyfield <FieldName>` - The column heading of the group column; the default is Group
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
|
||||
\
|
||||
# Version and Help
|
||||
|
||||
Print the current version of Gam with details
|
||||
```
|
||||
gam version
|
||||
GAMADV-XTD3 6.65.14 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource
|
||||
GAMADV-XTD3 6.66.12 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource
|
||||
Ross Scroggs <ross.scroggs@gmail.com>
|
||||
Python 3.12.0 64-bit final
|
||||
MacOS Monterey 12.7 x86_64
|
||||
@@ -16,7 +16,7 @@ Time: 2023-06-02T21:10:00-07:00
|
||||
Print the current version of Gam with details and time offset information
|
||||
```
|
||||
gam version timeoffset
|
||||
GAMADV-XTD3 6.65.14 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource
|
||||
GAMADV-XTD3 6.66.12 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource
|
||||
Ross Scroggs <ross.scroggs@gmail.com>
|
||||
Python 3.12.0 64-bit final
|
||||
MacOS Monterey 12.7 x86_64
|
||||
@@ -28,7 +28,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
|
||||
```
|
||||
gam version extended
|
||||
GAMADV-XTD3 6.65.14 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource
|
||||
GAMADV-XTD3 6.66.12 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource
|
||||
Ross Scroggs <ross.scroggs@gmail.com>
|
||||
Python 3.12.0 64-bit final
|
||||
MacOS Monterey 12.7 x86_64
|
||||
@@ -65,7 +65,7 @@ MacOS High Sierra 10.13.6 x86_64
|
||||
Path: /Users/Admin/bin/gamadv-xtd3
|
||||
Version Check:
|
||||
Current: 5.35.08
|
||||
Latest: 6.65.14
|
||||
Latest: 6.66.12
|
||||
echo $?
|
||||
1
|
||||
```
|
||||
@@ -73,7 +73,7 @@ echo $?
|
||||
Print the current version number without details
|
||||
```
|
||||
gam version simple
|
||||
6.65.14
|
||||
6.66.12
|
||||
```
|
||||
In Linux/MacOS you can do:
|
||||
```
|
||||
@@ -83,7 +83,7 @@ echo $VER
|
||||
Print the current version of Gam and address of this Wiki
|
||||
```
|
||||
gam help
|
||||
GAM 6.65.14 - https://github.com/taers232c/GAMADV-XTD3
|
||||
GAM 6.66.12 - https://github.com/taers232c/GAMADV-XTD3
|
||||
Ross Scroggs <ross.scroggs@gmail.com>
|
||||
Python 3.12.0 64-bit final
|
||||
MacOS Monterey 12.7 x86_64
|
||||
|
||||
@@ -43,6 +43,7 @@ Command Processing
|
||||
* [Command Line Parsing](Command-Line-Parsing)
|
||||
* [Command Logging and Progress](Command-Logging-Progress)
|
||||
* [Command data from Google Docs/Sheets/Storage](Command-Data-From-Google-Docs-Sheets-Storage)
|
||||
* [CSV Special Characters](CSV-Special-Characters)
|
||||
* [CSV Input Filtering](CSV-Input-Filtering)
|
||||
* [CSV Output Filtering](CSV-Output-Filtering)
|
||||
* [Meta Commands and File Redirection](Meta-Commands-and-File-Redirection)
|
||||
|
||||
@@ -148,6 +148,10 @@ csv_input_column_delimiter
|
||||
All places where an input CSV file can be specified have an
|
||||
argument columndelimiter <String> that can override this value.
|
||||
Default: ','
|
||||
csv_input_no_escape_char
|
||||
When reading a CSV file, should `\` be ignored as an escape character.
|
||||
Set this to False if the input file data was written using `\` as an escape character.
|
||||
Default: True
|
||||
csv_input_quote_char
|
||||
A one-character string used to quote fields containing special characters,
|
||||
such as the csv_input_column_delimiter or csv_input_quote_char, or newline characters.
|
||||
@@ -209,11 +213,15 @@ csv_output_header_force
|
||||
for inclusion in the CSV file written by a gam print command
|
||||
Default: ''
|
||||
csv_output_line_terminator
|
||||
Allowed values: cr, lf, crlf
|
||||
p Allowed values: cr, lf, crlf
|
||||
Designates character(s) used to terminate the lines of a CSV file.
|
||||
For Linux and Mac OS, this would typically be lf.
|
||||
For Windows, this would typically be crlf.
|
||||
Default: lf
|
||||
csv_output_no_escape_char
|
||||
When writing a CSV file, should `\` be ignored as an escape character.
|
||||
Set this to True if the output file data is to be read by a non-Python program.
|
||||
Default: False
|
||||
csv_output_quote_char
|
||||
A one-character string used to quote fields containing special characters,
|
||||
such as the csv_output_column_delimiter or csv_output_quote_char
|
||||
@@ -527,6 +535,9 @@ todrive_nobrowser
|
||||
todrive_noemail
|
||||
Enable/disable sending an email when todrive is specified
|
||||
Default: True
|
||||
todrive_no_escape_char
|
||||
When writing a CSV file to Google Drive, should `\` be ignored as an escape character.
|
||||
Default: True
|
||||
todrive_parent
|
||||
Parent folder for CSV files when todrive is specified;
|
||||
can be id:<DriveFolderID> or <DriveFolderName>
|
||||
@@ -605,6 +616,7 @@ Section: DEFAULT
|
||||
config_dir = /Users/admin/.gam
|
||||
contact_max_results = 100
|
||||
csv_input_column_delimiter = ,
|
||||
csv_input_no_escape_char = true
|
||||
csv_input_quote_char = '"'
|
||||
csv_input_row_drop_filter = ''
|
||||
csv_input_row_drop_filter = ''
|
||||
@@ -619,6 +631,7 @@ Section: DEFAULT
|
||||
csv_output_header_filter = ''
|
||||
csv_output_header_force = ''
|
||||
csv_output_line_terminator = lf
|
||||
csv_output_no_escape_char = false
|
||||
csv_output_quote_char = '"'
|
||||
csv_output_row_drop_filter = ''
|
||||
csv_output_row_drop_filter_mode = anymatch
|
||||
@@ -689,6 +702,7 @@ Section: DEFAULT
|
||||
todrive_locale = ''
|
||||
todrive_nobrowser = false
|
||||
todrive_noemail = true
|
||||
todrive_no_escape_char = true
|
||||
todrive_parent = root
|
||||
todrive_sheet_timeformat = ''
|
||||
todrive_sheet_timestamp = false
|
||||
@@ -797,6 +811,7 @@ clock_skew_in_seconds = 10
|
||||
config_dir = /Users/admin/.gam
|
||||
contact_max_results = 100
|
||||
csv_input_column_delimiter = ,
|
||||
csv_input_no_escape_char = true
|
||||
csv_input_quote_char = '"'
|
||||
csv_input_row_drop_filter = ''
|
||||
csv_input_row_filter = ''
|
||||
@@ -807,6 +822,7 @@ csv_output_header_drop_filter = ''
|
||||
csv_output_header_filter = ''
|
||||
csv_output_header_force = ''
|
||||
csv_output_line_terminator = lf
|
||||
csv_output_no_escape_char = false
|
||||
csv_output_quote_char = '"'
|
||||
csv_output_row_drop_filter =
|
||||
csv_output_row_filter = ''
|
||||
@@ -873,6 +889,7 @@ todrive_localcopy = false
|
||||
todrive_locale = ''
|
||||
todrive_nobrowser = false
|
||||
todrive_noemail = true
|
||||
todrive_no_escape_char = true
|
||||
todrive_parent = root
|
||||
todrive_sheet_timeformat = ''
|
||||
todrive_sheet_timestamp = false
|
||||
|
||||
@@ -59,7 +59,7 @@ If an item contains spaces, it should be surrounded by ".
|
||||
<ColorName> ::= <ColorNameGoogle>|<ColorNameWeb>
|
||||
<ColorValue> ::= <ColorName>|<ColorHex>
|
||||
<DayOfWeek> ::= mon|tue|wed|thu|fri|sat|sun
|
||||
<DriveLabelLanguageCode> ::=
|
||||
<BCP47LanguageCode> ::=
|
||||
ar-sa| # Arabic Saudi Arabia
|
||||
cs-cz| # Czech Czech Republic
|
||||
da-dk| # Danish Denmark
|
||||
@@ -609,6 +609,7 @@ If an item contains spaces, it should be surrounded by ".
|
||||
(tdlocale <Locale>)|
|
||||
(tdnobrowser [<Boolean>])|
|
||||
(tdnoemail [<Boolean>])|
|
||||
(tdnoescapechar [<Boolean>])|
|
||||
(tdparent (id:<DriveFolderID>)|<DriveFolderName>)|
|
||||
(tdretaintitle [<Boolean>])|
|
||||
(tdshare <EmailAddress> commenter|reader|writer)|
|
||||
@@ -788,7 +789,7 @@ Specify a collection of ChromeOS devices by directly specifying them or by speci
|
||||
(gdoc(:<FieldName>)+ <UserGoogleDoc>)|
|
||||
(gcscsv(:<FieldName>)+ <StorageBucketObjectName>)|
|
||||
(gcsdoc(:<FieldName>)+ <StorageBucketObjectName>))
|
||||
[warnifnodata] [columndelimiter <Character>] [quotechar <Character>]
|
||||
[warnifnodata] [columndelimiter <Character>] [noescapechar <Boolean>] [quotechar <Character>]
|
||||
[endcsv|(fields <FieldNameList>)]
|
||||
(matchfield|skipfield <FieldName> <RegularExpression>)*
|
||||
[delimiter <Character>])|
|
||||
@@ -798,7 +799,7 @@ Specify a collection of ChromeOS devices by directly specifying them or by speci
|
||||
(gdoc(:<FieldName>)+ <UserGoogleDoc>)|
|
||||
(gcscsv(:<FieldName>)+ <StorageBucketObjectName>)|
|
||||
(gcsdoc(:<FieldName>)+ <StorageBucketObjectName>))
|
||||
[warnifnodata] [columndelimiter <Character>] [quotechar <Character>]
|
||||
[warnifnodata] [columndelimiter <Character>] [noescapechar <Boolean>] [quotechar <Character>]
|
||||
[endcsv|(fields <FieldNameList>)]
|
||||
(matchfield|skipfield <FieldName> <RegularExpression>)*
|
||||
[delimiter <Character>])|
|
||||
@@ -815,7 +816,7 @@ Specify a collection of ChromeOS devices by directly specifying them or by speci
|
||||
(gdoc(:<FieldName>)+ <UserGoogleDoc>)|
|
||||
(gcscsv(:<FieldName>)+ <StorageBucketObjectName>)|
|
||||
(gcsdoc(:<FieldName>)+ <StorageBucketObjectName>))
|
||||
[warnifnodata] [columndelimiter <Character>] [quotechar <Character>]
|
||||
[warnifnodata] [columndelimiter <Character>] [noescapechar <Boolean>] [quotechar <Character>]
|
||||
[endcsv|(fields <FieldNameList>)]
|
||||
(matchfield|skipfield <FieldName> <RegularExpression>)*
|
||||
[delimiter <Character>])|
|
||||
@@ -826,7 +827,7 @@ Specify a collection of ChromeOS devices by directly specifying them or by speci
|
||||
(gdoc <UserGoogleDoc>)|
|
||||
(gcscsv <StorageBucketObjectName>)|
|
||||
(gcsdoc <StorageBucketObjectName>))
|
||||
[charset <Charset>] [columndelimiter <Character>] [quotechar <Character>] [fields <FieldNameList>])
|
||||
[charset <Charset>] [columndelimiter <Character>] [noescapechar <Boolean>] [quotechar <Character>] [fields <FieldNameList>])
|
||||
keyfield <FieldName> [keypattern <RegularExpression>] [keyvalue <String>] [delimiter <Character>]
|
||||
subkeyfield <FieldName> [keypattern <RegularExpression>] [keyvalue <String>] [delimiter <Character>]
|
||||
(matchfield|skipfield <FieldName> <RegularExpression>)*
|
||||
@@ -874,7 +875,7 @@ Specify a collection of Users by directly specifying them or by specifiying item
|
||||
(gdoc(:<FieldName>)+ <UserGoogleDoc>)|
|
||||
(gcscsv(:<FieldName>)+ <StorageBucketObjectName>)|
|
||||
(gcsdoc(:<FieldName>)+ <StorageBucketObjectName>))
|
||||
[warnifnodata] [columndelimiter <Character>] [quotechar <Character>]
|
||||
[warnifnodata] [columndelimiter <Character>] [noescapechar <Boolean>] [quotechar <Character>]
|
||||
[endcsv|(fields <FieldNameList>)]
|
||||
(matchfield|skipfield <FieldName> <RegularExpression>)*
|
||||
[delimiter <Character>])|
|
||||
@@ -895,7 +896,7 @@ Specify a collection of Users by directly specifying them or by specifiying item
|
||||
(gdoc(:<FieldName>)+ <UserGoogleDoc>)|
|
||||
(gcscsv(:<FieldName>)+ <StorageBucketObjectName>)|
|
||||
(gcsdoc(:<FieldName>)+ <StorageBucketObjectName>))
|
||||
[warnifnodata] [columndelimiter <Character>] [quotechar <Character>]
|
||||
[warnifnodata] [columndelimiter <Character>] [noescapechar <Boolean>] [quotechar <Character>]
|
||||
[endcsv|(fields <FieldNameList>)]
|
||||
(matchfield|skipfield <FieldName> <RegularExpression>)*
|
||||
[delimiter <Character>])|
|
||||
@@ -908,7 +909,7 @@ Specify a collection of Users by directly specifying them or by specifiying item
|
||||
(gdoc <UserGoogleDoc>)|
|
||||
(gcscsv <StorageBucketObjectName>)|
|
||||
(gcsdoc <StorageBucketObjectName>))
|
||||
[charset <Charset>] [columndelimiter <Character>] [quotechar <Character>] [fields <FieldNameList>])
|
||||
[charset <Charset>] [columndelimiter <Character>] [noescapechar <Boolean>] [quotechar <Character>] [fields <FieldNameList>])
|
||||
keyfield <FieldName> [keypattern <RegularExpression>] [keyvalue <String>] [delimiter <Character>]
|
||||
subkeyfield <FieldName> [keypattern <RegularExpression>] [keyvalue <String>] [delimiter <Character>]
|
||||
(matchfield|skipfield <FieldName> <RegularExpression>)*
|
||||
@@ -925,7 +926,7 @@ Specify a collection of items by directly specifying them; the item type is dete
|
||||
(gdoc <UserGoogleDoc>)|
|
||||
(gcscsv <StorageBucketObjectName>)|
|
||||
(gcsdoc <StorageBucketObjectName>))
|
||||
[warnifnodata] [columndelimiter <Character>] [quotechar <Character>]
|
||||
[warnifnodata] [columndelimiter <Character>] [noescapechar <Boolean>] [quotechar <Character>]
|
||||
[endcsv|(fields <FieldNameList>)]
|
||||
|
||||
<FileSelector> ::=
|
||||
@@ -941,7 +942,7 @@ Specify a collection of items by directly specifying them; the item type is dete
|
||||
(gdoc(:<FieldName>)+ <UserGoogleDoc>)|
|
||||
(gcscsv(:<FieldName>)+ <StorageBucketObjectName>)|
|
||||
(gcsdoc(:<FieldName>)+ <StorageBucketObjectName>))
|
||||
[warnifnodata] [columndelimiter <Character>] [quotechar <Character>]
|
||||
[warnifnodata] [columndelimiter <Character>] [noescapechar <Boolean>] [quotechar <Character>]
|
||||
[endcsv|(fields <FieldNameList>)]
|
||||
(matchfield|skipfield <FieldName> <RegularExpression>)*
|
||||
[delimiter <Character>]
|
||||
@@ -956,7 +957,7 @@ Specify a collection of items by directly specifying them; the item type is dete
|
||||
(gdoc <UserGoogleDoc>)|
|
||||
(gcscsv <StorageBucketObjectName>)|
|
||||
(gcsdoc <StorageBucketObjectName>))
|
||||
[charset <Charset>] [columndelimiter <Character>] [quotechar <Character>] [fields <FieldNameList>])
|
||||
[charset <Charset>] [columndelimiter <Character>] [noescapechar <Boolean>] [quotechar <Character>] [fields <FieldNameList>])
|
||||
keyfield <FieldName> [keypattern <RegularExpression>] [keyvalue <String>] [delimiter <Character>]
|
||||
subkeyfield <FieldName> [keypattern <RegularExpression>] [keyvalue <String>] [delimiter <Character>]
|
||||
(matchfield|skipfield <FieldName> <RegularExpression>)*
|
||||
@@ -1237,7 +1238,7 @@ If the pattern {{Section}} appears in <FileName>, it will be replaced with the n
|
||||
For redirect csv, the optional arguments must appear in the order shown.
|
||||
<Redirect> ::=
|
||||
redirect csv <FileName> [multiprocess] [append] [noheader] [charset <Charset>]
|
||||
[columndelimiter <Character>] [quotechar <Character>]
|
||||
[columndelimiter <Character>] [noescapechar <Boolean>] [quotechar <Character>]
|
||||
[timestampcolumn <String>]
|
||||
[todrive <ToDriveAttribute>*] |
|
||||
redirect stdout <FileName> [multiprocess] [append] |
|
||||
@@ -1284,13 +1285,13 @@ gam tbatch <BatchContent> [showcmds [<Boolean>]]
|
||||
[charset <Charset>] [delimiter <Character>])
|
||||
|
||||
gam csv <CSVLoopContent> [warnifnodata]
|
||||
[columndelimiter <Character>] [quotechar <Character>] [fields <FieldNameList>]
|
||||
[columndelimiter <Character>] [noescapechar <Boolean>] [quotechar <Character>] [fields <FieldNameList>]
|
||||
(matchfield|skipfield <FieldName> <RegularExpression>)* [showcmds [<Boolean>]]
|
||||
[maxrows <Integer>]
|
||||
gam <GAMArgumentList>
|
||||
|
||||
gam loop <CSVLoopContent> [warnifnodata]
|
||||
[columndelimiter <Character>] [quotechar <Character>] [fields <FieldNameList>]
|
||||
[columndelimiter <Character>] [noescapechar <Boolean>] [quotechar <Character>] [fields <FieldNameList>]
|
||||
(matchfield|skipfield <FieldName> <RegularExpression>)* [showcmds [<Boolean>]]
|
||||
[maxrows <Integer>]
|
||||
gam <GAMArgumentList>
|
||||
@@ -1558,9 +1559,17 @@ gam calendar <CalendarEntity> printacl [todrive <ToDriveAttribute>*]
|
||||
<AttendeeAttendance> ::= optional|required
|
||||
<AttendeeStatus> ::= accepted|declined|needsaction|tentative
|
||||
|
||||
<EventType> ::=
|
||||
default|
|
||||
focustime|
|
||||
outofoffice|
|
||||
workinglocation
|
||||
<EventTypeList> ::= "<EventType>(,<EventType>)*"
|
||||
|
||||
<EventSelectProperty> ::=
|
||||
(after|starttime|timemin <Time>)|
|
||||
(before|endtime|timemax <Time>)|
|
||||
(eventtypes <EventTypeList>)|
|
||||
(query <QueryCalendar>)|
|
||||
(privateextendedproperty <String>)|
|
||||
(sharedextendedproperty <Syting>)|
|
||||
@@ -1607,7 +1616,7 @@ gam calendar <CalendarEntity> printacl [todrive <ToDriveAttribute>*]
|
||||
(attendeestatus [<AttendeeAttendance>] [<AttendeeStatus>] <EmailAddress>)|
|
||||
available|
|
||||
(color <EventColorName>)|
|
||||
(colorindex|colorid <EventColorIndex>))|
|
||||
(colorindex|colorid <EventColorIndex>)|
|
||||
(description <String>)|
|
||||
(end|endtime (allday <Date>)|<Time>)|
|
||||
(guestscaninviteothers <Boolean>)|
|
||||
@@ -1617,12 +1626,14 @@ gam calendar <CalendarEntity> printacl [todrive <ToDriveAttribute>*]
|
||||
guestscantseeotherguests|
|
||||
hangoutsmeet|
|
||||
<JSONData>|
|
||||
(jsonattendees [charset <Charset>] <String>)|(jsonattendees file <FileName> [charset <Charset>])|
|
||||
(jsonattendees [charset <Charset>] <String>)|
|
||||
(jsonattendees file <FileName> [charset <Charset>])|
|
||||
(location <String>)|
|
||||
(noreminders|(reminder email|popup <Number>))|
|
||||
(optionalattendee <EmailAddress>)|
|
||||
(originalstart|originalstarttime (allday <Date>)|<Time>)|
|
||||
(privateproperty <PropertyKey> <PropertyValue>)|
|
||||
(range <Date> <Date>)|
|
||||
(recurrence <RRULE, EXRULE, RDATE and EXDATE line>)|
|
||||
(reminder <Number> email|popup))|
|
||||
(selectattendees [<AttendeeAttendance>] [<AttendeeStatus>] <UserTypeEntity>)|
|
||||
@@ -1633,13 +1644,10 @@ gam calendar <CalendarEntity> printacl [todrive <ToDriveAttribute>*]
|
||||
(status confirmed|tentative|cancelled)|
|
||||
(summary <String>)|
|
||||
tentative|
|
||||
(timerange <Time> <Time>)|
|
||||
(timezone <TimeZone>)|
|
||||
(transparency opaque|transparent)|
|
||||
(visibility default|public|private)|
|
||||
(workinglocation (home|
|
||||
(custom <String>)|
|
||||
(office <String> [building|buildingid <String>] [floor|floorname <String>]
|
||||
[section|floorsection <String>] [desk|deskcode <String>])))
|
||||
(visibility default|public|private)
|
||||
|
||||
The following attributes are equivalent:
|
||||
available - transparency transparent
|
||||
@@ -1719,12 +1727,21 @@ gam calendar|calendars <CalendarEntity> empty calendartrash
|
||||
creator.id|
|
||||
creator.self
|
||||
|
||||
<EventFocusTimePropertiesSubfieldName> ::=
|
||||
focustime.autodeclinemode|
|
||||
focustime.chatstatus|
|
||||
focustime.declinemessage
|
||||
|
||||
<EventOrganizerSubfieldName> ::=
|
||||
organizer.displayname|
|
||||
organizer.email|
|
||||
organizer.id|
|
||||
organizer.self
|
||||
|
||||
<EventOutOfOfficePropertiesSubfieldName> ::=
|
||||
outofoffice.autodeclinemode|
|
||||
outofoffice.declinemessage
|
||||
|
||||
<EventWorkingLocationPropertiesSubfieldName> ::=
|
||||
workinglocationproperties.homeoffice|
|
||||
workinglocationproperties.customlocation|
|
||||
@@ -1748,6 +1765,8 @@ gam calendar|calendars <CalendarEntity> empty calendartrash
|
||||
endtimeunspecified|
|
||||
extendedproperties|
|
||||
eventtype|
|
||||
focustimeproperties|
|
||||
<EventFocusTimePropertiesSubfieldName>|
|
||||
gadget|
|
||||
guestscaninviteothers|
|
||||
guestscanmodify|
|
||||
@@ -1761,6 +1780,8 @@ gam calendar|calendars <CalendarEntity> empty calendartrash
|
||||
organizer|
|
||||
<EventOrganizerSubfieldName>|
|
||||
originalstart|originalstarttime|
|
||||
outofofficeproperties|
|
||||
<EventOutOfOfficePropertiesSubfieldName>
|
||||
privatecopy|
|
||||
recurrence|
|
||||
recurringeventid|
|
||||
@@ -1987,10 +2008,10 @@ gam print chatspaces [todrive <ToDriveAttribute>*]
|
||||
gam info chatmember member <ChatMember>
|
||||
[formatjson]
|
||||
gam show chatmembers <ChatSpace>
|
||||
[showinvited [<Boolean>]] [filter <String>]
|
||||
[showinvited [<Boolean>]] [showgroups [<Boolean>]] [filter <String>]
|
||||
[formatjson]
|
||||
gam print chatmembers [todrive <ToDriveAttribute>*] <ChatSpace>
|
||||
[showinvited [<Boolean>]] [filter <String>]
|
||||
[showinvited [<Boolean>]] [showgroups [<Boolean>]] [filter <String>]
|
||||
[formatjson [quotechar <Character>]]
|
||||
|
||||
gam create chatmessage <ChatSpace>
|
||||
@@ -3746,9 +3767,12 @@ gam show cigroup-members
|
||||
# Cloud Identity Devices
|
||||
|
||||
<DeviceID> ::= devices/<String>
|
||||
<DeviceUserID> ::= devices/<String>/deviceUsers/<String>
|
||||
<DeviceIDList> ::= "<DeviceID>(,<DeviceID>)*"
|
||||
<DeviceEntity> ::=
|
||||
<DeviceIDList> | devicesn <String> |
|
||||
(query:<QueryDevice>)|(query <QueryDevice>)
|
||||
<DeviceType> ::= android|chrome_os|google_sync|ios|linux|mac_os|windows
|
||||
|
||||
<DeviceUserID> ::= devices/<String>/deviceUsers/<String>
|
||||
<DeviceFieldName> ::=
|
||||
androidspecificattributes|
|
||||
assettag|
|
||||
@@ -3758,11 +3782,13 @@ gam show cigroup-members
|
||||
buildnumber|
|
||||
compromisedstate|
|
||||
createtime|
|
||||
deviceid|
|
||||
devicetype|
|
||||
enableddeveloperoptions|
|
||||
enabledusbdebugging|
|
||||
endpointverificationspecificattributes|
|
||||
encryptionstate|
|
||||
hostname|
|
||||
imei|
|
||||
kernelversion|
|
||||
lastsynctime|
|
||||
@@ -4572,6 +4598,7 @@ In these commands, the Google administrator named in oauth2.txt is used.
|
||||
gam create|add drivefileacl <SharedDriveEntityAdmin>
|
||||
anyone|(user <UserItem>)|(group <GroupItem>)|(domain <DomainName>)
|
||||
(role <DriveFileACLRole>) [withlink|(allowfilediscovery|discoverable [<Boolean>])]
|
||||
(mappermissionsdomain <DomainName> <DomainName>)*
|
||||
[expiration <Time>] [sendemail] [emailmessage <String>]
|
||||
[showtitles] [nodetails|(csv [todrive <ToDriveAttribute>*] [formatjson [quotechar <Character>]])]
|
||||
gam update drivefileacl <SharedDriveEntityAdmin> <DriveFilePermissionIDorEmail>
|
||||
@@ -4609,6 +4636,7 @@ In these commands, you specify an administrator and then indicate that you want
|
||||
gam <UserTypeEntity> create|add drivefileacl <SharedDriveEntityAdmin>
|
||||
anyone|(user <UserItem>)|(group <GroupItem>)|(domain <DomainName>)
|
||||
(role <DriveFileACLRole>) [withlink|(allowfilediscovery|discoverable [<Boolean>])]
|
||||
(mappermissionsdomain <DomainName> <DomainName>)*
|
||||
[movetonewownersroot [<Boolean>]]
|
||||
[expiration <Time>] [sendemail] [emailmessage <String>]
|
||||
[showtitles] [nodetails|(csv [todrive <ToDriveAttribute>*] [formatjson [quotechar <Character>]])]
|
||||
@@ -5181,7 +5209,7 @@ gam update user <UserItem> [ignorenullpassword] <UserAttribute>*
|
||||
[verifynotinvitable|alwaysevict] [noactionifalias]
|
||||
[updateprimaryemail <RegularExpression> <EmailReplacement>]
|
||||
[updateoufromgroup <FileName> [charset <CharSet>]
|
||||
[columndelimiter <Character>] [quotechar <Character>]
|
||||
[columndelimiter <Character>] [noescapechar <Boolean>] [quotechar <Character>]
|
||||
[fields <FieldNameList>] [keyfield <FieldName>] [datafield <FieldName>]]
|
||||
[immutableous <OrgUnitEntity>]|
|
||||
[clearschema <SchemaName>] [clearschema <SchemaName>.<FieldName>]
|
||||
@@ -5217,7 +5245,7 @@ gam update users <UserTypeEntity> [ignorenullpassword] <UserAttribute>*
|
||||
[verifynotinvitable] [noactionifalias]
|
||||
[updateprimaryemail <RegularExpression> <EmailReplacement>]
|
||||
[updateoufromgroup <FileName> [charset <CharSet>]
|
||||
[columndelimiter <Character>] [quotechar <Character>]
|
||||
[columndelimiter <Character>] [noescapechar <Boolean>] [quotechar <Character>]
|
||||
[fields <FieldNameList>] [keyfield <FieldName>] [datafield <FieldName>]]
|
||||
[clearschema <SchemaName>] [clearschema <SchemaName>.<FieldName>]
|
||||
[createifnotfound] [notfoundpassword (random [<Integer>])|blocklogin|<Password>]
|
||||
@@ -5534,12 +5562,20 @@ gam <UserTypeEntity> transfer seccals <UserItem> [keepuser] [sendnotifications <
|
||||
<AttendeeAttendance> ::= optional|required
|
||||
<AttendeeStatus> ::= accepted|declined|needsaction|tentative
|
||||
|
||||
<EventType> ::=
|
||||
default|
|
||||
focustime|
|
||||
outofoffice|
|
||||
workinglocation
|
||||
<EventTypeList> ::= "<EventType>(,<EventType>)*"
|
||||
|
||||
<EventSelectProperty> ::=
|
||||
(after|starttime|timemin <Time>)|
|
||||
(before|endtime|timemax <Time>)|
|
||||
(eventtypes <EventTypeList>)|
|
||||
(query <QueryCalendar>)|
|
||||
(privateextendedproperty <String>)|
|
||||
(sharedextendedproperty <Syting>)|
|
||||
(sharedextendedproperty <String>)|
|
||||
showdeletedevents|
|
||||
showhiddeninvitations|
|
||||
singleevents|
|
||||
@@ -5692,39 +5728,53 @@ gam <UserTypeEntity> update calattendees <UserCalendarEntity> <EventEntity> [any
|
||||
(updatestatus [<AttendeeAttendance>] [<AttendeeStatus>] <EmailAddress>)*
|
||||
(updateentitystatus [<AttendeeAttendance>] [<AttendeeStatus>] <EmailAddressEntity>)*
|
||||
|
||||
Manage/Display Working Locations
|
||||
Manage/Display Status Events
|
||||
|
||||
gam <UserTypeEntity> create focustime
|
||||
[chatstatus available|donotdisturb]
|
||||
[declinemode none|all|new]
|
||||
[declinemessage <String>]
|
||||
[summary <String>]
|
||||
(timerange <Time> <Time> [recurrence <String>])+
|
||||
[timezone <String>]
|
||||
gam <UserTypeEntity> create outofoffice
|
||||
[declinemode none|all|new]
|
||||
[declinemessage <String>]
|
||||
[summary <String>]
|
||||
(timerange <Time> <Time> [recurrence <String>])+
|
||||
[timezone <String>]
|
||||
gam <UserTypeEntity> create workinglocation
|
||||
(home|
|
||||
(custom <String>)|
|
||||
(office <String> [building|buildingid <String>] [floor|floorname <String>]
|
||||
[section|floorsection <String>] [desk|deskcode <String>]))
|
||||
[section|floorsection <String>] [desk|deskcode <String>]))
|
||||
((date yyyy-mm-dd)|
|
||||
(range yyyy-mm-dd yyyy-mm-dd)|
|
||||
(daily yyyy-mm-dd <Number>)|
|
||||
(weekly yyyy-mm-dd <Number>)|
|
||||
(daily yyyy-mm-dd N)|
|
||||
(weekly yyyy-mm-dd N)|
|
||||
(timerange <Time> <Time>))+
|
||||
[timezone <String>]
|
||||
|
||||
gam <UserTypeEntity> delete focustime|outofoffice|workinglocation
|
||||
((date yyyy-mm-dd)|
|
||||
(range yyyy-mm-dd yyyy-mm-dd)|
|
||||
(daily yyyy-mm-dd N)|
|
||||
(weekly yyyy-mm-dd N)|
|
||||
(timerange <Time> <Time>))+
|
||||
|
||||
gam <UserTypeEntity> delete workinglocation
|
||||
gam <UserTypeEntity> show focustime|outofoffice|workinglocation
|
||||
((date yyyy-mm-dd)|
|
||||
(range yyyy-mm-dd yyyy-mm-dd)|
|
||||
(daily yyyy-mm-dd <Number>)|
|
||||
(weekly yyyy-mm-dd <Number>)|
|
||||
(timerange <Time> <Time>))+
|
||||
|
||||
gam <UserTypeEntity> show workinglocation
|
||||
((date yyyy-mm-dd)|
|
||||
(range yyyy-mm-dd yyyy-mm-dd)|
|
||||
(daily yyyy-mm-dd <Number>)|
|
||||
(weekly yyyy-mm-dd <Number>)|
|
||||
(daily yyyy-mm-dd N)|
|
||||
(weekly yyyy-mm-dd N)|
|
||||
(timerange <Time> <Time>))+
|
||||
[showdayofweek]
|
||||
[formatjson]
|
||||
gam <UserTypeEntity> print workinglocation
|
||||
gam <UserTypeEntity> print focustime|outofoffice|workinglocation
|
||||
((date yyyy-mm-dd)|
|
||||
(range yyyy-mm-dd yyyy-mm-dd)|
|
||||
(daily yyyy-mm-dd <Number>)|
|
||||
(weekly yyyy-mm-dd <Number>)|
|
||||
(daily yyyy-mm-dd N)|
|
||||
(weekly yyyy-mm-dd N)|
|
||||
(timerange <Time> <Time>))+
|
||||
[showdayofweek]
|
||||
[formatjson [quotechar <Character>]] [todrive <ToDriveAttribute>*]
|
||||
@@ -5779,18 +5829,22 @@ gam <UserTypeEntity> print chatspaces [todrive <ToDriveAttribute>*]
|
||||
[formatjson [quotechar <Character>]]
|
||||
|
||||
gam <UserTypeEntity> create chatmember <ChatSpace>
|
||||
[type human|bot]
|
||||
((user <UserItem>)|(members <UserTypeEntity>))*
|
||||
[type human|bot] [role member|manager]
|
||||
(user <UserItem>)* (members <UserTypeEntity>)*
|
||||
(group <GroupItem>)* (groups <GroupEntity>)*
|
||||
[formatjson|returnidonly]
|
||||
gam <UserTypeEntity> delete chatmember <ChatSpace>
|
||||
((user <UserItem>)|(members <UserTypeEntity>))+
|
||||
((user <UserItem>)|(members <UserTypeEntity>)|
|
||||
(group <GroupItem>)|(groups <GroupEntity>))+
|
||||
gam <UserTypeEntity> remove chatmember members <ChatMemberList>
|
||||
|
||||
gam <UserTypeEntity> info chatmember members <ChatMemberList>
|
||||
[formatjson]
|
||||
gam <UserTypeEntity> show chatmembers <ChatSpace>
|
||||
[showinvited [<Boolean>]] [showgroups [<Boolean>]] [filter <String>]
|
||||
[formatjson]
|
||||
gam <UserTypeEntity> print chatmembers [todrive <ToDriveAttribute>*] <ChatSpace>
|
||||
[showinvited [<Boolean>]] [showgroups [<Boolean>]] [filter <String>]
|
||||
[formatjson [quotechar <Character>]]
|
||||
|
||||
gam <UserTypeEntity> create chatmessage <ChatSpace>
|
||||
@@ -6129,15 +6183,15 @@ gam <UserTypeEntity> delete permissions <DriveFileEntity> <DriveFilePermissionID
|
||||
<PermissionMatch>* [<PermissionMatchAction>]
|
||||
|
||||
gam [<UserTypeEntity>] info drivelabels <DriveLabelNameEntity>
|
||||
[[basic|full] [languagecode <DriveLabelLanguageCode>]
|
||||
[[basic|full] [languagecode <BCP47LanguageCode>]
|
||||
[formatjson] [adminaccess|asadmin]
|
||||
|
||||
gam [<UserTypeEntity>] print <drivelabels> [todrive <ToDriveAttribute>*]
|
||||
[basic|full] [languagecode <DriveLabelLanguageCode>]
|
||||
[basic|full] [languagecode <BCP47LanguageCode>]
|
||||
[publishedonly [<Boolean>]] [minimumrole applier|editor|organizer|reader]
|
||||
[formatjson [quotechar <Character>]] [adminaccess|asadmin]
|
||||
gam [<UserTypeEntity>] show drivelabels
|
||||
[basic|full] [languagecode <DriveLabelLanguageCode>]
|
||||
[basic|full] [languagecode <BCP47LanguageCode>]
|
||||
[publishedonly [<Boolean>]] [minimumrole applier|editor|organizer|reader]
|
||||
[formatjson] [adminaccess|asadmin]
|
||||
|
||||
@@ -6230,6 +6284,7 @@ gam <UserTypeEntity> collect orphans
|
||||
canaddfolderfromanotherdrive|
|
||||
canaddmydriveparent|
|
||||
canchangecopyrequireswriterpermission|
|
||||
canchangecopyrequireswriterpermissionrestriction|
|
||||
canchangedomainusersonlyrestriction|
|
||||
canchangedrivebackground|
|
||||
canchangedrivemembersonlyrestriction|
|
||||
@@ -6247,11 +6302,14 @@ gam <UserTypeEntity> collect orphans
|
||||
canmanagemembers|
|
||||
canmodifycontent|
|
||||
canmodifycontentrestriction|
|
||||
canmodifyeditorcontentrestriction|
|
||||
canmodifylabels|
|
||||
canmodifyownercontentrestriction|
|
||||
canmovechildrenoutofdrive|
|
||||
canmovechildrenoutofteamdrive|
|
||||
canmovechildrenwithindrive|
|
||||
canmovechildrenwithinteamdrive|
|
||||
canmoveitemintodrive|
|
||||
canmoveitemintoteamdrive|
|
||||
canmoveitemoutofdrive|
|
||||
canmoveitemoutofteamdrive|
|
||||
@@ -6263,6 +6321,7 @@ gam <UserTypeEntity> collect orphans
|
||||
canreadrevisions|
|
||||
canreadteamdrive|
|
||||
canremovechildren|
|
||||
canremovecontentrestriction|
|
||||
canremovemydriveparent|
|
||||
canrename|
|
||||
canrenamedrive|
|
||||
@@ -6554,6 +6613,9 @@ gam <UserTypeEntity> show filetree
|
||||
(orderby <DriveFileOrderByFieldName> [ascending|descending])* [delimiter <Character>]
|
||||
[stripcrsfromname]
|
||||
|
||||
gam <UserTypeEntity> print fileparenttree <DriveFileEntity> [todrive <ToDriveAttribute>*]
|
||||
[stripcrsfromname]
|
||||
|
||||
gam <UserTypeEntity> print filelist [todrive <ToDriveAttribute>*]
|
||||
[((query <QueryDriveFile>) | (fullquery <QueryDriveFile>) | <DriveFileQueryShortcut>)
|
||||
(querytime<String> <Time>)*]
|
||||
@@ -6909,11 +6971,11 @@ gam <UserTypeEntity> export thread|threads
|
||||
gam <UserTypeEntity> forward message|messages recipient|to <RecipientEntity>
|
||||
(((query <QueryGmail> [querytime<String> <Date>]*) (matchlabel <LabelName>) [or|and])+
|
||||
[quick|notquick] [doit] [max_to_forward <Number>])|(ids <MessageIDEntity>)
|
||||
[subject <String>] [altcharset <String>]
|
||||
[subject <String>] [addorigfieldstosubject [<Boolean>]] [altcharset <String>]
|
||||
gam <UserTypeEntity> forward thread|thtreads recipient|to <RecipientEntity>
|
||||
(((query <QueryGmail> [querytime<String> <Date>]*) (matchlabel <LabelName>) [or|and])+
|
||||
quick|notquick] [doit] [max_to_forward <Number>])|(ids <ThreadIDEntity>)
|
||||
[subject <String>] [altcharset <String>]
|
||||
[subject <String>] [addorigfieldstosubject [<Boolean>]] [altcharset <String>]
|
||||
|
||||
gam <UserTypeEntity> show messages|threads
|
||||
(((query <QueryGmail> [querytime<String> <Date>]*) (matchlabel <LabelName>) [or|and])*
|
||||
@@ -7648,11 +7710,19 @@ gam print tokens|token [todrive <ToDriveAttribute>*] [clientid <ClientID>]
|
||||
<YouTubeChannelFieldNameList> ::= "<YouTubeChannelFieldName>(,<YouTubeChannelFieldName>)*"
|
||||
|
||||
gam <UserTypeEntity> show youtubechannels
|
||||
[channels <YouTubeChannelIDList>]
|
||||
(mine|
|
||||
(ids|channels <YouTubeChannelIDList>)|
|
||||
(forusername <String>)|
|
||||
(managedbyme <String>))
|
||||
[languagecode <BCP47LanguageCode>]
|
||||
[allfields|(fields <YouTubeChannelFieldNameList>)]
|
||||
[formatjson]
|
||||
gam <UserTypeEntity> print youtubechannels [todrive <ToDriveAttribute>*]
|
||||
[channels <YouTubeChannelIDList>]
|
||||
(mine|
|
||||
(ids|channels <YouTubeChannelIDList>)|
|
||||
(forusername <String>)|
|
||||
(managedbyme <String>))
|
||||
[languagecode <BCP47LanguageCode>]
|
||||
[allfields|(fields <YouTubeChannelFieldNameList>)]
|
||||
[formatjson [quotechar <Character>]]
|
||||
|
||||
|
||||
@@ -2,6 +2,125 @@
|
||||
|
||||
Merged GAM-Team version
|
||||
|
||||
6.66.12
|
||||
|
||||
Upgraded to Python 3.12.1 where possible.
|
||||
|
||||
Updated all drive commands to handle the following error:
|
||||
```
|
||||
ERROR: 401: Active session is invalid. Error code: 4 - authError
|
||||
```
|
||||
This is due to the Drive SDK API being disabled in the user's OU.
|
||||
* See: https://support.google.com/a/answer/6105699
|
||||
|
||||
6.66.11
|
||||
|
||||
Fixed/improved handling of shortcuts in `gam <UserTypeEntity> transfer drive`.
|
||||
|
||||
6.66.10
|
||||
|
||||
Updated `gam create datatransfer` to handle the following error:
|
||||
```
|
||||
ERROR: 401: Active session is invalid. Error code: 4 - authError
|
||||
```
|
||||
|
||||
6.66.09
|
||||
|
||||
Fixed bug in `gam <UserTypeEntity> print filelist ... allfields` that caused a trap
|
||||
when `gam.cfg` contained `drive_v3_native_names = False`.
|
||||
|
||||
6.66.08
|
||||
|
||||
Added additional columns `isBase` and `baseId` to `gam <UserTypeEntity> print fileparenttree`
|
||||
to simplify processing the output in a script.
|
||||
|
||||
6.66.07
|
||||
|
||||
Fixed bug in `gam <UserTypeEntity> print diskusage` that caused a trap.
|
||||
|
||||
6.66.06
|
||||
|
||||
Added a command the print the parent tree of file/folder.
|
||||
```
|
||||
gam <UserTypeEntity> print fileparenttree <DriveFileEntity> [todrive <ToDriveAttribute>*]
|
||||
[stripcrsfromname]
|
||||
```
|
||||
* See: https://github.com/taers232c/GAMADV-XTD3/wiki/Users-Drive-Files-Display#display-file-parent-tree
|
||||
|
||||
6.66.05
|
||||
|
||||
Added column `space.name` to `gam <UserTypeEntity> print chatmembers`.
|
||||
|
||||
6.66.04
|
||||
|
||||
Updated Chat info|show|print commands to display all time fields in local time if specified in `gam.cfg`.
|
||||
|
||||
6.66.03
|
||||
|
||||
Fixed bug in `gam <UserTypeEntity> print filelist select <DriveFileEntity>` where `stripcrsfromname` was not being
|
||||
applied to files below the selected folder.
|
||||
|
||||
6.66.02
|
||||
|
||||
Updated device commmands to handle the following error caused by an invalid query.
|
||||
```
|
||||
ERROR: 400: invalidArgument - Request contains an invalid argument.
|
||||
```
|
||||
|
||||
Added fields `deviceid` and `hostname` to `<DeviceFieldName>`.
|
||||
|
||||
6.66.01
|
||||
|
||||
Added the following variables to gam.cfg that allow control over whether `\` is used as an escape character
|
||||
when reading/writing CSV files.
|
||||
```
|
||||
csv_input_no_escape_char - default value True
|
||||
csv_output_no_escape_char - default value False
|
||||
todrive_no_escape_char - default value True
|
||||
```
|
||||
When the value is True, `\` is ignored as an escape character; when the value is False,
|
||||
`\\` on input is converted to `\`, `\` on output is converted to `\\`.
|
||||
|
||||
* See: https://github.com/taers232c/GAMADV-XTD3/wiki/CSV-Special-Characters
|
||||
|
||||
6.66.00
|
||||
|
||||
Added support for `Focus Time` and `Out of Office` status events in user's primary calendars.
|
||||
* See: https://github.com/taers232c/GAMADV-XTD3/wiki/Users-Calendars-Events#status-events
|
||||
This is a work-in-progress.
|
||||
|
||||
Updated `gam <UserTypeEntity> print|show messages` to allow option `show_size` to be used with option `countsonly`
|
||||
to display the cumulative size of the messages selected.
|
||||
```
|
||||
gam user user@domain.com print messages query "newer_than:31d" countsonly showsize
|
||||
Getting all Messages for user@domain.com
|
||||
Got 16 Messagess for user@domain.com...
|
||||
User,messages,size
|
||||
user@domain.com,16,92806
|
||||
```
|
||||
|
||||
6.65.17
|
||||
|
||||
Added the option `mappermissionsdomain <DomainName1> <DomainName2>` to `gam <UserTypeEntity> create drivefileacl <DriveFileEntity>`
|
||||
that maps `<DomainName1>` to `<DomainName2>` in the `user <UserItem>)|(group <GroupItem>)|(domain <DomainName>)` options;
|
||||
`<UserItem>` and `<GroupItem>` must specify email addresses for the mapping to succeed.
|
||||
The option can be specified multiple times to provide different mappings. This option will be most useful
|
||||
when reading a CSV file containing ACLs referencing `<DomainName1>` and you want a new ACL with the same options but in `<DomainName2>`.
|
||||
|
||||
6.65.16
|
||||
|
||||
Fixed bug in `gam <UserTypeEntity> print filecounts` where `Item Cap` showed an incorrect value.
|
||||
|
||||
Added option `addorigfieldstosubject` to `gam <UserTypeEntity> forward messages|threads` that causes GAM
|
||||
to append the original `from`, `to` and `date` fields to the message subject.
|
||||
```
|
||||
Fwd: Ross to TestUser (Original From: Ross Scroggs <ross.scroggs@gmail.com> To: testuser@domain.com Date: Thu, 23 Nov 2023 07:01:59 -0800)
|
||||
```
|
||||
|
||||
6.65.15
|
||||
|
||||
Added additional options to `gam <UserTypeEntity> print|show youtubechannels`.
|
||||
|
||||
6.65.14
|
||||
|
||||
Fixed bug in gam <UserTypeEntity> copy|move drivefile` that caused a trap.
|
||||
|
||||
1173
src/gam/__init__.py
1173
src/gam/__init__.py
File diff suppressed because it is too large
Load Diff
@@ -49,6 +49,7 @@ class GamAction():
|
||||
DELETE = 'dele'
|
||||
DELETE_EMPTY = 'delm'
|
||||
DELETE_PREVIEW = 'delp'
|
||||
DELETE_SHORTCUT = 'desc'
|
||||
DEPROVISION = 'depr'
|
||||
DISABLE = 'disa'
|
||||
DOWNLOAD = 'down'
|
||||
@@ -160,11 +161,12 @@ class GamAction():
|
||||
COPY_MERGE: ['Copied(Merge)', 'Copy(Merge)'],
|
||||
CREATE: ['Created', 'Create'],
|
||||
CREATE_PREVIEW: ['Created (Preview)', 'Create (Preview)'],
|
||||
CREATE_SHORTCUT: ['Created Shortcut', 'Create SHORTCUT'],
|
||||
CREATE_SHORTCUT: ['Created Shortcut', 'Create Shortcut'],
|
||||
DEDUP: ['Duplicates Deleted', 'Delete Duplicates'],
|
||||
DELETE: ['Deleted', 'Delete'],
|
||||
DELETE_EMPTY: ['Deleted', 'Delete Empty'],
|
||||
DELETE_PREVIEW: ['Deleted (Preview)', 'Delete (Preview)'],
|
||||
DELETE_SHORTCUT: ['Deleted Shortcut', 'Delete Shortcut'],
|
||||
DEPROVISION: ['Deprovisioned', 'Deprovision'],
|
||||
DISABLE: ['Disabled', 'Disable'],
|
||||
DOWNLOAD: ['Downloaded', 'Download'],
|
||||
|
||||
@@ -691,14 +691,6 @@ DRIVE3_TO_DRIVE2_CAPABILITIES_NAMES_MAP = {
|
||||
'canChangeViewersCanCopyContent': 'canChangeRestrictedDownload',
|
||||
}
|
||||
|
||||
DRIVE3_TO_DRIVE2_CAPABILITIES_TITLES_MAP = {
|
||||
'capabilities.canComment': 'canComment',
|
||||
'capabilities.canReadRevisions': 'canReadRevisions',
|
||||
'capabilities.canCopy': 'copyable',
|
||||
'capabilities.canEdit': 'editable',
|
||||
'capabilities.canShare': 'shareable',
|
||||
}
|
||||
|
||||
DRIVE3_TO_DRIVE2_FILES_FIELDS_MAP = {
|
||||
'allowFileDiscovery': 'withLink',
|
||||
'createdTime': 'createdDate',
|
||||
|
||||
@@ -89,6 +89,8 @@ CONFIG_DIR = 'config_dir'
|
||||
CONTACT_MAX_RESULTS = 'contact_max_results'
|
||||
# Column delimiter in CSV input file
|
||||
CSV_INPUT_COLUMN_DELIMITER = 'csv_input_column_delimiter'
|
||||
# No escape character in CSV input file
|
||||
CSV_INPUT_NO_ESCAPE_CHAR = 'csv_input_no_escape_char'
|
||||
# Quote character in CSV input file
|
||||
CSV_INPUT_QUOTE_CHAR = 'csv_input_quote_char'
|
||||
# Filter for input column values
|
||||
@@ -105,6 +107,8 @@ CSV_INPUT_ROW_LIMIT = 'csv_input_row_limit'
|
||||
CSV_OUTPUT_CONVERT_CR_NL = 'csv_output_convert_cr_nl'
|
||||
# Column delimiter in CSV output file
|
||||
CSV_OUTPUT_COLUMN_DELIMITER = 'csv_output_column_delimiter'
|
||||
# No escape character in CSV output file
|
||||
CSV_OUTPUT_NO_ESCAPE_CHAR = 'csv_output_no_escape_char'
|
||||
# Field list delimiter in CSV output file
|
||||
CSV_OUTPUT_FIELD_DELIMITER = 'csv_output_field_delimiter'
|
||||
# Filter for output column headers
|
||||
@@ -260,6 +264,8 @@ TODRIVE_LOCALE = 'todrive_locale'
|
||||
TODRIVE_NOBROWSER = 'todrive_nobrowser'
|
||||
# Suppress sending email on todrive upload
|
||||
TODRIVE_NOEMAIL = 'todrive_noemail'
|
||||
# No escape character in CSV output file
|
||||
TODRIVE_NO_ESCAPE_CHAR = 'todrive_no_escape_char'
|
||||
# ID/Name of parent folder for todrive files
|
||||
TODRIVE_PARENT = 'todrive_parent'
|
||||
# Append timestamp to todrive sheet name
|
||||
@@ -317,6 +323,7 @@ Defaults = {
|
||||
CONFIG_DIR: '',
|
||||
CONTACT_MAX_RESULTS: '100',
|
||||
CSV_INPUT_COLUMN_DELIMITER: ',',
|
||||
CSV_INPUT_NO_ESCAPE_CHAR: TRUE,
|
||||
CSV_INPUT_QUOTE_CHAR: '\'"\'',
|
||||
CSV_INPUT_ROW_FILTER: '',
|
||||
CSV_INPUT_ROW_FILTER_MODE: 'allmatch',
|
||||
@@ -325,6 +332,7 @@ Defaults = {
|
||||
CSV_INPUT_ROW_LIMIT: '0',
|
||||
CSV_OUTPUT_COLUMN_DELIMITER: ',',
|
||||
CSV_OUTPUT_CONVERT_CR_NL: FALSE,
|
||||
CSV_OUTPUT_NO_ESCAPE_CHAR: FALSE,
|
||||
CSV_OUTPUT_FIELD_DELIMITER: "' '",
|
||||
CSV_OUTPUT_HEADER_FILTER: '',
|
||||
CSV_OUTPUT_HEADER_DROP_FILTER: '',
|
||||
@@ -402,6 +410,7 @@ Defaults = {
|
||||
TODRIVE_LOCALE: '',
|
||||
TODRIVE_NOBROWSER: '',
|
||||
TODRIVE_NOEMAIL: '',
|
||||
TODRIVE_NO_ESCAPE_CHAR: TRUE,
|
||||
TODRIVE_PARENT: 'root',
|
||||
TODRIVE_SHEET_TIMESTAMP: 'copy', # copy from TODRIVE_TIMESTAMP
|
||||
TODRIVE_SHEET_TIMEFORMAT: 'copy', # copy from TODRIVE_TIMEFORMAT
|
||||
@@ -469,6 +478,7 @@ VAR_INFO = {
|
||||
CONFIG_DIR: {VAR_TYPE: TYPE_DIRECTORY, VAR_ENVVAR: 'GAMUSERCONFIGDIR'},
|
||||
CONTACT_MAX_RESULTS: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (1, 10000)},
|
||||
CSV_INPUT_COLUMN_DELIMITER: {VAR_TYPE: TYPE_CHARACTER},
|
||||
CSV_INPUT_NO_ESCAPE_CHAR: {VAR_TYPE: TYPE_BOOLEAN},
|
||||
CSV_INPUT_QUOTE_CHAR: {VAR_TYPE: TYPE_CHARACTER},
|
||||
CSV_INPUT_ROW_FILTER: {VAR_TYPE: TYPE_ROWFILTER},
|
||||
CSV_INPUT_ROW_FILTER_MODE: {VAR_TYPE: TYPE_CHOICE, VAR_CHOICES: {'allmatch': True, 'anymatch': False}},
|
||||
@@ -477,6 +487,7 @@ VAR_INFO = {
|
||||
CSV_INPUT_ROW_LIMIT: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (0, None)},
|
||||
CSV_OUTPUT_COLUMN_DELIMITER: {VAR_TYPE: TYPE_CHARACTER},
|
||||
CSV_OUTPUT_CONVERT_CR_NL: {VAR_TYPE: TYPE_BOOLEAN},
|
||||
CSV_OUTPUT_NO_ESCAPE_CHAR: {VAR_TYPE: TYPE_BOOLEAN},
|
||||
CSV_OUTPUT_FIELD_DELIMITER: {VAR_TYPE: TYPE_CHARACTER},
|
||||
CSV_OUTPUT_HEADER_FILTER: {VAR_TYPE: TYPE_HEADERFILTER},
|
||||
CSV_OUTPUT_HEADER_DROP_FILTER: {VAR_TYPE: TYPE_HEADERFILTER},
|
||||
@@ -554,6 +565,7 @@ VAR_INFO = {
|
||||
TODRIVE_LOCALE: {VAR_TYPE: TYPE_LOCALE},
|
||||
TODRIVE_NOBROWSER: {VAR_TYPE: TYPE_BOOLEAN, VAR_SIGFILE: 'nobrowser.txt', VAR_SFFT: (FALSE, TRUE)},
|
||||
TODRIVE_NOEMAIL: {VAR_TYPE: TYPE_BOOLEAN, VAR_SIGFILE: 'notdemail.txt', VAR_SFFT: (FALSE, TRUE)},
|
||||
TODRIVE_NO_ESCAPE_CHAR: {VAR_TYPE: TYPE_BOOLEAN},
|
||||
TODRIVE_PARENT: {VAR_TYPE: TYPE_STRING, VAR_LIMITS: (0, None)},
|
||||
TODRIVE_SHEET_TIMESTAMP: {VAR_TYPE: TYPE_BOOLEAN},
|
||||
TODRIVE_SHEET_TIMEFORMAT: {VAR_TYPE: TYPE_STRING, VAR_LIMITS: (0, None)},
|
||||
|
||||
@@ -577,6 +577,7 @@ class GamCLArgs():
|
||||
ARG_FILEDRIVELABELS = 'filedrivelabels'
|
||||
ARG_FILEINFO = 'fileinfo'
|
||||
ARG_FILELIST = 'filelist'
|
||||
ARG_FILEPARENTTREE = 'fileparenttree'
|
||||
ARG_FILEPATH = 'filepath'
|
||||
ARG_FILEPATHS = 'filepaths'
|
||||
ARG_FILEREVISION = 'filerevision'
|
||||
@@ -586,6 +587,8 @@ class GamCLArgs():
|
||||
ARG_FILETREE = 'filetree'
|
||||
ARG_FILTER = 'filter'
|
||||
ARG_FILTERS = 'filters'
|
||||
ARG_FOCUSTIME = 'focustime'
|
||||
ARG_FOCUSTIMES = 'focustimes'
|
||||
ARG_FORM = 'form'
|
||||
ARG_FORMS = 'forms'
|
||||
ARG_FORMRESPONSE = 'formresponse'
|
||||
@@ -667,6 +670,8 @@ class GamCLArgs():
|
||||
ARG_OUS = 'ous'
|
||||
ARG_OUSHAREDDRIVE = 'oushareddrive'
|
||||
ARG_OUSHAREDDRIVES = 'oushareddrives'
|
||||
ARG_OUTOFOFFICE = 'outofoffice'
|
||||
ARG_OUTOFOFFICES = 'outofoffices'
|
||||
ARG_OUTREE = 'outree'
|
||||
ARG_OWNERSHIP = 'ownership'
|
||||
ARG_PARTICIPANTS = 'participants'
|
||||
|
||||
@@ -85,6 +85,8 @@ class GamEntity():
|
||||
CHANNEL_SKU = 'chsk'
|
||||
CHAT_BOT = 'chbo'
|
||||
CHAT_MEMBER = 'chme'
|
||||
CHAT_MEMBER_GROUP = 'chmg'
|
||||
CHAT_MEMBER_USER = 'chmu'
|
||||
CHAT_MESSAGE = 'chms'
|
||||
CHAT_MESSAGE_ID = 'chmi'
|
||||
CHAT_SPACE = 'chsp'
|
||||
@@ -201,9 +203,13 @@ class GamEntity():
|
||||
END_TIME = 'endt'
|
||||
ENTITY = 'enti'
|
||||
EVENT = 'evnt'
|
||||
EVENT_FOCUSTIME = 'evft'
|
||||
EVENT_OUTOFOFFICE = 'evoo'
|
||||
EVENT_WORKINGLOCATION = 'evwl'
|
||||
FEATURE = 'feat'
|
||||
FIELD = 'fiel'
|
||||
FILE = 'file'
|
||||
FILE_PARENT_TREE = 'fptr'
|
||||
FILTER = 'filt'
|
||||
FORM = 'form'
|
||||
FORM_RESPONSE = 'frmr'
|
||||
@@ -362,7 +368,6 @@ class GamEntity():
|
||||
VAULT_OPERATION = 'vlto'
|
||||
VAULT_QUERY = 'vltq'
|
||||
WEBCLIPS_ENABLED = 'webc'
|
||||
WORKING_LOCATION = 'wrkl'
|
||||
YOUTUBE_CHANNEL = 'ytch'
|
||||
# _NAMES[0] is plural, _NAMES[1] is singular unless the item name is explicitly plural (Calendar Settings)
|
||||
# For items with Boolean values, both entries are singular (Forward, POP)
|
||||
@@ -414,6 +419,8 @@ class GamEntity():
|
||||
CHAT_MESSAGE: ['Chat Messages', 'Chat Message'],
|
||||
CHAT_MESSAGE_ID: ['Chat Message IDs', 'Chat Message ID'],
|
||||
CHAT_MEMBER: ['Chat Members', 'Chat Member'],
|
||||
CHAT_MEMBER_GROUP: ['Chat Group Members', 'Chat Group Member'],
|
||||
CHAT_MEMBER_USER: ['Chat User Members', 'Chat User Member'],
|
||||
CHAT_SPACE: ['Chat Spaces', 'Chat Space'],
|
||||
CHAT_THREAD: ['Chat Threads', 'Chat Thread'],
|
||||
CHROME_APP: ['Chrome Applications', 'Chrome Application'],
|
||||
@@ -528,9 +535,13 @@ class GamEntity():
|
||||
END_TIME: ['End Times', 'End Time'],
|
||||
ENTITY: ['Entities', 'Entity'],
|
||||
EVENT: ['Events', 'Event'],
|
||||
EVENT_FOCUSTIME: ['Focus Time Events', 'Focus Time Event'],
|
||||
EVENT_OUTOFOFFICE: ['Out of Office Events', 'Out of Office Event'],
|
||||
EVENT_WORKINGLOCATION: ['Working Location Events', 'Working Location Event'],
|
||||
FEATURE: ['Features', 'Feature'],
|
||||
FIELD: ['Fields', 'Field'],
|
||||
FILE: ['Files', 'File'],
|
||||
FILE_PARENT_TREE: ['File Parent Trees', 'File Parent Tree'],
|
||||
FILTER: ['Filters', 'Filter'],
|
||||
FORM: ['Forms', 'Form'],
|
||||
FORM_RESPONSE: ['Form Responses', 'Form Response'],
|
||||
@@ -689,7 +700,6 @@ class GamEntity():
|
||||
VAULT_OPERATION: ['Vault Operations', 'Vault Operation'],
|
||||
VAULT_QUERY: ['Vault Queries', 'Vault Query'],
|
||||
WEBCLIPS_ENABLED: ['Web Clips Enabled', 'Web Clips Enabled'],
|
||||
WORKING_LOCATION: ['Working Locations', 'Working Location'],
|
||||
YOUTUBE_CHANNEL: ['YouTube Channels', 'YouTube Channel'],
|
||||
ROLE_MANAGER: ['Managers', 'Manager'],
|
||||
ROLE_MEMBER: ['Members', 'Member'],
|
||||
|
||||
@@ -52,6 +52,7 @@ CANNOT_SHARE_TEAMDRIVE_WITH_NONGOOGLE_ACCOUNTS = 'cannotShareTeamDriveWithNonGoo
|
||||
CANNOT_UPDATE_PERMISSION = 'cannotUpdatePermission'
|
||||
CONDITION_NOT_MET = 'conditionNotMet'
|
||||
CONFLICT = 'conflict'
|
||||
CONTENT_OWNER_ACCOUNT_NOT_FOUND = 'contentOwnerAccountNotFound'
|
||||
CROSS_DOMAIN_MOVE_RESTRICTION = 'crossDomainMoveRestriction'
|
||||
CUSTOMER_EXCEEDED_ROLE_ASSIGNMENTS_LIMIT = 'CUSTOMER_EXCEEDED_ROLE_ASSIGNMENTS_LIMIT'
|
||||
CUSTOMER_NOT_FOUND = 'customerNotFound'
|
||||
@@ -164,6 +165,7 @@ TEAMDRIVES_SHORTCUT_FILE_NOT_SUPPORTED = 'teamDrivesShortcutFileNotSupported'
|
||||
TIME_RANGE_EMPTY = 'timeRangeEmpty'
|
||||
TRANSIENT_ERROR = 'transientError'
|
||||
UNKNOWN_ERROR = 'unknownError'
|
||||
UNSUPPORTED_LANGUAGE_CODE = 'unsupportedLanguageCode'
|
||||
UNSUPPORTED_SUPERVISED_ACCOUNT = 'unsupportedSupervisedAccount'
|
||||
UPLOAD_TOO_LARGE = 'uploadTooLarge'
|
||||
USER_CANNOT_CREATE_TEAMDRIVES = 'userCannotCreateTeamDrives'
|
||||
@@ -263,7 +265,7 @@ SHEETS_ACCESS_THROW_REASONS = DRIVE_USER_THROW_REASONS+[NOT_FOUND, PERMISSION_DE
|
||||
TASK_THROW_REASONS = [SERVICE_NOT_AVAILABLE, BAD_REQUEST, PERMISSION_DENIED, INVALID, NOT_FOUND, ACCESS_NOT_CONFIGURED]
|
||||
TASKLIST_THROW_REASONS = [SERVICE_NOT_AVAILABLE, BAD_REQUEST, PERMISSION_DENIED, INVALID, NOT_FOUND, ACCESS_NOT_CONFIGURED]
|
||||
USER_GET_THROW_REASONS = [USER_NOT_FOUND, DOMAIN_NOT_FOUND, DOMAIN_CANNOT_USE_APIS, FORBIDDEN, BAD_REQUEST, SYSTEM_ERROR]
|
||||
YOUTUBE_THROW_REASONS = [SERVICE_NOT_AVAILABLE, AUTH_ERROR, UNSUPPORTED_SUPERVISED_ACCOUNT]
|
||||
YOUTUBE_THROW_REASONS = [SERVICE_NOT_AVAILABLE, AUTH_ERROR, UNSUPPORTED_SUPERVISED_ACCOUNT, UNSUPPORTED_LANGUAGE_CODE, CONTENT_OWNER_ACCOUNT_NOT_FOUND]
|
||||
|
||||
REASON_MESSAGE_MAP = {
|
||||
ABORTED: [
|
||||
@@ -394,6 +396,8 @@ class conditionNotMet(Exception):
|
||||
pass
|
||||
class conflict(Exception):
|
||||
pass
|
||||
class contentOwnerAccountNotFound(Exception):
|
||||
pass
|
||||
class crossDomainMoveRestriction(Exception):
|
||||
pass
|
||||
class customerExceededRoleAssignmentsLimit(Exception):
|
||||
@@ -614,6 +618,8 @@ class transientError(Exception):
|
||||
pass
|
||||
class unknownError(Exception):
|
||||
pass
|
||||
class unsupportedLanguageCode(Exception):
|
||||
pass
|
||||
class unsupportedSupervisedAccount(Exception):
|
||||
pass
|
||||
class uploadTooLarge(Exception):
|
||||
@@ -659,6 +665,7 @@ REASON_EXCEPTION_MAP = {
|
||||
CANNOT_UPDATE_PERMISSION: cannotUpdatePermission,
|
||||
CONDITION_NOT_MET: conditionNotMet,
|
||||
CONFLICT: conflict,
|
||||
CONTENT_OWNER_ACCOUNT_NOT_FOUND: contentOwnerAccountNotFound,
|
||||
CROSS_DOMAIN_MOVE_RESTRICTION: crossDomainMoveRestriction,
|
||||
CUSTOMER_EXCEEDED_ROLE_ASSIGNMENTS_LIMIT: customerExceededRoleAssignmentsLimit,
|
||||
CUSTOMER_NOT_FOUND: customerNotFound,
|
||||
@@ -769,6 +776,7 @@ REASON_EXCEPTION_MAP = {
|
||||
TIME_RANGE_EMPTY: timeRangeEmpty,
|
||||
TRANSIENT_ERROR: transientError,
|
||||
UNKNOWN_ERROR: unknownError,
|
||||
UNSUPPORTED_LANGUAGE_CODE: unsupportedLanguageCode,
|
||||
UNSUPPORTED_SUPERVISED_ACCOUNT: unsupportedSupervisedAccount,
|
||||
UPLOAD_TOO_LARGE: uploadTooLarge,
|
||||
USER_CANNOT_CREATE_TEAMDRIVES: userCannotCreateTeamDrives,
|
||||
|
||||
@@ -65,6 +65,8 @@ CSV_OUTPUT_HEADER_DROP_FILTER = 'cohd'
|
||||
CSV_OUTPUT_HEADER_FILTER = 'cohf'
|
||||
# Force output column headers
|
||||
CSV_OUTPUT_HEADER_FORCE = 'cofh'
|
||||
# No escape character in CSV output file
|
||||
CSV_OUTPUT_NO_ESCAPE_CHAR = 'cone'
|
||||
# Quote character in CSV output file
|
||||
CSV_OUTPUT_QUOTE_CHAR = 'coqc'
|
||||
# Filter for output column drop values
|
||||
@@ -227,6 +229,7 @@ Globals = {
|
||||
CSV_OUTPUT_HEADER_DROP_FILTER: [],
|
||||
CSV_OUTPUT_HEADER_FILTER: [],
|
||||
CSV_OUTPUT_HEADER_FORCE: [],
|
||||
CSV_OUTPUT_NO_ESCAPE_CHAR: None,
|
||||
CSV_OUTPUT_QUOTE_CHAR: None,
|
||||
CSV_OUTPUT_ROW_DROP_FILTER: [],
|
||||
CSV_OUTPUT_ROW_DROP_FILTER_MODE: False,
|
||||
|
||||
@@ -338,6 +338,7 @@ NOT_A_MEMBER = 'Not a member'
|
||||
NOT_ACTIVE = 'Not Active'
|
||||
NOT_ALLOWED = 'Not Allowed'
|
||||
NOT_AN_ENTITY = 'Not a {0}'
|
||||
NOT_APPROPRIATE = 'Not Appropriate'
|
||||
NOT_COMPATIBLE = 'Not Compatible'
|
||||
NOT_COPYABLE = 'Not Copyable'
|
||||
NOT_COPYABLE_INTO_ITSELF = 'Not copyable into itself'
|
||||
@@ -422,6 +423,7 @@ RESOURCE_CAPACITY_FLOOR_REQUIRED = 'Options "capacity <Number>" (<Number> > 0) a
|
||||
RESOURCE_FLOOR_REQUIRED = 'Option "floor <String>" required'
|
||||
RESULTS_TOO_LARGE_FOR_GOOGLE_SPREADSHEET = 'Results are too large for Google Spreadsheets. Uploading as a regular CSV file.'
|
||||
RETRIES_EXHAUSTED = 'Retries {0} exhausted'
|
||||
RETRYING_GOOGLE_SHEET_EXPORT_SLEEPING = 'Retrying Google Sheet export {0}/{1}. Sleeping {2} seconds\n'
|
||||
ROLE_MUST_BE_ORGANIZER = 'Role must be organizer'
|
||||
ROLE_NOT_IN_SET = 'Role not in set: {0})'
|
||||
SCHEMA_WOULD_HAVE_NO_FIELDS = '{0} would have no {1}'
|
||||
|
||||
Reference in New Issue
Block a user