我希望能够下载 Gmail 过滤器 XML 文件(通过转到“设置”>“过滤器和阻止的地址”>“导出”访问),并且能够在进行更改后重新上传它。看了谷歌API后,似乎没有办法做到这一点。
我将使用 python 来操作 XML 文件,但我希望能够在开始之前下载该文件。
我们的 Gmail API 无法将过滤器下载为 XML 并将它们上传回来进行修改,您可以在 https://issuetracker.google.com/ 向他们的问题跟踪器提交功能请求问题/新?component=191602&template=824107
Google 仅提供将所有过滤器检索到
dict
中的选项,使用他们的 QuickStart 我做了这个片段来检索所有过滤器:
SCOPES = ['https://www.googleapis.com/auth/gmail.settings.basic']
...
try:
# Call the Gmail API
service = build('gmail', 'v1', credentials=creds)
results = service.users().settings().filters().list(userId='me').execute()
print(results)
except HttpError as error:
# TODO(developer) - Handle errors from gmail API.
print(f'An error occurred: {error}')
输出将与此类似:
{
"filter": [
{
"id": "aaaaaaaaaaaaBBBBBBBBBBBBZZZZZZZZZZZZZZ",
"criteria": {"from": "[email protected]"},
"action": {"addLabelIds": ["Label_ID"]},
}
]
}
使用 API 修改现有过滤器似乎也是不可能的,目前您需要删除要更新的过滤器,然后重新创建它:
try:
# Call the Gmail API
service = build('gmail', 'v1', credentials=creds)
results = service.users().settings().filters().delete(userId='me',id='aaaaaaaaaaaaBBBBBBBBBBBBZZZZZZZZZZZZZZ').execute()
print(results)
try:
service = build('gmail', 'v1', credentials=creds)
filter = {
'criteria': {"from": "[email protected]"},
'action': {"addLabelIds": ["Label_ID"]},
}
results = service.users().settings().filters().create(userId='me',body=filter).execute()
print(results)