एक मौजूदा AppleScript फ़ाइल को एक सेवा के रूप में काम करने के लिए कैसे करें?


11

मैंने एक AppleScript बनाया, इसे मेरी हार्ड ड्राइव पर एक विशिष्ट फ़ोल्डर में एक फ़ाइल के रूप में सहेजा। अब मैं इसे एक शॉर्टकट असाइन करना चाहता हूं और ऐसा लगता है कि मुझे Run AppleScriptऑटोमेकर के माध्यम से एक सेवा करनी है, लेकिन मुझे कोड को अंदर डालने के लिए कहता है, जबकि मैं पहले से मौजूद .scpt फ़ाइल को निष्पादित करना चाहता हूं। उसको कैसे करे?

जवाबों:


9

हां, ऑटोमेकर यहां सबसे अच्छा विकल्प है। सेवा बनाने के लिए इन चरणों का पालन करें:

  1. ऑटोमेटर खोलें और सेवा का चयन करें:

    यहां छवि विवरण दर्ज करें

  2. 'एप्स्क्रिप्ट' खोजें और कार्रवाई को दाएँ फलक पर खींचें:

    यहां छवि विवरण दर्ज करें

  3. बदलें Service receives selected textकरने के लिए Service receives no inputइतना है कि यह हमेशा सेवा मेनू में प्रकट होता है:

    यहां छवि विवरण दर्ज करें

  4. इसके (* Your script goes here *)साथ बदलें :

    do shell script "/usr/bin/osascript /path/to/your/script.scpt"

    यदि आप अपनी मौजूदा .scptफ़ाइल निष्पादित करना चाहते हैं । नोट करें कि ऑस्क्रिप्‍ट उपयोगकर्ता बातचीत को संभाल नहीं सकता है जैसे कि संवाद विंडो प्रदर्शित करना:

    यहां छवि विवरण दर्ज करें

    इस सीमा को पार करने के लिए या तो इस वर्कअराउंड का उपयोग करें या बस (* Your script goes here *)अपनी स्क्रिप्ट की सामग्री के साथ बदलें ।

  5. बचाओ:

    यहां छवि विवरण दर्ज करें

  6. यदि आप चाहें, तो आप अपनी नई सेवा का शॉर्टकट असाइन कर सकते हैं। सेवा का चयन करें> खोजक में सेवा प्राथमिकताएं (या कोई भी खुला आवेदन):

    यहां छवि विवरण दर्ज करें

  7. एक समान सामान्य शार्टकट निर्दिष्ट करें:

    यहां छवि विवरण दर्ज करें

  8. अब आपकी सेवा किसी भी एप्लिकेशन से आपके द्वारा पिछले चरण में दिए गए शॉर्टकट के माध्यम से सुलभ है:

    यहां छवि विवरण दर्ज करें

यदि आप कभी भी सेवा से मुक्त होना चाहते हैं ~/Library/Services, तो सेवा को हटाएं और कचरा खाली करें:

यहां छवि विवरण दर्ज करें


मैंने कहा कि मैं मौजूदा स्क्रिप्ट फ़ाइल को निष्पादित करना चाहता हूं, न कि इसे फिर से ऑटोमेटर में लिखना।
नकीलोन

मैंने सोचा था कि कॉपी / पेस्ट ठीक होगा, लेकिन हाँ, आप सही हैं, यह आपके प्रश्न में स्पष्ट रूप से कहा गया है। osascriptअन्य उत्तरों में बताए अनुसार उपयोग करें ।
jaume

@Nakilon मैंने कहा है कि कैसे osascriptअपनी .scptफ़ाइल, एक सीमा और दो वर्कअराउंड को चलाने के लिए ऑटोमेटर में उपयोग करें ।
jaume

मैंने बस यही किया। इसने काम कर दिया; लेकिन, अब स्क्रिप्ट को लॉन्च करने में 4 से 5 सेकंड का समय लगता है। (जब कोड सीधे वर्कफ़्लो में सहेजा गया था, तो यह लगभग तुरंत लॉन्च हो गया।) किसी भी विचार से इसका क्या कारण होता है, या यह कैसे तेजी से लॉन्च करता है?
ज़ैक

1
@Zack धन्यवाद, मुझे नहीं पता कि osascriptआपकी स्क्रिप्ट को निष्पादित करने के लिए 4 अतिरिक्त सेकंड की आवश्यकता क्यों है , लेकिन ऑटोमेकर देरी का कारण नहीं है, जो मेरी चिंता थी। आप डिबग कर सकते हैं osascript, को देखने के opensourcehacker.com/2011/12/02/... और stackoverflow.com/questions/31045575/...
Jaume

4

स्क्रिप्ट में, एक on runतर्क जोड़ें :

on run
    -- do whatever the script does
end run

तब आप ऑटोमेटर "रन शैल स्क्रिप्ट" कार्रवाई का उपयोग कर सकते हैं, osascriptकमांड के साथ :

osascript /path/to/script.scpt

osascriptएक कमांड है जो शेल में AppleScript को निष्पादित करता है। आपको स्क्रिप्ट को AppleScript संपादक के बाहर निष्पादित करने की अनुमति देने के लिए स्क्रिप्ट में लाइनों की आवश्यकता होती है।


