অ্যাপল স্ক্রিপ্ট প্রত্যাশার মতো চলছে না


0

নীচে একটি অ্যাপ্লাস্ক্রিপ্ট যা সর্বশেষতম ইমেলটির মূল অংশ গ্রহণ করা এবং এটি থেকে পাঠ্য বের করতে বোঝানো হয়েছে। আপনি দেখতে পাচ্ছেন ফলাফল নীচে প্রদর্শিত হবে। স্ক্রিপ্টটি আগে সঠিকভাবে চলছিল বলে এই ফলাফলটি প্রদর্শিত হবে। এখন তা হয় না।

নীচে একটি অ্যাপ্লাস্ক্রিপ্ট যা সর্বশেষতম ইমেলটির মূল অংশ গ্রহণ করা এবং এটি থেকে পাঠ্য বের করতে বোঝানো হয়েছে।  আপনি দেখতে পাচ্ছেন ফলাফল নীচে প্রদর্শিত হবে।  স্ক্রিপ্টটি আগে সঠিকভাবে চলছিল বলে এই ফলাফলটি প্রদর্শিত হবে।  এখন তা হয় না।

আমি পরে যে ইমেলটি প্রেরণ করেছি তাতে "#tech sxi" বার্তাটি রয়েছে তবে স্ক্রিপ্টটি এই ইমেলের জন্য সঠিক আউটপুট দেখাচ্ছে না। এটি একমাত্র নয়। প্রতিবার, আমি একটি নতুন মেল পাঠাচ্ছি এবং আবার স্ক্রিপ্টটি চালাচ্ছি, আমি একই সমস্যা পেয়েছি, ফলাফলটি কেবল পরিবর্তন হয় না।


আপনি অ্যাপসক্রিপ্ট এডিটর কোড চালনা করে আপনি কি একই ফলাফল পাবেন? সম্পাদকে আপনার কোডটি ভেঙে দেওয়ার চেষ্টা করুন এবং ফলাফল আপনি দেখুন। বিশেষত ফিরে আসা মেল বডি সামগ্রীটি পরীক্ষা করে দেখুন। বার্তাগুলি কি সরল পাঠ্য, এইচটিএমএল বা সমৃদ্ধ পাঠ্য?
ভিক

আপনি কি নিশ্চিত যে ইনবক্সের প্রথম বার্তাটি সবচেয়ে নতুন? আপনি বলছেন যে প্রতিবার আপনার স্ক্রিপ্টটি চালিত হওয়ার সময় একই ফলাফলটি পাওয়া যায় যা দেখায় প্রথম আইটেমটি রানের মধ্যে পরিবর্তন হয় না! tell application "Mail" to open (get first message of inbox)প্রথম বার্তাটি কোন বার্তাটি হতে পারে তা দেখতে আপনি একটি ব্যবহার করতে পারেন !
ShooTerKo

উত্তর:


1

একজন মন্তব্যকারীকে যেমন ইঙ্গিত দেওয়া হয়েছে, "ইনবক্সের প্রথম বার্তা পান" সম্ভবত আপনি যা প্রত্যাশা করছেন তা ফিরে পাবে না।

অ্যাপলস্ক্রিপ্ট ব্যবহার করে বার্তাগুলি পুনরুদ্ধার করার সময়, মেল আপনার মেলবক্স অ্যাকাউন্টগুলিকে বর্ণমালা অনুসারে বাছাই করে । প্রতিটি অ্যাকাউন্টের ইনবক্সের মধ্যে, বার্তাগুলি সর্বাধিক নতুনভাবে সাজানো হয়। আপনি মেলটিতে যা নির্বাচন করেছেন সেটি অ্যাপলস্ক্রিপ্টে ফিরে আসে এমন ক্রম পরিবর্তন করে না।

