Applescript จะไม่เรียกใช้คำสั่งทางลัด


0

ฉันมีเอกสาร TextEdit ที่ฉันเปิดบ่อย ๆ (ผ่านการกดแป้นพิมพ์ขอบคุณอัลเฟรด) มันมีการสะกดที่ไม่ได้มาตรฐานจำนวนมากดังนั้นฉันยกเลิกการเลือก "ตรวจสอบการสะกดขณะพิมพ์" (แม้ว่าฉันต้องการให้การตรวจสอบการสะกดเป็นค่าเริ่มต้นด้วยเอกสาร TextEdit อื่น ๆ ) โปรดทราบว่าฉันได้สร้างทางลัด "Command / Option / Control - S" (ใน Prefs / Keyboard / Shortcuts) เพื่อสลับคำสั่งนั้น

เมื่อต้องการบันทึกขั้นตอนฉันต้องการสร้าง applescript เพื่อเปิดเอกสารและทริกเกอร์คำสั่งนั้น แต่ฉันไม่สามารถทำงานได้

เอกสารจะเปิดขึ้น แต่ "ตรวจการสะกดขณะพิมพ์" จะไม่สลับ

tell application "Finder"
activate
open document file "reference.rtf" of folder "Documents" of folder "MYSTUFF" of folder "Users" of startup disk
end tell

tell application "TextEdit" to activate
tell application "System Events"
keystroke "s" using {command down, option down, control down}
end tell

==============

แก้ไข:

ฉันได้แทรก "ความล่าช้า" แต่นั่นไม่ได้ช่วย การสะกดคำจะถูกเน้น

เป็นไปได้หรือไม่ที่ Applescripts ด้วยเหตุผลบางอย่างไม่สามารถเรียกใช้ทางลัดที่กำหนดเองภายในแอปพลิเคชั่น

มีวิธีอื่นในการเรียกใช้คำสั่ง "ตรวจการสะกดขณะพิมพ์" หรือไม่ ดูเหมือนจะไม่เป็นหนึ่งในคำสั่งสคริปต์ของ TextEdit


ผลลัพธ์คืออะไร มันส่งเสียงบี๊บหรือมีข้อผิดพลาดหรือไม่? เพียงแค่คาดเดา แต่เป็นไปได้ไหมที่ TextEdit จะยังไม่ทำงานเมื่อกดแป้นพิมพ์? คุณสามารถลองแทรกบรรทัดdelay 1ระหว่างการเปิดใช้งานและการกดแป้นได้หรือไม่? (ทำให้เกิดความล่าช้า 1 วินาทีเพิ่ม / ลดจำนวนหากจำเป็น)
Arthur

ผลที่ได้คือเอกสารเปิด .... และเน้นข้อผิดพลาดการสะกดทั้งหมด แม้แต่การหน่วงเวลา 5 ก็ไม่ได้ช่วยอะไร
Jimmbo

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

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

คำตอบ:


1

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

ไม่ว่าจะเป็นจริงหรือไม่สคริปต์ต่อไปนี้ใช้งานได้ มันเลือกรายการเมนูมากกว่าที่จะเรียกมันผ่านทางลัด:

tell application "Finder"
activate
open document file "reference.rtf" of folder "Documents" of folder "MYSTUFF" of folder "Users" of startup disk
end tell
delay 1
activate application "TextEdit"
delay 1
tell application "System Events"
tell process "TextEdit"


click menu item "Check Spelling While Typing" of menu 1 of menu item "Spelling and Grammar" of menu 1 of menu bar item "Edit" of menu bar 1

end tell
end tell

และถอนหายใจหลังจากที่เปิดเอกสารทิ้งไว้สองสามนาทีฉันกลับมาแล้วและ .... ข้อผิดพลาดการสะกดถูกเน้นหลังจากทั้งหมด ใช้เวลาในการคาดคะเนไฮไลท์ที่คาดเดาไม่ได้ซึ่งอาจทำให้เกิดความสับสนในการตอบกลับ
Jimmbo

ฉันยังคงคิดว่ามันเป็นความคาดเดาไม่ได้ของสถานะเริ่มต้นของการสลับนั้น ฉันไม่คิดว่า Applescript สามารถทำได้if(toggle is off) {switch on}- 'เพราะนั่นจะเป็นการแก้ไข
Tetsujin

หรือบางทีก็สามารถ ... stackoverflow.com/questions/16504541/ … ฉันจะคิดเกี่ยวกับเรื่องนี้หลังจากกาแฟอีกสองถ้วย;)
Tetsujin

0

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


ฉันคิดว่า 'ล่าช้า' เป็นปัญหาจริงของคุณตามที่อาร์เธอร์กล่าวถึง แต่คุณสามารถฝึกฝนสคริปต์นั้นได้ถึง 3 บรรทัดแม้กระทั่งเพิ่มการหน่วงเวลา
ถ้าคุณกำลังเรียกใช้จาก HD แทนที่จะเป็น SSD คุณอาจต้องเพิ่มค่าการหน่วงเวลาเป็น 2 หรือ 3 เพียงเพื่อให้เวลาเอกสารในการเปิด & มาที่ด้านหน้า

