質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

2377閲覧

エラー:AttributeError: .ReceivedTime

ekTJ

総合スコア109

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/10/08 08:46

編集2020/10/08 09:31

助けてください。下記を実行するとエラーになってしまいます。
outlookの情報をエクセルに保存しようとしています。
エラー箇所:[outlookの情報を取得]の上から3行目 RT = message.ReceivedTime
何をどうすればエラーを回避できるでしょうか。
どなたか宜しくお願い致します。

AttributeError: .ReceivedTime

環境条件
windows 10
python 3.8.3
VSCODE 

from openpyxl import load_workbook import win32com.client import datetime import os 所定フォルダ内の「Book.xlsm」を指定して読み込む filepath = 'C:/Users/Desktop/python lesson/メール保存/Outlook_Book2.xlsx' wb = load_workbook(filename=filepath) ws1 = wb["データ"] 集計範囲の取得 startdate = ws1["B2"].value enddate = ws1["B3"].value outllokの情報を取得 outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI") inbox = outlook.GetDefaultFolder(6) messages = inbox.Items outlookの添付ファイル保存 now = datetime.datetime.now() foldermake = now.strftime('%Y/%m/%d %H:%M:%S') foldermake = foldermake.replace("/","-") foldermake = foldermake.replace(":","-") foldermake = foldermake.replace(" ","-") newfolder_path = 'C:/Users/Desktop/python lesson/メール保存/Outlook_'+foldermake os.makedirs(newfolder_path) outlookの情報を取得 a=0 for message in messages:   RT = message.ReceivedTime   hiduketime = datetime.datetime(RT.year, RT.month, RT.day, RT.hour, RT.minute, RT.second)   if startdate <= hiduketime <= enddate:     ws1.cell(row=7+a, column=1).value = a+1     ws1.cell(row=7+a, column=2).value = str(message.Subject)     ws1.cell(row=7+a, column=3).value = hiduketime     ws1.cell(row=7+a, column=4).value = str(message.Sender)     ws1.cell(row=7+a, column=5).value = str(message.body[0:100])     if message.Attachments.Count > 0:       myDate = RT.strftime('%Y/%m/%d %H:%M:%S')       myDate = myDate.replace("/","-")       myDate = myDate.replace(":","-")       myDate = myDate.replace(" ","-")       datefolder_path = newfolder_path + "\" + myDate       os.makedirs(datefolder_path)       for myAttachement in message.Attachments:         print(myAttachement.FileName)         myAttachement.SaveAsFile(datefolder_path + "\" +myAttachement.FileName)       ws1.cell(row=7+a, column=6).value = "有"     else:       ws1.cell(row=7+a, column=6).value = "無"     a=a+1 Outlook_Book2.xlsx」として所定のフォルダに保存 newfilepath = ''C:/Users/Desktop/python lesson/メール保存/Outlook_Book2.xlsx' wb.save(newfilepath) print("保存しました") コード

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2020/10/08 08:52

このままではコードが読めないので、質問を編集し、<code>ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください
ekTJ

2020/10/08 09:01

ご指摘通り修正致しました。
y_waiwai

2020/10/08 09:05

このコードは実際に走らせたものでしょうか? これではどうみてもまともにPythonとして解釈できるもんではないです
ekTJ

2020/10/08 09:11

???申し訳ございません。どうしてpythonとして成り立っていないのでしょうか?
y_waiwai

2020/10/08 09:12

インデントがまともになってませんよ。 このコードをコピーして実行してみてくださいな
y_waiwai

2020/10/08 09:18

> 所定フォルダ内の「Book.xlsm」を指定して読み込む これはどーみてもpythonのコードじゃないですよね
ekTJ

2020/10/08 09:21

すみません、各pathは実際入力あります。質問のためusers以降を消してます。
y_waiwai

2020/10/08 09:33

あなたの持ってるコードをコピペするだけなんですが。
ekTJ

2020/10/08 10:09

大変失礼ですが、AttributeError: .ReceivedTimeの方は分かりそうでしょうか?
ekTJ

2020/10/08 12:20

これじゃないですが、参考にしました!ReceivedTimeの件はいかがですか?
guest

回答1

0

ベストアンサー

下記コードで試したところ問題なく動作しました。

Python

1import win32com.client 2 3outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI") 4inbox = outlook.GetDefaultFolder(6) 5messages=inbox.Items 6 7for message in messages: 8 RT=message.ReceivedTime 9 print(RT) 10#2014-03-24 17:55:18+00:00 11#2014-03-24 16:43:38+00:00 12#2014-03-26 12:53:59+00:00 13#2014-04-02 15:35:10+00:00 14#2014-04-02 13:50:01+00:00

上記のコードでもエラーは発生するでしょうか?
VSCodeではなく他のPython環境であれば問題ないかもしれません。

投稿2020/10/08 12:22

meg_

総合スコア10580

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ekTJ

2020/10/08 12:32

ありがとうございます! 明日再トライしてみます! ちなみにJupyter Notebookでもダメだったので、不安です…
meg_

2020/10/08 12:42

こちらは、Windows8 + outlook2013 + jupyter notebook で問題なかったです。
ekTJ

2020/10/08 23:53

meg様のコードを試したのですが、半分成功、半分失敗といった感じでした。 なぜか、7/9~8/27までのメールの受信日時が所々出力され、最後には File "C:\Usersi\Anaconda3\lib\site-packages\win32com\client\dynamic.py", line 527, in __getattr__ raise AttributeError("%s.%s" % (self._username_, attr)) AttributeError: <unknown>.ReceivedTime でエラーになってしまいました。
meg_

2020/10/09 00:37

推測ですがメールデータに問題があるかもしれませんね。他のフォルダで試してもエラー出ますか?
ekTJ

2020/10/09 00:47

試しに(5)の送信トレイで実行したら上手くいきました。ということはご指摘通りメールデータにエラーでしょうか。
meg_

2020/10/09 00:49

そんな気がしますね。 ところで質問者さんがやりたいこととして、メールの受信日の情報は必須なのですか?
ekTJ

2020/10/09 00:55

すみません、受信日は必須項目なのです。メールの受信に関するエラーを調べてみたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問