วิธีการเขียนบริการเพื่อรับสาย?


1

ฉันต้องการเขียนบริการบน macOS และส่งคืนสตริงเท่านั้นเช่นที่อยู่อีเมลของฉัน ดังนั้นในแอปพลิเคชันใด ๆ หากฉันต้องการที่อยู่อีเมลอินพุตฉันก็กดปุ่มลัดเดียวกัน

ฉันเขียนบริการใน automator และรัน shell script:

#!/usr/bin echo "my_name@domain.com"

แต่จะส่งเอาต์พุตข้อความไปที่ stdout แทนที่จะเป็นอินพุตแอ็พพลิเคชัน


ฉันเพิ่งเพิ่มอีกขั้นตอน "คัดลอกไปยังคลิปบอร์ด" และตอนนี้หลังจากที่ฉันเรียกใช้บริการนี้ในโปรแกรมประยุกต์ใด ๆ สตริงจะคัดลอกไปยังคลิปบอร์ดและฉันสามารถใช้ Ctrl + V เพื่อรับเนื้อหาโดยตรง แต่มันไม่ใช่วิธีที่ดีเพราะต้องใช้ทางลัดสองทาง: 1 run service, 2 ctrl + v มันยังไม่สะดวก
Sting Jia ที่

2
อาจใช้การแทนที่ข้อความแทนได้ง่ายกว่า (ในการตั้งค่าระบบ)
nohillside

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

@StingJia คุณต้องการให้วันที่และเวลาปัจจุบันมองออกเมื่อใด
wch1zpink

@ wch1zpink ฉันหมายถึงฉันอาจต้องใช้บริการที่กำหนดเองหลายรายการ ชอบ: Ctrl + Cmd + M เพื่อส่งออกที่อยู่อีเมลของฉัน, Ctrl + Cmd + D เพื่อแสดงเวลาปัจจุบัน (YYYY-MM-DD hh: mm: ss) จากนั้นเมื่อฉันแก้ไขสเปรดชีตใน Excel ฉันไม่ต้องการป้อนเนื้อหาเดียวกันเพียงแค่ใช้ทางลัด
Sting Jia ที่

คำตอบ:


1

คุณสามารถเพิ่มคำสั่ง "run applescript" ให้กับเวิร์กโฟลว์อัตโนมัติของคุณ

set the clipboard to "my_name@domain.com"
tell application "System Events"
    keystroke (the clipboard)
end tell

หรือ

tell application "System Events"
    keystroke "my_name@domain.com"
end tell

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

set AppleScript's text item delimiters to ","
set theLongDate to (current date)
set theLongDate to (date string of theLongDate)
set currentMonth to (word 1 of text item 2 of theLongDate)
set currentDay to (word 2 of text item 2 of theLongDate)
set currentYear to (word 1 of text item 3 of theLongDate)
set monthList to {January, February, March, April, May, June, July, August, September, October, November, December}
repeat with x from 1 to 12
    if currentMonth = ((item x of monthList) as string) then
        set theRequestNumber to (text -2 thru -1 of ("0" & x))
        exit repeat
    end if
end repeat
set currentMonth to theRequestNumber
set currentDay to (text -2 thru -1 of ("0" & currentDay))
set theShortDate to (currentMonth & "/" & currentDay & "/" & currentYear) as string
set CurrentTime to (time string of (current date))
set CurrentTimeandShortDate to (theShortDate & " @ " & CurrentTime)

set the clipboard to the result -- the result formatted like this 04/16/2017 @ 12:27:00 AM

-- If you only want to copy the time and date to your clip board without sending the keystrokes, Then comment out the next three lines

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