سؤال

لقد كتبت Applescript بسيطة يحلق إلى أجل غير مسمى داخل صندوق الوارد الوارد للوفاء وتحصل على مواضيع من الرسائل "غير المقروءة":

tell application "Microsoft Entourage"
activate

repeat with eachMsg in messages of folder named "Inbox"
    if read status of eachMsg is untouched then
        set messageSubject to subject of eachMsg as string

        -- bla bla bla

        -- How to delete the message and proceed with the next one???
    end if

end repeat

الآن ، المشكلة هي ، أريد حذف الرسائل بعد الحصول على الموضوع. كيف يمكنني أن أفعل هذا؟ هل يمكن أن تكتب لي مثالا من فضلك؟

شكرًا لك مرة أخرى!

هل كانت مفيدة؟

المحلول

بمجرد حذف رسالة ، قمت بتغيير طول قائمة الرسائل ، لذلك في مرحلة ما ، ستصادف فهرسًا لم يعد موجودًا لأنك حذفت رسائل كافية. للتغلب على هذا ، يجب عليك (بشكل أساسي) رمز الصلب الحلقة ؛ احصل على عدد الرسائل ، وابدأ من الرسالة الأخيرة وانتقل من هناك. على الرغم من أنك قمت بحذف رسالة ، إلا أن الفهارس الموجودة فوق الرسالة الحالية ستكون سليمة دائمًا. لم يتم اختباره ولكنه نمط استخدمته في مكان آخر ...

tell application "Microsoft Entourage"
activate
set lastMessage to count messages of folder named "Inbox"
repeat with eachMsg from lastMessage to 1 by -1
    set theMsg to message eachMsg of folder named "Inbox"
    if read status of theMsg is untouched then
        set messageSubject to subject of theMsg as string

        -- bla bla bla

        -- How to delete the message and proceed with the next one???
    end if

end repeat

بناء جملة "الراحة" لـ Applescript في بعض الأحيان ، ولهذا السبب عادةً ما أتجنبها تمامًا.

نصائح أخرى

فيما يلي مقتطف من مثال على صفحة مساعدة Entourage من Microsoft (وتحديداً البرنامج النصي "رسائل Nuke"):

repeat with theMsg in theMsgs
    delete theMsg -- puts in Deleted Items folder
    delete theMsg -- deletes completely
end repeat 
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top