Я пишу vbs, который проверяет прилагаемый набор инициалов в теме письма на определенный день, а затем выводит отчет на основе результатов. У меня это работает, но это очень медленно. В папке, в которой выполняется поиск, содержится несколько тысяч электронных писем, поэтому, возможно, это просто так, но мне просто интересно, есть ли у кого-нибудь идеи относительно того, как ускорить это?Разбор большого почтового ящика Outlook с VBS
Ниже приведена часть кода, на которое выполняется время. Push
- это просто вспомогательная функция, которая помещает элемент в массив;
`For Each oItem In cItems
if TypeName(oItem) = "MailItem" then
dateTemp = Formatdatetime(oItem.ReceivedTime, 2)
If datevalue(dateTemp) = datevalue(requiredDate) Then
test = oItem.subject
if mid(test, 1, 1) = "[" AND mid(test, 4, 1) = "]" then
push subjectArray, test
end if
end if
end if
Next`
Ваш лучший выбор - это фильтрация сообщений на стороне сервера. Дайте этот снимок: https://msdn.microsoft.com/en-us/library/ms526895(v=exchg.10).aspx – Tomalak
Кроме того, для случая, когда 'subjectArray' является фактическим массивом и' push' является Sub, который включает в себя 'ReDim Preserve', вы должны переключиться на Scripting.Dictionary для хранения. Родные массивы в VBS являются расточительными, негибкими и не стоят хлопот, если они не являются постоянными по размеру. – Tomalak
@Tomalak Они также намного эффективнее * (особенно большие наборы данных) *, а затем использовать любую форму COM-объекта даже в 'Scripting.Dictionary'. Лично собственные массивы столь же гибкие, как и нужно, просто требуют планирования, как вы намереваетесь их использовать, прежде чем обнаружите, что вам не хватает. – Lankymart