Подсчет писем в Outlook с помощью Autohotkey

Я попытался написать сценарий, который считает электронные письма в определенной общедоступной папке обмена в Outlook. Если в подпапке 2 есть письма, должно открыться окно сообщений и сообщать мне, сколько там писем. Я пробовал это, но это не сработало.

    Outlook := ComObjActive("Outlook.Application")
    mail = (Outlook.Application.ActiveExplorer().Session.GetDefaultFolder(18).Folders("Subfolder\Subfolder2")
    if (mail.Items.Count>0)
    {
    msgbox % mail.Items.Count "Mails in folder"
    }
    else
    {
    msgbox No Mails.
    }

Есть ли у кого-нибудь идеи, как мне изменить скрипт, чтобы он работал?


person PHS    schedule 12.11.2018    source источник
comment
Что значит не сработало? Вы получили ошибку?   -  person Dmitry Streblechenko    schedule 13.11.2018
comment
Он не считает почту в нужной мне папке. Скрипт работает, ошибок нет. Просто не так, я хочу, чтобы это работало.   -  person PHS    schedule 14.11.2018
comment
и запускается только инструкция else   -  person PHS    schedule 14.11.2018


Ответы (3)


Пожалуйста, попробуйте использовать это:

mail: = Outlook.ActiveExplorer (). Session.GetDefaultFolder (18) .Folders ("Подпапка \ Подпапка2")

person aifritz    schedule 14.11.2018
comment
к сожалению, это не сработало. Остальное до сих пор получаю, хотя в папке есть письма. - person PHS; 14.11.2018

Вы должны извлекать подпапки по одной за раз, вы не можете указать путь. Измените строку

 mail = (Outlook.Application.ActiveExplorer().Session.GetDefaultFolder(18).Folders("Subfolder\Subfolder2")

to

 mail = (Outlook.Application.ActiveExplorer().Session.GetDefaultFolder(18).Folders("Subfolder").Folders("Subfolder2")
person Dmitry Streblechenko    schedule 14.11.2018
comment
Я все еще получаю сообщение об отсутствии почты ... Я даже не знаю, к какой папке обращается скрипт - person PHS; 15.11.2018
comment
Что возвращает mail.Name? - person Dmitry Streblechenko; 15.11.2018
comment
пустой почтовый ящик - person PHS; 16.11.2018
comment
Это, вероятно, означало бы, что почтовая переменная равна нулю. Я не знаю, как / если autohotkey обрабатывает исключения COM, но, видимо, вы неправильно обращаетесь к этой папке. - person Dmitry Streblechenko; 16.11.2018

Я понял. Я просто удалил переменную.

 Outlook := ComObjActive("Outlook.Application")
    if (Outlook.Application.ActiveExplorer().Session.GetDefaultFolder(18).Folders("Subfolder").Folders("Subfolder2").Items.Count>0)
    {
    msgbox % Outlook.Application.ActiveExplorer().Session.GetDefaultFolder(18).Folders("Subfolder").Folders("Subfolder2").Items.Count "Mails in folder"
    }
    else
    {
    msgbox No Mails.
    }

Спасибо за помощь: D

person PHS    schedule 21.11.2018