সুতরাং আপনার যদি এই অ্যাকাউন্টে নিম্নলিখিত অ্যাকাউন্ট এবং ইনবক্স বার্তাগুলি মেলে প্রদর্শিত হয়:

  • আমার আইক্লাউড
    • বার্তা 1/5/16 তারিখ
    • বার্তা 1/10/16 তারিখ
  • আমার জিমেইল
    • বার্তা 1/10/16 তারিখ
    • বার্তা 1/5/16 তারিখ

"ইনবক্সের প্রথম বার্তা পান" "আমার জিমেইল" অ্যাকাউন্ট থেকে 1/5/16 তারিখের বার্তাটি ফিরিয়ে দেবে (জি আমার আগে আসে, 1/5/16 1/10/16 এর আগে আসে)।

আমার ধারণা মেল এ আপনার একাধিক অ্যাকাউন্ট রয়েছে।

  • নির্দিষ্ট মেলবক্সের নাম দিন। এটি সর্বদা "আমার Gmail" এর সর্বশেষতম বার্তায় ম্যাসেজটি সেট করবে। (অ্যাকাউন্টের নামটি একই নাম যা আপনি মেলটিতে ইনবক্সের নীচে তালিকায় দেখতে পান)।

    set theMessage to first message in mailbox "INBOX" of account "My Gmail"

এটি মেল চলন্ত হিসাবে একটি অস্বাভাবিক পদ্ধতি, সুতরাং আপনার মেলবক্সে প্রথম বার্তাটি অপ্রত্যাশিতভাবে আপনার দ্বিতীয় বার্তা হয়ে উঠতে পারে।

বার্তাগুলি থেকে ডেটা আহরণের বেশ কয়েকটি নির্ভরযোগ্য উপায় এখানে রয়েছে:

  • নির্বাচিত বার্তাগুলি ব্যবহার করুন (মেল এ ক্লিক করে আপনি নির্বাচিত বার্তা ):

    tell application "Mail"
        set theMessages to selection
    
        -- This block extracts the topics from the messages
        repeat with theMessage in theMessages
            set theMessageText to content of theMessage
            try
                -- Set topic to the string starting just after the hash
                set topic to rich text ((offset of "#" in theMessageText) + 1) thru end of theMessageText
                -- Truncate the topic at the first space
                set topic to rich text 1 thru ((offset of " " in topic) - 1) of topic
            on error
                -- No topic found in message
                set topic to ""
            end try
            log topic
    
        end repeat
    end tell
  • মেল বিধি (নির্দিষ্ট মানদণ্ডের সাথে মেলে এমন বার্তাগুলিতে স্ক্রিপ্ট চালান)। মেল এ, পছন্দসমূহ> বিধি খুলুন। ক্রিয়া হিসাবে "অ্যাপলস্ক্রিপ্ট রান করুন" দিয়ে একটি নতুন নিয়ম তৈরি করুন। মেনু থেকে "অনুসন্ধানে ওপেন করুন" নির্বাচন করুন যা আপনাকে কোন স্ক্রিপ্টটি চালাতে হবে তা নির্বাচন করতে দেয়। স্ক্রিপ্ট সম্পাদক খুলুন এবং মেল খোলা ফোল্ডারে স্ক্রিপ্ট হিসাবে নীচের কোডটি সংরক্ষণ করুন। মেল এ ফিরে, চালিত স্ক্রিপ্ট হিসাবে আপনার সংরক্ষিত স্ক্রিপ্টটি নির্বাচন করুন:

    using terms from application "Mail"
        on perform mail action with messages theMessages for rule thisRule
            -- This block extracts the topics from the messages
            repeat with theMessage in theMessages
                set theMessageText to content of theMessage
                try
                    -- Set topic to the string starting just after the hash
                    set topic to rich text ((offset of "#" in theMessageText) + 1) thru end of theMessageText
                    -- Truncate the topic at the first space
                    set topic to rich text 1 thru ((offset of " " in topic) - 1) of topic
                on error
                    -- No topic found in message
                    set topic to ""
                end try
                log topic
            end repeat
    
        end perform mail action with messages
    end using terms from
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.