Использование JScript в AEE
Настройка программы JScript выполняется на закладке "JScript" при создании нового проекта.
Введение в JScript
JScript - мощный язык программирования, поддерживающий автоматизацию COM/ActiveX. Из программы JScript вы можете взаимодействовать с документами MS Excel, базами данных MS Access и другими современными приложениям, поддерживающими технологию COM/ActiveX. Узнать больше о языке, ознакомиться с примерами и загрузить документацию по языку можно на сайте Microsoft.
В AEE программа на JScript применяется для "одобрения" адреса электронной почты. Если адрес удовлетворяет прочим ограничениям, задаваемым в настройках AEE, то программа на JScript говорит последнее решающее слово - добавлять адрес в список найденных или нет. Для принятия решения она может использовать, к примеру, проверку адреса через Advanced Maillist Verify, сравнивать почтовый ящик и/или домен адреса со списком нужных ящиков/доменов заданных непосредственно в самой программе или во внешнем источнике (например, в документе MS Excel).
Объекты JScript
Advanced Email Extractor расширяет пространство имен JScript объектом с именем emex3, содержащим следующие свойства и методы:
Название | Тип | Описание |
DataField | Возвращает результат по запрашиваемому полю. Например для закладки Email, запрос emex3.DataField(0) вернет емейл адрес. | |
URL | Возвращает URL обрабатываемого документа | |
Document | Возвращает содержимое обрабатываемого документа | |
URLDomain | Возвращает домен обрабатываемого документа | |
URLDocument | Возвращает имя обрабатываемого документа | |
GetEmailDomain | Возвращает домен указанного емейла. Например var x = emex3.GetEmailDomain("user@mail.cc"); вернет mail.cc | |
GetEmailUser | Возвращает имя пользователя от указанного емейла. Например var x = emex3.GetEmailUser("user@mail.cc"); вернет user | |
AddDomainToIgnoreList | Добавить домен в список игнорируемых доменов. Аргумент может быть как URL, так и имя домена. Например emex3.AddDomainToIgnoreList("wikipedia.org"); | |
StopProcessCurrentDomain | Добавить домен обрабатываемого документа в список игнорируемых | |
Stop | Остановить исполнение проекта. | |
Pause | Пауза | |
Start | Продолжить исполнение проекта | |
Approve | Если этот метод не будет вызван во время работы скрипта, то адрес электронной почты не будет "одобрен" и не будет добавлен в список найденных адресов. |
Ограничения
Обратите внимание, что программа на JScript выполняется для каждого нового найденного адреса. Если Ваша программа будет, помимо прочего, использовать "тяжелые" объекты ActiveX, то это может повлечь серьезные проблемы производительности, связанные как с большой нагрузкой на CPU, так и с нехваткой оперативной памяти. Так как найденные адреса обрабатываются последовательно в один поток, то использование медленных объектов и алгоритмов может сказаться на скорости сканирования.
Обратите внимание, что в незарегистрированной копии AEE не разрешается создание компонентов ActiveX из скрипта.
Примеры программ
Пример 1. Программа не позволяющая добавлять в список адреса с почтовыми ящиками postmaster, webmaster и info.
var vMailBox = emex3.GetEmailUser(emex3.DataField(0)); |
var re = "/spam/i"; |
mail.com aol.com email.com microsoft.com altavista.net |
В каждой строке файла должен быть указан один почтовый домен, не содержащий символов пробела и табуляции вокруг. С приведенным выше файлом данных, программа одобрит адреса test@mail.com, john@aol.com и т.д.
Код программы:
var fs, f, s, domain; fs = new ActiveXObject("Scripting.FileSystemObject"); f = fs.OpenTextFile("C:\\domains.txt", 1); domain = emex3.GetEmailDomain(emex3.DataField(0));; domain = domain.toLowerCase(); while (!f.AtEndOfStream) { s = f.ReadLine(); if (s == domain) { emex3.Approve(); break; } } f.Close(); |
var st, amv; amv = new ActiveXObject('AdvancedMaillistVerify.EmailVerifier'); if (amv) { amv.Email = emex3.DataField(0); do { st = amv.Status; amv.Sleep = 300; } while (st != 3); if (amv.Result == 0) { // Email is exist emex3.Approve(); } amv = ""; } |
var f = "D:\\list.xls"; var xl = new ActiveXObject("Excel.Application"); if(xl) { var wb = xl.Workbooks.Open(f); if(wb) { var ws = wb.Worksheets(1); var item = ws.Columns(1).Find(emex3.DataField(0)); if(!item) { var cnt = ws.Rows.Count; var idx = 1; while(idx < cnt) { if(ws.Cells(idx, 1).Value == null) break; idx++; } ws.Cells(idx, 1) = emex3.DataField(0); emex3.Approve(); } wb.Close(true); } } |