52518


現在Pythonにて日次更新するタスク管理表(エクセル)の自動化を試みています。その際、Outlookメールの受信トレイにフラグをまず手動でつけています。Pythonで試みたいのはその手動で付けたフラグメールの件名をコピーし、別で管理しているエクセル（タスク管理表）に貼り付けるという作業です。まずはエクセルのA1セルでいいので、そこに貼り付ける方法を教えていただけると助かります。Googleで調べましたがなかなかうまく検索で情報を得られませんでした。  
どうぞよろしくお願いいたします。

<現状できている部分>

[code]

    import win32com.client
    object = win32com.client.Dispatch('Outlook.Application')
    mapi = object.GetNamespace('MAPI')
    inbox = mapi.GetDefaultFolder(6)
    print(inbox.Name)
    
[/code]

<課題>

上記のコードから続けて、Outlookのフラグがついているメールを取得しエクセルに貼り付ける


CC BY-SA 4.0
2019-02-01T21:48:44.520
52492
2019-02-06T04:13:49.397
2019-02-04T01:21:40.977
3060
31771
question
python excel mail
Python をつかってMS Outlookのフラグがついているメールの題名を取得したい


あまりoutlookは使用していないのですが、フラグというのは「TODOアイテムのフラグ」というもので良いのでしょうか？  
あっているのであれば、下記のコードでメールの件名を取得できました。

[code]

    import win32com.client
    object = win32com.client.Dispatch('Outlook.Application')
    mapi = object.GetNamespace('MAPI')
    inbox = mapi.GetDefaultFolder(6)
    
    # 以下を追加しています。
    for item in inbox.items:
        if item.IsMarkedAsTask:
            print(item.subject)
    
[/code]

エクセルへの貼付けについては別途調べるなり、質問した方が良いかと思いますので割愛いたします。  
（質問のタイトルにもありませんし。）

* * *

とか言いながら試してみたら簡単にできたので、Excelに出力部分も書いておきます。  
（openpyxlは別途インストールしてください。）

[code]

    import win32com.client
    import openpyxl
    
    INPUT_PATH = 'C:\\work\\20190204\\hoge.xlsx'
    OUTPUT_PATH =  'C:\\work\\20190204\\hoge2.xlsx'
    SHEET_NAME = 'Sheet1'
    
    object = win32com.client.Dispatch('Outlook.Application')
    mapi = object.GetNamespace('MAPI')
    inbox = mapi.GetDefaultFolder(6)
    
    # ブックを取得
    book = openpyxl.load_workbook(INPUT_PATH)
    # シートを取得
    sheet = book[SHEET_NAME]
    
    row_number = 1
    for item in inbox.items:
        if item.IsMarkedAsTask:
            sheet.cell(row=row_number, column=1).value = item.subject
            row_number = row_number + 1
    book.save(OUTPUT_PATH)
    
[/code]


CC BY-SA 4.0
2019-02-04T01:20:38.333
52518
2019-02-06T04:13:49.397
2019-02-06T04:13:49.397
13022
13022
52492
answer