This commit is contained in:
Jay Lee
2026-05-26 16:15:09 +00:00
8 changed files with 47 additions and 23 deletions

View File

@@ -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'

View File

@@ -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>)

View File

@@ -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>`.

View File

@@ -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',

View File

@@ -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>`.

View File

@@ -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

View File

@@ -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>)

View File

@@ -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