Varolan bir AppleScript dosyasını hizmet olarak nasıl çalıştırabilirim?


11

Bir AppleScript yaptım, sabit sürücümdeki belirli bir klasöre dosya olarak kaydettim. Şimdi ona bir kısayol atamak istiyorum ve Automator aracılığıyla bir Hizmet yapmak zorunda gibi görünüyor, ama Run AppleScriptzaten mevcut .scpt dosyasını yürütmek istiyorum iken, kodu içine koymak istiyorum. Bu nasıl yapılır?

Yanıtlar:


9

Evet, Automator burada en iyi seçenektir. Hizmeti oluşturmak için şu adımları izleyin:

  1. Automator'ı açın ve Hizmet'i seçin:

    resim açıklamasını buraya girin

  2. 'Applecript' ifadesini arayın ve işlemi sağ bölmeye sürükleyin:

    resim açıklamasını buraya girin

  3. Değişim Service receives selected textiçin Service receives no inputbu yüzden her zaman Servisler menüde görünen:

    resim açıklamasını buraya girin

  4. Şununla değiştir (* Your script goes here *):

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

    mevcut .scptdosyanızı yürütmek istiyorsanız . Ossascript'in bir iletişim penceresi görüntüleme gibi kullanıcı etkileşimini işleyemeyeceğini unutmayın :

    resim açıklamasını buraya girin

    Bu sınırlamanın üstesinden gelmek için ya bu geçici çözümü kullanın ya da sadece (* Your script goes here *)betiğinizin içeriğiyle değiştirin .

  5. Kaydet:

    resim açıklamasını buraya girin

  6. İsterseniz, yeni hizmetinize bir kısayol atayabilirsiniz. Finder'da (veya herhangi bir açık uygulamada) Hizmetler> Hizmet Tercihleri'ni seçin:

    resim açıklamasını buraya girin

  7. Çok yaygın olmayan bir kısayol atayın:

    resim açıklamasını buraya girin

  8. Artık hizmetinize önceki adımda atadığınız kısayol üzerinden herhangi bir uygulamadan erişilebilir:

    resim açıklamasını buraya girin

Hizmetten kurtulmak isterseniz, hizmeti ~/Library/Servicessilin ve çöp kutusunu boşaltın:

resim açıklamasını buraya girin


Varolan komut dosyasını Automator'a tekrar yazmak istemediğimi söyledim.
Nakilon

Kopyala / yapıştır işleminin iyi olacağını düşündüm, ancak evet, haklısın, sorunuzda açıkça belirtiliyor. osascriptDiğer cevaplarda açıklandığı gibi kullanın .
jaume

@Nakilon Dosyanızı osascriptçalıştırmak için Automator'da nasıl kullanılacağını ekledim .scpt, bir sınırlama ve iki geçici çözüm.
jaume

Sadece yaptım. İşe yaradı; ancak komut dosyasının başlatılması 4 ila 5 saniye sürer. (Kod doğrudan iş akışına kaydedildiğinde, hemen derhal başlatıldı.) Buna neyin sebep olduğu veya nasıl daha hızlı başlatılacağına dair herhangi bir fikir?
Zack

1
@Zack Teşekkürler, osascriptbetiğinizi çalıştırmak için neden 4 saniyeye daha ihtiyaç duyduğumu bilmiyorum , ancak Automator gecikmenin nedeni değil, bu benim endişemdi. Hata ayıklamak isteyebilirsiniz osascript, bkz opensourcehacker.com/2011/12/02/... ve stackoverflow.com/questions/31045575/...
jaume

4

Komut dosyasına bir on runbağımsız değişken ekleyin :

on run
    -- do whatever the script does
end run

Sonra Automator "Kabuk Betiğini Çalıştır" eylemini şu osascriptkomutla kullanabilirsiniz:

osascript /path/to/script.scpt

osascriptAppleScript'i kabukta yürüten bir komuttur. Komut dosyasının AppleScript düzenleyicisinin dışında yürütülmesine izin vermek için komut dosyasındaki satırlara ihtiyacınız vardır.


