私の会社は課題を追跡するために JIRA を使用しており、課題の更新が行われるたびにすべてのウォッチャーとタグ付けされたユーザーに電子メールを送信するように設定されています。また、課題がクローズされるたびに課題のフィールド (スプリント番号など) を調整する自動化も行っています (これは電子メールも送信します)。また、JIRA からの電子メールを別のサブフォルダー 'JIRA' に入れる Outlook 内のフィルターもあります。
解決済みの問題に関する電子メールをよく受け取ります。JIRA の問題が既にクローズされている場合に、これらすべての電子メールを既読としてマークする小さな Python スクリプトを作成しようとしています。基本的な考え方は、このスクリプトを週に 1 回程度実行して、メールボックスをクリーンアップできるというものです。
これを行うために pywin32 および jira パッケージを使用していますが、メッセージ ステータスを変更する方法がわかりません。ドキュメントが不足しているという事実は役に立ちません...
私が持っているもの:
import re
import textwrap
from jira import JIRA
import pandas as pd
import win32com.client
jira = JIRA("<JIRA URL>", None, ("<USER>", "<JIRA API key>"))
outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
wrapper = textwrap.TextWrapper(initial_indent="", width=100, subsequent_indent=" " * 4)
days_back = 10
start_time = pd.to_datetime("now").floor("D") - pd.to_timedelta(days_back, unit="D")
for message in outlook.getDefaultFolder(6).Folders.Item("JIRA").Items.Restrict(f"[ReceivedTime] >= '{start_time.strftime('%d/%m/%Y %H:%M %p')}'"):
if message.Unread:
jira_issue = re.search("\[JIRA\] \([A-Z0-9-]+\)", str(message)).group().split()[1][1:-1]
print(message, jira_issue)
print(message.body)
issue = jira.issue(jira_issue)
status = issue.fields.status
if status in ("Done", "Checked"):
message.Unread = False
この SO issueに記載されているように。これは、電子メールを既読としてマークしていないようです。
これはPythonでもできることですか?もしそうなら、どのように?そうでない場合、代替アプローチは何でしょうか?