VBScript - проверьте, жизнеспособен ли mailItem

У меня возникла проблема с одним из моих скриптов. Сценарий автоматизирует наш общий почтовый ящик (внешний вид). Он автоматически назначает письма правильному человеку.

Каждый раз, когда скрипт запускается, он зацикливает все письма в папке и проверяет, есть ли у них категория. Если нет, он назначает его правильному пользователю. Проблема в том, что когда почта без категории перетаскивается в другую папку во время работы скрипта, он выдает ошибку при попытке выполнить mail.Categories

Строка: 222 Ошибка: Не удалось завершить операцию из-за ошибки 8004010f.

Есть ли способ проверить, жизнеспособен ли mailItem?

Я пытался использовать IsEmpty, но msgbox не срабатывает.

Set outlook = CreateObject("Outlook.Application")
Set namespace = outlook.GetNameSpace("MAPI")

Set Account = namespace.Folders("accountName")
Set Inbox = argentaAccount.Folders("Inbox")

For Each mail in Inbox.Items

    If IsEmpty(mail) Then
        MsgBox("test")
    End If

    'check if item has a category'
    If mail.Categories <> "" Then
        'has a category'
    Else
        'Execute mailhandling code'
    End If
Next

Если у кого-то есть какое-то решение, я был бы вечно благодарен.


person Hunyadi Kevin    schedule 13.10.2017    source источник


Ответы (1)


С этой строкой в ​​качестве подсказки:

If IsEmpty(mail) Then

VBScript может работать так же, как VBA, где For Each работает следующим образом:

For i = 1 to Inbox.Items.Count

Когда элемент 1 перемещается (или удаляется), элемент 2 перемещается в позицию 1. В следующем цикле обрабатывается позиция 2 с элементом 3. Каждый второй пункт пропускается. Во второй половине цикла обрабатывать нечего.

Один из способов справиться с этим в VBA — выполнить действия в обратном порядке:

For i = Inbox.Items.Count to 1 step -1
    Set mail = Inbox.Items(i)
    If mail.Categories <> ""
person niton    schedule 19.10.2017