mirror of
https://github.com/GAM-team/GAM.git
synced 2026-06-03 22:01:39 +00:00
Merge branch 'main' of https://github.com/GAM-team/GAM
This commit is contained in:
2
.github/workflows/build.yml
vendored
2
.github/workflows/build.yml
vendored
@@ -165,7 +165,7 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
path: |
|
path: |
|
||||||
cache.tar.xz
|
cache.tar.xz
|
||||||
key: gam-${{ matrix.jid }}-20260508
|
key: gam-${{ matrix.jid }}-20260523
|
||||||
|
|
||||||
- name: Untar Cache archive
|
- name: Untar Cache archive
|
||||||
if: matrix.goal == 'build' && steps.cache-python-ssl.outputs.cache-hit == 'true'
|
if: matrix.goal == 'build' && steps.cache-python-ssl.outputs.cache-hit == 'true'
|
||||||
|
|||||||
@@ -8031,12 +8031,12 @@ gam <UserTypeEntity> export thread|threads
|
|||||||
[quick|notquick] [doit] [max_to_export <Number>])|(ids <ThreadIDEntity>)
|
[quick|notquick] [doit] [max_to_export <Number>])|(ids <ThreadIDEntity>)
|
||||||
[targetfolder <FilePath>] [targetname <FileName>] [overwrite [<Boolean>]]
|
[targetfolder <FilePath>] [targetname <FileName>] [overwrite [<Boolean>]]
|
||||||
|
|
||||||
gam <UserTypeEntity> forward message|messages recipient|to <RecipientEntity>
|
gam <UserTypeEntity> forward message|messages [recipient|to] <RecipientEntity>
|
||||||
(((query <QueryGmail> [querytime<String> <Date>]*) (matchlabel <LabelName>) [or|and])+
|
(((query <QueryGmail> [querytime<String> <Date>]*) (matchlabel <LabelName>) [or|and])+
|
||||||
[labelids <LabelIDList>]
|
[labelids <LabelIDList>]
|
||||||
[quick|notquick] [doit] [max_to_forward <Number>])|(ids <MessageIDEntity>)
|
[quick|notquick] [doit] [max_to_forward <Number>])|(ids <MessageIDEntity>)
|
||||||
[subject <String>] [addorigfieldstosubject [<Boolean>]] [altcharset <String>]
|
[subject <String>] [addorigfieldstosubject [<Boolean>]] [altcharset <String>]
|
||||||
gam <UserTypeEntity> forward thread|thtreads recipient|to <RecipientEntity>
|
gam <UserTypeEntity> forward thread|thtreads [recipient|to] <RecipientEntity>
|
||||||
(((query <QueryGmail> [querytime<String> <Date>]*) (matchlabel <LabelName>) [or|and])+
|
(((query <QueryGmail> [querytime<String> <Date>]*) (matchlabel <LabelName>) [or|and])+
|
||||||
[labelids <LabelIDList>]
|
[labelids <LabelIDList>]
|
||||||
quick|notquick] [doit] [max_to_forward <Number>])|(ids <ThreadIDEntity>)
|
quick|notquick] [doit] [max_to_forward <Number>])|(ids <ThreadIDEntity>)
|
||||||
|
|||||||
@@ -1,3 +1,15 @@
|
|||||||
|
7.43.10
|
||||||
|
|
||||||
|
Updated `gam <UserTypeEntity> forward message|thread [recipient|to] <RecipientEntity>` to not forward messages
|
||||||
|
to the `Bcc` recipients of the original message.
|
||||||
|
|
||||||
|
Fixed bug in `gam <UserTypeEntity> forward message|thread [recipient|to] <RecipientEntity> addorigfieldstosubject`
|
||||||
|
where the recipient of the forwarded message was added to the subject line instead of the recipient of the original message.
|
||||||
|
|
||||||
|
7.43.09
|
||||||
|
|
||||||
|
Fixed bug in `gam <UserTypeEntity> print filelist` that caused a trap.
|
||||||
|
|
||||||
7.43.08
|
7.43.08
|
||||||
|
|
||||||
Fixed bug and formatting issues in `gam info device <DeviceEntity>`.
|
Fixed bug and formatting issues in `gam info device <DeviceEntity>`.
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ https://github.com/GAM-team/GAM/wiki
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
__author__ = 'GAM Team <google-apps-manager@googlegroups.com>'
|
__author__ = 'GAM Team <google-apps-manager@googlegroups.com>'
|
||||||
__version__ = '7.43.08'
|
__version__ = '7.43.10'
|
||||||
__license__ = 'Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)'
|
__license__ = 'Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)'
|
||||||
|
|
||||||
# pylint: disable=wrong-import-position
|
# pylint: disable=wrong-import-position
|
||||||
@@ -29173,7 +29173,7 @@ def doInfoChatMessage():
|
|||||||
# [formatjson [quotechar <Character>]]
|
# [formatjson [quotechar <Character>]]
|
||||||
def printShowChatMessages(users):
|
def printShowChatMessages(users):
|
||||||
cd = buildGAPIObject(API.DIRECTORY)
|
cd = buildGAPIObject(API.DIRECTORY)
|
||||||
csvPF = CSVPrintFile(['User', 'space.name', 'space.displayName', 'name'] if not isinstance(users, list) else ['space.name', 'space.displayName', 'name']) if Act.csvFormat() else None
|
csvPF = CSVPrintFile(['User', 'space.name', 'space.displayName', 'name']) if Act.csvFormat() else None
|
||||||
FJQC = FormatJSONQuoteChar(csvPF)
|
FJQC = FormatJSONQuoteChar(csvPF)
|
||||||
fieldsList = []
|
fieldsList = []
|
||||||
pfilter = None
|
pfilter = None
|
||||||
@@ -29301,7 +29301,7 @@ def doInfoChatEvent():
|
|||||||
# filter <String>
|
# filter <String>
|
||||||
# [formatjson [quotechar <Character>]]
|
# [formatjson [quotechar <Character>]]
|
||||||
def printShowChatEvents(users):
|
def printShowChatEvents(users):
|
||||||
csvPF = CSVPrintFile(['User', 'space.name', 'space.displayName', 'name'] if not isinstance(users, list) else ['space.name', 'space.displayName', 'name']) if Act.csvFormat() else None
|
csvPF = CSVPrintFile(['User', 'space.name', 'space.displayName', 'name']) if Act.csvFormat() else None
|
||||||
FJQC = FormatJSONQuoteChar(csvPF)
|
FJQC = FormatJSONQuoteChar(csvPF)
|
||||||
pfilter = None
|
pfilter = None
|
||||||
parentList = []
|
parentList = []
|
||||||
@@ -59707,7 +59707,7 @@ def printFileList(users):
|
|||||||
(DLP.onlySharedDrives and not driveId)):
|
(DLP.onlySharedDrives and not driveId)):
|
||||||
return
|
return
|
||||||
if getCheckFilePermissions:
|
if getCheckFilePermissions:
|
||||||
if not incrementalPrint:
|
if buildTree and not incrementalPrint:
|
||||||
getSharedDriveACLsCount += 1
|
getSharedDriveACLsCount += 1
|
||||||
if getSharedDriveACLsCount % 100 == 0:
|
if getSharedDriveACLsCount % 100 == 0:
|
||||||
writeStderr(f'{Msg.GOT} {getSharedDriveACLsCount} {Ent.Plural(Ent.DRIVE_FILE_OR_FOLDER_ACL)} {Msg.FOR} {gettingEntity}\n')
|
writeStderr(f'{Msg.GOT} {getSharedDriveACLsCount} {Ent.Plural(Ent.DRIVE_FILE_OR_FOLDER_ACL)} {Msg.FOR} {gettingEntity}\n')
|
||||||
@@ -74597,10 +74597,10 @@ def _decodeHeader(header):
|
|||||||
stderrWarningMsg(Msg.INVALID_CHARSET.format(mg.group(1)))
|
stderrWarningMsg(Msg.INVALID_CHARSET.format(mg.group(1)))
|
||||||
return header
|
return header
|
||||||
|
|
||||||
# gam <UserTypeEntity> forward message|messages recipient|to <RecipientEntity>
|
# 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>)
|
# (((query <QueryGmail> [querytime<String> <Date>]*) (matchlabel <LabelName>) [or|and])+ [quick|notquick] [doit] [max_to_forward <Number>])|(ids <MessageIDEntity>)
|
||||||
# [subject <String>] [addorigfieldstosubject [<Boolean>]] [altcharset <String>]
|
# [subject <String>] [addorigfieldstosubject [<Boolean>]] [altcharset <String>]
|
||||||
# gam <UserTypeEntity> forward thread|threads recipient|to <RecipientEntity>
|
# 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>)
|
# (((query <QueryGmail> [querytime<String> <Date>]*) (matchlabel <LabelName>) [or|and])+ [quick|notquick] [doit] [max_to_forward <Number>])|(ids <ThreadIDEntity>)
|
||||||
# [subject <String>] [addorigfieldstosubject [<Boolean>]] [altcharset <String>]
|
# [subject <String>] [addorigfieldstosubject [<Boolean>]] [altcharset <String>]
|
||||||
def forwardMessagesThreads(users, entityType):
|
def forwardMessagesThreads(users, entityType):
|
||||||
@@ -74703,16 +74703,16 @@ def forwardMessagesThreads(users, entityType):
|
|||||||
msgSubject = f"Fwd: {_decodeHeader(message['Subject'])}"
|
msgSubject = f"Fwd: {_decodeHeader(message['Subject'])}"
|
||||||
else:
|
else:
|
||||||
msgSubject = f"Subject: {subject}"
|
msgSubject = f"Subject: {subject}"
|
||||||
for header in ['To', 'Cc', 'Subject']:
|
|
||||||
if header in message:
|
|
||||||
del message[header]
|
|
||||||
message['To'] = msgTo
|
|
||||||
if addOriginalFieldsToSubject:
|
if addOriginalFieldsToSubject:
|
||||||
msgSubject += ' (Original'
|
msgSubject += ' (Original'
|
||||||
for header in ['From', 'To', 'Date']:
|
for header in ['From', 'To', 'Date']:
|
||||||
if header in message:
|
if header in message:
|
||||||
msgSubject += f' {header}: {message[header]}'
|
msgSubject += f' {header}: {message[header]}'
|
||||||
msgSubject += ')'
|
msgSubject += ')'
|
||||||
|
for header in ['To', 'Cc', 'Bcc', 'Subject']:
|
||||||
|
if header in message:
|
||||||
|
del message[header]
|
||||||
|
message['To'] = msgTo
|
||||||
message['Subject'] = msgSubject
|
message['Subject'] = msgSubject
|
||||||
try:
|
try:
|
||||||
result = callGAPI(gmail.users().messages(), 'send',
|
result = callGAPI(gmail.users().messages(), 'send',
|
||||||
|
|||||||
@@ -10,6 +10,18 @@ Add the `-s` option to the end of the above commands to suppress creating the `g
|
|||||||
|
|
||||||
See [Downloads-Installs-GAM7](https://github.com/GAM-team/GAM/wiki/Downloads-Installs) for Windows or other options, including manual installation
|
See [Downloads-Installs-GAM7](https://github.com/GAM-team/GAM/wiki/Downloads-Installs) for Windows or other options, including manual installation
|
||||||
|
|
||||||
|
### 7.43.10
|
||||||
|
|
||||||
|
Updated `gam <UserTypeEntity> forward message|thread [recipient|to] <RecipientEntity>` to not forward messages
|
||||||
|
to the `Bcc` recipients of the original message.
|
||||||
|
|
||||||
|
Fixed bug in `gam <UserTypeEntity> forward message|thread [recipient|to] <RecipientEntity> addorigfieldstosubject`
|
||||||
|
where the recipient of the forwarded message was added to the subject line instead of the recipient of the original message.
|
||||||
|
|
||||||
|
### 7.43.09
|
||||||
|
|
||||||
|
Fixed bug in `gam <UserTypeEntity> print filelist` that caused a trap.
|
||||||
|
|
||||||
### 7.43.08
|
### 7.43.08
|
||||||
|
|
||||||
Fixed bug and formatting issues in `gam info device <DeviceEntity>`.
|
Fixed bug and formatting issues in `gam info device <DeviceEntity>`.
|
||||||
|
|||||||
@@ -251,7 +251,7 @@ writes the credentials into the file oauth2.txt.
|
|||||||
```
|
```
|
||||||
gamteam@server:/Users/gamteam$ rm -f /Users/gamteam/GAMConfig/oauth2.txt
|
gamteam@server:/Users/gamteam$ rm -f /Users/gamteam/GAMConfig/oauth2.txt
|
||||||
gamteam@server:/Users/gamteam$ gam version
|
gamteam@server:/Users/gamteam$ gam version
|
||||||
GAM 7.43.08 - https://github.com/GAM-team/GAM - pyinstaller
|
GAM 7.43.10 - https://github.com/GAM-team/GAM - pyinstaller
|
||||||
GAM Team <google-apps-manager@googlegroups.com>
|
GAM Team <google-apps-manager@googlegroups.com>
|
||||||
Python 3.14.4 64-bit final
|
Python 3.14.4 64-bit final
|
||||||
macOS Tahoe 26.5 arm64
|
macOS Tahoe 26.5 arm64
|
||||||
@@ -1034,7 +1034,7 @@ writes the credentials into the file oauth2.txt.
|
|||||||
```
|
```
|
||||||
C:\>del C:\GAMConfig\oauth2.txt
|
C:\>del C:\GAMConfig\oauth2.txt
|
||||||
C:\>gam version
|
C:\>gam version
|
||||||
GAM 7.43.08 - https://github.com/GAM-team/GAM - pythonsource
|
GAM 7.43.10 - https://github.com/GAM-team/GAM - pythonsource
|
||||||
GAM Team <google-apps-manager@googlegroups.com>
|
GAM Team <google-apps-manager@googlegroups.com>
|
||||||
Python 3.14.4 64-bit final
|
Python 3.14.4 64-bit final
|
||||||
Windows 11 10.0.26200 AMD64
|
Windows 11 10.0.26200 AMD64
|
||||||
|
|||||||
@@ -477,12 +477,12 @@ When `matchlabel <LabelName>` is specified, the following characters are replace
|
|||||||
|
|
||||||
## Forward messages/threads
|
## Forward messages/threads
|
||||||
```
|
```
|
||||||
gam <UserTypeEntity> forward message|messages recipient|to <RecipientEntity>
|
gam <UserTypeEntity> forward message|messages [recipient|to] <RecipientEntity>
|
||||||
(((query <QueryGmail> [querytime<String> <Date>]*) (matchlabel <LabelName>) [or|and])+
|
(((query <QueryGmail> [querytime<String> <Date>]*) (matchlabel <LabelName>) [or|and])+
|
||||||
[labelids <LabelIDList>]
|
[labelids <LabelIDList>]
|
||||||
[quick|notquick] [doit] [max_to_forward <Number>])|(ids <MessageIDEntity>)
|
[quick|notquick] [doit] [max_to_forward <Number>])|(ids <MessageIDEntity>)
|
||||||
[subject <String>] [addorigfieldstosubject]
|
[subject <String>] [addorigfieldstosubject]
|
||||||
gam <UserTypeEntity> forward thread|threads recipient|to <RecipientEntity>
|
gam <UserTypeEntity> forward thread|threads [recipient|to] <RecipientEntity>
|
||||||
(((query <QueryGmail> [querytime<String> <Date>]*) (matchlabel <LabelName>) [or|and])+
|
(((query <QueryGmail> [querytime<String> <Date>]*) (matchlabel <LabelName>) [or|and])+
|
||||||
[labelids <LabelIDList>]
|
[labelids <LabelIDList>]
|
||||||
[quick|notquick] [doit] [max_to_forward <Number>])|(ids <ThreadIDEntity>)
|
[quick|notquick] [doit] [max_to_forward <Number>])|(ids <ThreadIDEntity>)
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
Print the current version of Gam with details
|
Print the current version of Gam with details
|
||||||
```
|
```
|
||||||
gam version
|
gam version
|
||||||
GAM 7.43.08 - https://github.com/GAM-team/GAM - pyinstaller
|
GAM 7.43.10 - https://github.com/GAM-team/GAM - pyinstaller
|
||||||
GAM Team <google-apps-manager@googlegroups.com>
|
GAM Team <google-apps-manager@googlegroups.com>
|
||||||
Python 3.14.4 64-bit final
|
Python 3.14.4 64-bit final
|
||||||
macOS Tahoe 26.5 arm64
|
macOS Tahoe 26.5 arm64
|
||||||
@@ -15,7 +15,7 @@ Time: 2026-02-15T07:51:00-08:00
|
|||||||
Print the current version of Gam with details and time offset information
|
Print the current version of Gam with details and time offset information
|
||||||
```
|
```
|
||||||
gam version timeoffset
|
gam version timeoffset
|
||||||
GAM 7.43.08 - https://github.com/GAM-team/GAM - pyinstaller
|
GAM 7.43.10 - https://github.com/GAM-team/GAM - pyinstaller
|
||||||
GAM Team <google-apps-manager@googlegroups.com>
|
GAM Team <google-apps-manager@googlegroups.com>
|
||||||
Python 3.14.4 64-bit final
|
Python 3.14.4 64-bit final
|
||||||
macOS Tahoe 26.5 arm64
|
macOS Tahoe 26.5 arm64
|
||||||
@@ -27,7 +27,7 @@ Your system time differs from www.googleapis.com by less than 1 second
|
|||||||
Print the current version of Gam with extended details and SSL information
|
Print the current version of Gam with extended details and SSL information
|
||||||
```
|
```
|
||||||
gam version extended
|
gam version extended
|
||||||
GAM 7.43.08 - https://github.com/GAM-team/GAM - pyinstaller
|
GAM 7.43.10 - https://github.com/GAM-team/GAM - pyinstaller
|
||||||
GAM Team <google-apps-manager@googlegroups.com>
|
GAM Team <google-apps-manager@googlegroups.com>
|
||||||
Python 3.14.4 64-bit final
|
Python 3.14.4 64-bit final
|
||||||
macOS Tahoe 26.5 arm64
|
macOS Tahoe 26.5 arm64
|
||||||
@@ -68,7 +68,7 @@ MacOS High Sierra 10.13.6 x86_64
|
|||||||
Path: /Users/gamteam/bin/gam7
|
Path: /Users/gamteam/bin/gam7
|
||||||
Version Check:
|
Version Check:
|
||||||
Current: 5.35.08
|
Current: 5.35.08
|
||||||
Latest: 7.43.08
|
Latest: 7.43.10
|
||||||
echo $?
|
echo $?
|
||||||
1
|
1
|
||||||
```
|
```
|
||||||
@@ -76,7 +76,7 @@ echo $?
|
|||||||
Print the current version number without details
|
Print the current version number without details
|
||||||
```
|
```
|
||||||
gam version simple
|
gam version simple
|
||||||
7.43.08
|
7.43.10
|
||||||
```
|
```
|
||||||
In Linux/MacOS you can do:
|
In Linux/MacOS you can do:
|
||||||
```
|
```
|
||||||
@@ -86,7 +86,7 @@ echo $VER
|
|||||||
Print the current version of Gam and address of this Wiki
|
Print the current version of Gam and address of this Wiki
|
||||||
```
|
```
|
||||||
gam help
|
gam help
|
||||||
GAM 7.43.08 - https://github.com/GAM-team/GAM
|
GAM 7.43.10 - https://github.com/GAM-team/GAM
|
||||||
GAM Team <google-apps-manager@googlegroups.com>
|
GAM Team <google-apps-manager@googlegroups.com>
|
||||||
Python 3.14.4 64-bit final
|
Python 3.14.4 64-bit final
|
||||||
macOS Tahoe 26.5 arm64
|
macOS Tahoe 26.5 arm64
|
||||||
|
|||||||
Reference in New Issue
Block a user