0

私の会社は課題を追跡するために 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でもできることですか?もしそうなら、どのように?そうでない場合、代替アプローチは何でしょうか?

4

1 に答える 1