2015-11-30 2 views
0

Хорошо, я создаю скрипт, который должен читать мою входящую почту для меня. И я застрял с одной вещью: как изменить флаг для сообщений, соответствующих моим критериям, потому что я проверяю непрочитанное сообщение в цикле, и если в настоящее время проверено соответствие сообщения, оно должно быть помечено. Это легко сделать с выбранным сообщением, но как помечать сообщение в цикле?Apple script: Изменить флаг для сообщения, которое соответствует критериям

Пожалуйста, смотрите мою попытку:

if (thisSubject contains projectName or thisSubject contains projectName1 or thisSubject contains projectName2 or thisSubject contains projectName3) then 
     --mark required messages with red flag 
     tell application "Mail" 
      #set currentMail to thisMail 
      set currentMail to selection 
      repeat with s in currentMail 
       set flag index of s to 1 as integer 
      end repeat 

     end tell 

Обновлено: Вот цикл, который должен пометить все соответствующие письма с флагом

repeat with thisMail from 1 to count of theSubjects 
set thisSubject to item thisMail of theSubjects 
if (thisSubject contains searchWord or thisSubject contains searchWord2) then 
    if (thisSubject contains projectName or thisSubject contains projectName1 or thisSubject contains projectName2 or thisSubject contains projectName3) then 
     --mark required messages with flag 
     tell application "Mail" 
      # set allMessage to selection 
      repeat with MyMessage in thisMail 
       # set read status of thisMail to true -- set read 
       set flagged status of MyMessage to true -- display flag/false hide flag 
       set flag index of MyMessage to 1 -- set first color for the flag (-1 remove the flag) 
      end repeat 
     end tell 
    end if 
end if 

конец повтора

ответ

0

Индекс флаг определяет цвет флаг. Чтобы сделать флаг активным или нет, вы должны использовать статус с флагом.

Вот пример с флагом чтения и флаги включения/выключения и цвета

set projectName1 to "test1" 
set projectName2 to "test2" 
set projectName3 to "test3" 
set SearchWord1 to "Myword1" 
set SearchWord2 to "Myword2" 

tell application "Mail" 
set allMessage to every message of inbox whose (subject contains projectName1) or (subject contains projectName2) or (subject contains projectName3) or (subject contains SearchWord1) or (subject contains SearchWord2) 
repeat with MyMessage in allMessage 
    set read status of MyMessage to true -- set read 
    set flagged status of MyMessage to true -- display flag/false hide flag 
    set flag index of MyMessage to 1 -- set first color for the flag (-1 remove the flag) 
end repeat 
end tell 
+0

да, спасибо. Но моя проблема не во флагом, проблема в том, что я не могу добавить этот флаг к почте, которая теперь выполняется внутри цикла (цикла) и соответствует некоторым критериям. У меня получилась эта ошибка: 'error " Mail получил сообщение об ошибке: Невозможно сделать 1 в спецификаторе типа. " номер -1700 от 1 до спецификатора –

+0

удалите «как целое», а затем у вас есть тот же код, что и мой ... который работает. – pbell

+0

Да, он работает, но внутри цикла он применяется только к выбранной в настоящий момент почте, но не к одному из соответствующих критериев. Пожалуйста, см. Вторую часть кода в описании вопроса. –

Смежные вопросы