1
आपको एक स्पष्ट रन हैंडलर शामिल करने की आवश्यकता नहीं है। सभी स्क्रिप्ट में एक अंतर्निहित रन हैंडलर होता है। ऑटोमेकर के रन AppleScript एक्शन में एक स्पष्ट रन हैंडलर शामिल है इसका कारण यह हो सकता है क्योंकि ऑटोमेकर विशेष on run {input, arguments}रूप का उपयोग करता है , लेकिन यहां तक ​​कि ऑटोमेटर में आप केवल रन हैंडलर को हटा सकते हैं।
लरी

1
@ @ मैं सोच रहा हूं कि क्या यह पिंग आपके पास पहुंचेगा। रचनात्मक नाम चयन पर कुदोस।
bmike

3

शायद आप इस सेवा पर एक नज़र डालना चाहते हैं , जो आपको "किसी भी स्क्रिप्ट से मैक ओएस एक्स सेवाएं बनाने" की अनुमति देती है।


1
क्या आप केवल एक लिंक के बजाय यहाँ एक उत्तर प्रदान कर सकते हैं
user151019

2

मैं स्क्रिप्ट को शॉर्टकट असाइन करने के लिए ऑटोमेटर सेवाएं बनाने की सिफारिश नहीं करूंगा। 10.7 और 10.8 में एक बग है जहां ऑटोमेटर सेवाओं के लिए कीबोर्ड शॉर्टकट हमेशा काम नहीं करते हैं जब तक कि आप मेनू बार से सेवाओं के मेनू पर होवर नहीं करते हैं। सेवाओं को चलाने से पहले एक अपेक्षाकृत लंबा (शायद 0.1 से 1 एस) देरी भी है।

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


मैं इस hover करने की आवश्यकता का अनुभव नहीं है? क्या आपके पास इस बारे में अधिक जानकारी है कि आप किस बारे में बात कर रहे हैं
markhunte

1
मुझे यकीन नहीं है कि यह सभी ओएस एक्स इंस्टॉलेशन या सभी सेवाओं को प्रभावित करता है, लेकिन मैंने इसे कई बार अलग-अलग इंस्टॉलेशन में चलाया है, और इसका उल्लेख यहां के अन्य लोगों और सुपर यूजर ने किया है। कभी-कभी सभी ऑटोमेटर सेवाओं के लिए कीबोर्ड शॉर्टकट काम करना बंद कर देते हैं (या यदि आप उन्हें दबाते हैं तो कुछ भी नहीं होता है), लेकिन आप फिर से काम करना शुरू कर देते हैं यदि आप मेनू बार से सेवा मेनू पर होवर करते हैं, या उदाहरण के लिए आप माउस के साथ एक सेवा का चयन करते हैं।
Lri

2

आप मौजूदा स्क्रिप्ट को इस तरह एक साधारण ऑटोमेटर सेवा के साथ चला सकते हैं। और कीबोर्ड शार्ट कट के भीतर से अपने शॉर्टकट को सामान्य की तरह असाइन करें। याद रखें कि शॉर्टकट को चुनने से पहले कुछ अनुप्रयोगों को रिलॉन्च करना पड़ सकता है।

उदाहरण।

हाइलो स्क्रिप्ट:

say "hello"

स्वचालित सेवा: यहां छवि विवरण दर्ज करें

इस उदाहरण में कौन सा उपयोग करता है:

  • कोई निवेश नहीं
  • कोई भी आवेदन।

एक्शन एक रन शैल स्क्रिप्ट है कोड सिर्फ यूनिक्स कमांड ऑसस्क्रिप्ट और फाइल के लिए पथ का उपयोग करता है । पास इनपुट stdn या तर्क के लिए हो सकता है

यह स्क्रिप्ट के लिए कुछ खास करने की जरूरत नहीं है।

ऑसस्क्रिप्ट कमांड पर अधिक जानकारी के लिए इसके लिए मैन पेज देखें । मैन पेज एक और उदाहरण देता है जहां आप स्क्रिप्ट पर तर्क पारित कर सकते हैं।


0

किसी सेवा को विकसित करने के लिए, आपको कुछ प्रकार के सॉफ़्टवेयर की आवश्यकता होती है जो एक सेवा का निर्माण करेगा जैसे कि निम्न में से एक:

  1. ऑटोमेटर -वर्कफ्लो बनाने के लिए
  2. यह सेवा .service बनाने के लिए
  3. -App बनाने के लिए Xcode

उपरोक्त सभी प्रकार की सेवाएँ पैकेज हैं। वे सभी फ़ोल्डर हैं जिनमें एक प्लिस्ट होता है जो किसी सेवा की विशेषताओं को निर्दिष्ट करता है।

यहां बताया गया है कि मैंने ऑटोमेटर का उपयोग करके एक सेवा कैसे बनाई है जो किसी मौजूदा .script को कॉल करने के लिए "रन AppleScript" ऑटोमेटर कार्रवाई का उपयोग करता है।

स्वचालित सेवा जो एक मौजूदा AppleScript कॉल करता है

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