tell application "Finder" to open file ((path to documents folder as text) & "reference.rtf")
delay 1
tell application "System Events" to keystroke "s" using {command down, option down, control down}

ฉันสมมติว่าผู้ใช้ / mystuff / เส้นทางเอกสารของคุณเป็นโฟลเดอร์ ~ / Documents ปกติที่มีการเปลี่ยนชื่อบัญชี เวอร์ชันใหม่ของฉันไม่พึ่งพาชื่อผู้ใช้ของคุณที่อยู่ในสคริปต์เพียงแค่จะใช้โฟลเดอร์ ~ / Documents ของผู้ใช้ปัจจุบัน


ตามความคิดเห็นของฉันข้างต้นความล่าช้าไม่ช่วย (และมันเป็น SSD) เอกสารเปิดขึ้น แต่มีการเน้นข้อผิดพลาดการสะกดคำ
Jimmbo

ฉันจะไม่โพสต์ไว้หากไม่ได้ผลสำหรับฉัน ;-) ฉันเดาแล้วค่าเริ่มต้นของคุณอยู่ตรงข้ามกับผลลัพธ์ที่คุณพยายามทำ เป็นไปได้อย่างสมบูรณ์ที่จะเปิดการตรวจการสะกดสำหรับเอกสารหนึ่ง & ปิดสำหรับเอกสารอื่น ตรวจสอบสิ่งที่แสดงว่าเป็นเมื่อมันถูกเปิดโดยไม่มีคำสั่งที่สำคัญในการเปลี่ยนแปลง ตรวจสอบด้วยว่าคุณสามารถเห็นคำสั่งเมนูที่กำลังเปิดใช้งานจริงหรือไม่เมนูแก้ไขควรสะบัดสีน้ำเงินสั้น ๆ
Tetsujin

ปรากฏว่า TextEdit ยังคงสถานะตรวจสอบตัวสะกดที่ Quit & หลังจากการเปิดตัวครั้งถัดไปเอกสารที่เปิดอยู่ทั้งหมดเริ่มต้นด้วยการตั้งค่านั้นจนกระทั่งตั้งค่าใหม่ที่ Quit ถัดไป ฉันรู้วิธีตรวจสอบสถานะ & เปลี่ยนเฉพาะเมื่อเปิดโดย Applescript
Tetsujin

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

ความพยายาม gasp ครั้งล่าสุด - นี่แสดงสวิตช์ toggleable ทั้งหมด - superuser.com/questions/367533/ … - แต่ไม่มีใครทำงานกับ TextEdit ถ้าตั้งเป็นค่าเริ่มต้นอ่าน / เขียนใน Terminal ผมทดสอบ ต้องการใครสักคนที่ฉลาดกว่าฉันในเทอร์มินัลเพื่อตรวจสอบสถานะปัจจุบัน
ซึจิน

0

ฉันกำลังเพิ่มคำตอบนี้เป็นคำตอบที่สองเนื่องจากฉันคิดว่างานวิจัยที่ได้มาที่นี่คุ้มค่ากับการไหล

ใช้ UIElementInspector ของ Google-Fu & Apple เองซึ่ง UIElementInspector ซึ่งฉันได้รับผ่านFDMlib (ซึ่งเชื่อมโยงโดยตรงกับ Apple สำหรับการดาวน์โหลด) ฉันจัดการกับมันด้วยกัน ...

tell application "Finder" to open file ((path to documents folder as text) & "reference.rtf")
delay 1

tell application "System Events" to tell process "TextEdit"
    set v to (value of attribute "AXMenuItemMarkChar" of menu item "Check Spelling While Typing" of menu 1 of menu item "Spelling and Grammar" of menu 1 of menu bar item "Edit" of menu bar 1)

    if v = "✓" then
        click menu item "Check Spelling While Typing" of menu 1 of menu item "Spelling and Grammar" of menu 1 of menu bar item "Edit" of menu bar 1
    end if
end tell

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

ฉันแน่ใจว่าสแคปเตอร์ที่เหมาะสมสามารถปรับแก้ได้หลายวิธี - แต่ก็ใช้ได้ :-)


ดูเหมือนว่าจะทำงานในครั้งแรกที่ฉันวิ่ง ครั้งที่สองที่สามและสี่ข้อผิดพลาดการสะกดถูกเน้นอีกครั้ง สำหรับการทดสอบคุณต้องรอเป็นเวลา 30 วินาทีเพื่อให้การไฮไลต์ปรากฏขึ้น ดูเหมือนจะไม่แน่นอน
Jimmbo

ไฟล์ของคุณใหญ่แค่ไหน? ฉันกลับไปคิดว่ามันอาจต้องใช้เวลามากขึ้นอีกครั้ง - ฉันทดสอบสิ่งนี้จนกว่าฉันจะแน่ใจว่าสถานะใดที่สวิตช์ทำงานอยู่
Tetsujin

มันเป็นไฟล์ขนาดใหญ่
Jimmbo

ฉันเปลี่ยนเป็น "หน่วงเวลา 10" เปิดตัวครั้งแรกทำงาน คนที่ตามมาแสดงข้อผิดพลาดการสะกดคำ
Jimmbo

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