2

I have the following AppleScript in a service using Run AppleScript in Automator:

on run {input, parameters}
    set date_ to short date string of (current date)
    tell application "System Events"
        keystroke date_
    end tell
end run

It is set to receive no input in any application, and the output replaces text. If I put the cursor in the editing window in Automator and click the run button, it works, and I get the output, e.g.:

...
end run8/15/18

I bound this to a keyboard shortcut (System Properties -> Keyboard -> Shortcuts -> select my script and bind a key combination). However, when I press the key combination, regardless of the application, I briefly (1-2 seconds) get a little spinning gear in the menu bar, and the following error in the console:

Detected missing constraints for < private>. It cannot be placed because there are not enough constraints to fully define the size and origin. Add the missing constraints, or set translatesAutoresizingMaskIntoConstraints=YES and constraints will be generated for you. If this view is laid out manually on macOS 10.12 and later, you may choose to not call [super layout] from your override. Set a breakpoint on DETECTED_MISSING_CONSTRAINTS to debug. This error will only be logged once.

The date is not added to any application where I do this. I've seen one other person with a similar issue here (https://www.alfredforum.com/topic/10311-applescripts-no-longer-work-script-editor-hangs-not-responding-on-sierra/) but they didn't get an answer either. This is confusing, as it appears to be related to window rendering, but I have no GUI elements in my script, AFAIK.

I'm running:

Mac OS Sierra 10.12.6 (16G1510)
Automator Version 2.7 (428)

Ok, while researching for this post I found this post(https://superuser.com/questions/153890/assign-a-shortcut-to-running-a-script-in-os-x/264943) that claims that there is a bug that prevents system services from running after Snow Leopard. Anyone know a workaround without third party tools?

1 Answer 1

1

I was able to get it to work by saving the AppleScript as a separate application, then creating an Automator Service that simply launches that app. Here are the steps:

  • Create a new AppleScript in Script Editor and paste in the following code (yours, but with a slight addition):

    on run
        set date_ to short date string of (current date)
        tell application "System Events"
            set visible of (first process where it is frontmost) to false -- return focus to initiating app
            delay 0.1 -- make sure the application has had time to regain focus—if the script doesn't work, try upping this value a little
            keystroke date_
        end tell
    end run
    
  • Save the script as an Application.

  • Create a new Service in Automator and add a Launch Application action. Set the application to the one you just saved from Script Editor.
  • Link a keyboard shortcut to that Automator action.

I can't verify that it works on Sierra, but it's working on High Sierra 10.13.6.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .