จะทำให้ไฟล์ AppleScript ที่มีอยู่ทำงานเป็นบริการได้อย่างไร


9

ฉันสร้าง AppleScript แล้วบันทึกเป็นไฟล์ในโฟลเดอร์เฉพาะบนฮาร์ดไดรฟ์ของฉัน ตอนนี้ฉันต้องการกำหนดทางลัดให้และดูเหมือนว่าฉันจะต้องให้บริการผ่าน Automator แต่Run AppleScriptขอให้ฉันใส่รหัสเข้าไปข้างในในขณะที่ฉันต้องการเรียกใช้ไฟล์. scpt ที่มีอยู่แล้ว ทำอย่างไร

คำตอบ:


7

ใช่ Automator เป็นตัวเลือกที่ดีที่สุดที่นี่ ในการสร้างบริการให้ทำตามขั้นตอนเหล่านี้:

  1. เปิด Automator และเลือกบริการ:

    ป้อนคำอธิบายรูปภาพที่นี่

  2. ค้นหา 'applescript' และลากการกระทำไปที่บานหน้าต่างด้านขวา:

    ป้อนคำอธิบายรูปภาพที่นี่

  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ไฟล์ที่มีอยู่ โปรดทราบว่าosascript ไม่สามารถจัดการการโต้ตอบของผู้ใช้เช่นการแสดงหน้าต่างโต้ตอบ:

    ป้อนคำอธิบายรูปภาพที่นี่

    หากต้องการเอาชนะข้อ จำกัด นี้ให้ใช้วิธีแก้ปัญหานี้หรือแทนที่(* Your script goes here *)ด้วยเนื้อหาของสคริปต์ของคุณ

  5. บันทึก:

    ป้อนคำอธิบายรูปภาพที่นี่

  6. หากคุณต้องการคุณสามารถกำหนดทางลัดให้กับบริการใหม่ของคุณ เลือกบริการ> การตั้งค่าบริการใน Finder (หรือแอปพลิเคชันที่เปิดอยู่):

    ป้อนคำอธิบายรูปภาพที่นี่

  7. กำหนด shorcut ที่ไม่ธรรมดาให้:

    ป้อนคำอธิบายรูปภาพที่นี่

  8. ขณะนี้บริการของคุณสามารถเข้าถึงได้จากแอปพลิเคชันใด ๆ ผ่านทางลัดที่คุณกำหนดไว้ในขั้นตอนก่อนหน้า:

    ป้อนคำอธิบายรูปภาพที่นี่

หากคุณต้องการกำจัดบริการที่เปิดอยู่~/Library/Servicesให้ลบบริการและล้างถังขยะ:

ป้อนคำอธิบายรูปภาพที่นี่


ฉันบอกว่าฉันต้องการรันไฟล์สคริปต์ที่มีอยู่ไม่ต้องเขียนมันอีกครั้งใน Automator
Nakilon

ฉันคิดว่าการคัดลอก / วางจะไม่เป็นไร แต่ใช่คุณพูดถูกในคำถามของคุณ ใช้osascriptตามที่อธิบายไว้ในคำตอบอื่น ๆ
jaume

@Nakilon ฉันได้เพิ่มวิธีใช้osascriptใน Automator เพื่อเรียกใช้.scptไฟล์ของคุณข้อ จำกัด และวิธีแก้ไขสองวิธี
Jaume

ฉันเพิ่งทำสิ่งนี้ มันได้ผล แต่ตอนนี้ใช้เวลา 4 ถึง 5 วินาทีในการเปิดสคริปต์ (เมื่อรหัสถูกบันทึกโดยตรงในเวิร์กโฟลว์มันจะเปิดตัวเกือบจะในทันที) ความคิดใด ๆ ที่ทำให้เกิดปัญหานี้หรือจะทำให้โค้ดทำงานเร็วขึ้นได้อย่างไร
แซค

1
@Zack ขอบคุณฉันไม่รู้ว่าทำไมosascriptต้องเพิ่มอีก 4 วินาทีในการเรียกใช้สคริปต์ของคุณ แต่ Automator ไม่ใช่สาเหตุของความล่าช้าซึ่งเป็นปัญหาของฉัน คุณอาจต้องการตรวจแก้จุดบกพร่องosascriptดูopensourcehacker.com/2011/12/02/…และstackoverflow.com/questions/31045575/…
jaume

4

ในสคริปต์เพิ่มon runอาร์กิวเมนต์:

on run
    -- do whatever the script does
end run

จากนั้นคุณสามารถใช้แอ็คชัน "Run Shell Script" Automator ด้วยosascriptคำสั่ง:

osascript /path/to/script.scpt

osascriptเป็นคำสั่งที่รัน AppleScript ในเชลล์ คุณต้องมีบรรทัดในสคริปต์เพื่อให้สคริปต์สามารถดำเนินการได้นอกตัวแก้ไข AppleScript


