समय-समय पर AppleScript स्क्रिप्ट को आग लगाने के लिए लॉन्चर का उपयोग करें


1

मैंने एक AppleScript लिखा है जो मुझे किसी विशेष फ़ाइल का बैकअप लेने देता है। स्क्रिप्ट AppleScript संपादक के अंदर ठीक चलता है: यह वही करता है जो इसे पूरी तरह से करना चाहिए। अब तक सब ठीक है।

अब मैं इस स्क्रिप्ट को समयबद्ध अंतराल पर चलाना चाहूंगा। इसलिए मैं इसे बनाने के लिए लॉन्चर और .plist का उपयोग करता हूं। यहीं से मुसीबत शुरू होती है।

  • लिपि को लॉन्च अंतराल द्वारा सेट अंतराल पर लोड किया जाता है
  • AppleScript एडिटर (जब खुला) अपनी विंडो (उस स्क्रिप्ट के साथ) अग्रभूमि पर लाता है, लेकिन कोई कोड निष्पादित नहीं होता है
  • जब AppleScript संपादक नहीं चल रहा है, तो कुछ भी नहीं हो रहा है

कोई विचार क्यों यह काम नहीं कर रहा है?

-

संपादन के बाद (डैनियल बेक के सुझावों के अनुसार) मेरी पलक अब इस तरह दिखती है:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>KeepAlive</key>
<false/>
<key>Label</key>
<string>com.opera.autosave</string>
<key>ProgramArguments</key>
<array>
<string>osascript</string>
<string>/Users/user_name/Library/Scripts/opera_autosave_bak.scpt</string>
</array>
<key>StartInterval</key>
<integer>30</integer>
</dict>
</plist>

और AppleScript मैं चलाने की कोशिश कर रहा हूँ:

on appIsRunning(appName)
    tell application "System Events" to (name of processes) contains appName
end appIsRunning

--only run this script when Opera is running
if appIsRunning("Opera") then
    set base_path to "user_name:Library:Preferences:Opera Preferences:sessions:"
    set autosave_file to "test.txt"
    set autosave_file_old to "test_old.txt"
    set autosave_file_older to "test_older.txt"
    set autosave_file_oldest to "test_oldest.txt"
    set autosave_path to base_path & autosave_file
    set autosave_path_old to base_path & autosave_file_old
    set autosave_path_older to base_path & autosave_file_older
    set autosave_path_oldest to base_path & autosave_file_oldest
    set copied_file to "test copy.txt"
    set copied_path to base_path & copied_file

    tell application "Finder"
        duplicate file autosave_path
        delete file autosave_path_oldest
        set name of file autosave_path_older to autosave_file_oldest
        set name of file autosave_path_old to autosave_file_older
        set name of file copied_path to autosave_file_old
    end tell

end if

क्या आपको नहीं लगता कि आपकी लॉन्च plistकी गई सामग्री को पोस्ट करना उपयोगी होगा ?
डैनियल बेक

जवाबों:


1

AppleScript एडिटर में एप्लिकेशन के रूप में स्क्रिप्ट को सहेजें ( फ़ाइल »इस रूप में सहेजें ... ), या तर्क के रूप में स्क्रिप्ट फ़ाइल के साथ (AppleScript निष्पादित करने का टर्मिनल तरीका) plistखोलने के लिए अपने लॉन्च में कॉल बदलें osascript


आपके त्वरित उत्तर डैनियल के लिए बहुत बहुत धन्यवाद। आपके सुझावों ने चाल चली। यह पता चला है कि उस कोड के लिए अधिक है जो मैंने चलाने की कोशिश की: इसमें "यदि फ़ाइल मौजूद है" कथन शामिल हैं और जबकि AppleScript संपादक में ठीक था, तो यह ऑसस्क्रिप्ट के माध्यम से फायरिंग या एप्लिकेशन के रूप में चलने पर समस्याओं में चला गया। उस मुद्दे को हल करना अच्छा होगा, लेकिन यह अभी "केक पर टुकड़े करना" पसंद है। FYI करें, स्क्रिप्ट का अर्थ है OS X पर ओपेरा सत्र का बैक अप लेना, यदि कोई गलती से कई सक्रिय टैब के साथ विंडो बंद कर देता है ...
डकैती

0

इससे प्रभावित होने लगता है:

यदि आप एक स्क्रिप्ट "हाथ से" चलाते हैं, तो AppleScript एडिटर से, ऑटोमेकर के भीतर से, या एक स्टैंडअलोन ऐप या ड्रॉपलेट के रूप में - यह जो भी करने के लिए स्क्रिप्टेड है, उसे करने में सक्षम होना चाहिए, जैसे कि यह आज भी हो सकता है। एक और तरीका रखो, तुम हमेशा के रूप में आप हमेशा की तरह स्क्रिप्ट को चलाने के लिए जारी रखने में सक्षम होना चाहिए।

आंतरिक अनुप्रयोग स्क्रिप्ट: कुछ एप्लिकेशन "आंतरिक" AppleScripts का उपयोग अपने स्वयं के कुछ कार्यों को संभालने के लिए करते हैं। (उदाहरण के लिए, BBEdit () इस तरह की स्क्रिप्ट का उपयोग करता है जब यह अपने कमांड-लाइन टूल्स को स्थापित करता है।) ऐसी स्क्रिप्ट ऐप में बनाई जाती हैं; आप उन्हें मेनू या अन्य जगहों पर कभी नहीं देख सकते हैं। इस तरह की सेल्फ रेफ़रेंशियल स्क्रिप्ट को काम करते रहना चाहिए क्योंकि उनके पास हमेशा होता है।

यदि, हालांकि, एक सैंडबॉक्स वाला ऐप किसी अन्य ऐप के साथ या आपके सिस्टम के अन्य हिस्सों के साथ बातचीत करने के लिए AppleScript का उपयोग करना चाहता है- एक मेनूबार ऐप जो कि iTunes को नियंत्रित करने के लिए AppleScripts का उपयोग करता है, कहते हैं- तब नए प्रतिबंध खेलने में आ जाएंगे। सैंडबॉक्स वाला ऐप आपके मैक पर किसी अन्य ऐप के साथ संवाद करने के लिए AppleScript का उपयोग नहीं कर सकता है, जब तक कि डेवलपर विशेष रूप से अनुरोध नहीं करता (और प्राप्त करता है) केवल ऐसा करने के लिए।

http://www.macworld.com/article/1165641/how_increased_mac_security_measures_will_impact_applescript.html

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.