1
Açık bir çalıştırma işleyicisi eklemenize gerek yoktur. Tüm komut dosyalarında örtük bir çalıştırma işleyicisi vardır. Automator'ın Run AppleScript eyleminin açık bir çalışma işleyici içermesinin nedeni, Automator özel on run {input, arguments}formu kullanması olabilir , ancak Automator'da bile çalışma işleyicisini kaldırabilirsiniz.
Lri

1
@ ͏͏͏ Bu pingin sana ulaşıp ulaşmadığını merak ediyorum. Reklam öğesi adı seçiminde şeref.
bmike

3

Belki de "herhangi bir komut dosyasından Mac OS X hizmetleri oluşturmanıza" olanak sağlayan Bu Hizmete bir göz atmak istersiniz .


1
Burada bir bağlantı yerine bir cevap verebilir misiniz
user151019

2

Komut dosyalarına kısayol atamak için Automator hizmetleri oluşturmanızı önermem. 10.7 ve 10.8'de, Automator hizmetleri için klavye kısayollarının, menü çubuğundan hizmetler menüsünün üzerine gelinceye kadar her zaman çalışmadığı bir hata var. Ayrıca hizmetler yürütülmeden önce nispeten uzun (belki 0.1 ila 1 sn) bir gecikme vardır.

Komut dosyalarına klavye kısayolları atamanın diğer yolları için bu yanıta bakın . FastScripts ve Alfred'i kendim kullanıyorum.


Bu havada asılı kalma ihtiyacını hiç yaşamadım mı? ne hakkında daha fazla ayrıntı var?
markhunte

1
Tüm OS X kurulumlarını veya tüm hizmetleri etkileyip etkilemediğinden emin değilim, ancak farklı kurulumlarda birçok kez karşılaştım ve burada ve Süper Kullanıcı'daki diğer kişiler tarafından bahsetti. Bazen tüm Automator servisleri için klavye kısayolları çalışmayı durdurur (veya basarsanız hiçbir şey olmaz), ancak menü çubuğundan hizmetler menüsünün üzerine gelirseniz veya örneğin fare ile bir hizmet seçerseniz tekrar çalışmaya başlarlar.
Lri

2

Varolan komut dosyasını böyle basit bir otomatik hizmet ile ÇALIŞTIRABİLİRSİNİZ. Kısayolunuzu klavye kısayollarının içinden normal şekilde atayın. Kısayolları almadan önce bazı uygulamaların yeniden başlatılması gerekebileceğini unutmayın.

misal.

sayHello betiği:

say "hello"

Otomator servisi: resim açıklamasını buraya girin

Bu örnekte kullanılanlar:

  • Giriş yok
  • Herhangi bir uygulama.

Eylem bir Run Shell Scriptidir Kod sadece unix komut osascript ve dosyanın yolunu kullanır. Geçiş girişi olabilir stdn için ya da argümanı

Bu senaryoya özel bir şey yapılması gerekmiyor.

Osascript komutu hakkında daha fazla bilgi için man sayfalarına bakınız . Man sayfası, betiğe argümanlar aktarabileceğiniz başka bir örnek verir.


0

Bir Hizmet geliştirmek için, aşağıdakilerden biri gibi bir Hizmet oluşturacak bir çeşit yazılıma ihtiyacınız vardır:

  1. Bir .workflow oluşturmak için Automator
  2. Bir .service oluşturmak için ThisService
  3. Bir .app oluşturmak için Xcode

Yukarıdaki hizmetlerin tümü paketlerdir. Bunların tümü, bir Hizmetin niteliklerini belirten bir plist içeren klasörlerdir.

Varolan bir .script'i çağırmak için "AppleScript Çalıştır" Otomatikleştirici eylemini kullanan Automator kullanarak bir Hizmet'i nasıl oluşturduğum aşağıda açıklanmıştır.

Mevcut Bir AppleScript'i Çağıran Automator Hizmeti

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.