1
คุณไม่จำเป็นต้องรวมตัวจัดการการทำงานที่ชัดเจน สคริปต์ทั้งหมดมีตัวจัดการเรียกใช้โดยนัย สาเหตุที่แอคชั่น Run AppleScript ของ Automator รวมตัวจัดการ run อย่างชัดเจนอาจเป็นเพราะ Automator ใช้on run {input, arguments}รูปแบบพิเศษแต่แม้กระทั่งใน Automator คุณก็สามารถลบ run handler ได้
Lri

1
@ ͏͏͏ฉันสงสัยว่า ping นี้ส่งถึงคุณหรือเปล่า ความรุ่งโรจน์ในการเลือกชื่อโฆษณา
bmike

3

บางทีคุณอาจต้องการดูบริการนี้ซึ่งช่วยให้คุณ "สร้างบริการ Mac OS X จากสคริปต์ใด ๆ "


1
คุณสามารถให้คำตอบได้ที่นี่มากกว่าเพียงแค่ลิงก์
Mark

2

ฉันจะไม่แนะนำให้สร้างบริการอัตโนมัติเพื่อกำหนดทางลัดให้กับสคริปต์ มีข้อผิดพลาดใน 10.7 และ 10.8 ที่แป้นพิมพ์ลัดสำหรับบริการอัตโนมัติไม่ทำงานจนกว่าคุณจะเลื่อนเมาส์ไปที่เมนูบริการจากแถบเมนู นอกจากนี้ยังมีความล่าช้าค่อนข้างนาน (อาจจะ 0.1 ถึง 1 วินาที) ก่อนที่จะเรียกใช้บริการ

ดูคำตอบนี้สำหรับวิธีอื่นในการกำหนดแป้นพิมพ์ลัดให้กับสคริปต์ ฉันใช้ FastScripts และ Alfred ด้วยตัวเอง


ฉันไม่เคยประสบกับความต้องการในการวางเมาส์ไว้หรือไม่? คุณมีรายละเอียดเพิ่มเติมเกี่ยวกับสิ่งที่คุณกำลังพูดถึงหรือไม่
markhunte

1
ฉันไม่แน่ใจว่ามันจะส่งผลกระทบต่อการติดตั้ง OS X ทั้งหมดหรือบริการทั้งหมด แต่ฉันวิ่งเข้าไปหลายครั้งในการติดตั้งที่แตกต่างกันและมันได้กล่าวถึงโดยคนอื่น ๆ ที่นี่และที่ Super User ในบางครั้งแป้นพิมพ์ลัดสำหรับบริการ Automator ทั้งหมดจะหยุดทำงาน (หรือไม่มีอะไรเกิดขึ้นถ้าคุณกด) แต่ปุ่มเหล่านี้จะเริ่มทำงานอีกครั้งหากคุณเลื่อนเมาส์ไปที่เมนูบริการจากแถบเมนูหรือหากคุณเลือกตัวอย่างหนึ่งบริการด้วยเมาส์
Lri

1

คุณสามารถเรียกใช้สคริปต์ที่มีอยู่ด้วยบริการอัตโนมัติอย่างง่ายเช่นนี้ และกำหนดทางลัดของคุณจากภายในแป้นพิมพ์ลัดตามปกติ เพียงจำไว้ว่าบางแอปพลิเคชั่นอาจจำเป็นต้องเปิดใหม่ก่อนที่จะเลือกทางลัด

ตัวอย่าง.

sayHello สคริปต์:

say "hello"

บริการอัตโนมัติ: ป้อนคำอธิบายรูปภาพที่นี่

ซึ่งในตัวอย่างนี้ใช้:

  • ไม่มีอินพุต
  • แอปพลิเคชันใด ๆ

การดำเนินการเป็นสคริปต์เรียกใช้เชลล์ รหัสใช้เพียงคำสั่ง unix osascriptและพา ธ ไปยังไฟล์ การป้อนผ่านสามารถเป็นstdnหรืออาร์กิวเมนต์

ไม่จำเป็นต้องทำอะไรเป็นพิเศษกับสคริปต์

สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับคำสั่ง osascript ดูที่หน้า manของมัน หน้า man เป็นอีกตัวอย่างหนึ่งที่คุณสามารถส่งอาร์กิวเมนต์ไปยังสคริปต์ได้


0

ในการพัฒนาบริการคุณต้องมีซอฟต์แวร์บางประเภทซึ่งจะสร้างบริการเช่นหนึ่งในสิ่งต่อไปนี้:

  1. Automator เพื่อสร้าง. workflow
  2. บริการนี้เพื่อสร้าง. บริการ
  3. Xcode เพื่อสร้างแอป

บริการทั้งหมดที่กล่าวมาเป็นแพ็คเกจ นี่คือโฟลเดอร์ทั้งหมดที่มีการวางแผนที่ระบุคุณลักษณะของบริการ

นี่คือวิธีที่ฉันสร้างบริการโดยใช้ Automator ที่ใช้การดำเนินการอัตโนมัติ "Run AppleScript" เพื่อเรียก. script ที่มีอยู่

บริการอัตโนมัติที่เรียก AppleScript ที่มีอยู่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.