An AppleScript Usage Question

Hey!

New member here. I’ve poked around a bit and can’t seem to anything directly on point.

I’m trying to run a query from another Mac app. What I want is the ‘name’ and the ‘permalink’ of the current draft (the draft which has the ‘focus’)
Something like:
tell application “Drafts”
set thisDraft to draft 1
set theResult to {|url|:permalink of thisDraft, title:name of thisDraft}
end tell
return (theResult as record)

Can someone steer me in the right direction?
Thank-You.
Steve

AppleScript support is very limited right now. Only creation of new drafts is supported. We plan to expand that support, but can’t promise a timeframe.

Details in documentation.

Thanks for the prompt reply!

Whatever encouragement I can supply - please consider it offered.
Obviously I’d like you to consider implementing what I have described…
From this end it seems relatively straightforward - you already have a ‘make new’ operation as well as a ‘draft’ type ‘item’… It seems like my request can be reduced to implementing a special instance of this ‘draft’ item which would be ‘current draft’… Everything I need is already implemented as a ‘property’ of the ‘draft’ item…

Thanks Again - Keep up the Good Work
Steve

You could drop to calling a shell script from AppleScript to get you the answer via the xcall command line app and using that to call Drafts’ /getCurrentDraft URL Scheme action. Then you parse the results.

Here’s a crude example, but you could try using something like jq for something that’s probably more robust (it’s available via homebrew).

#!/bin/zsh

# Get the JSON for the current draft from Drafts
JSON=$(/Applications/xcall.app/Contents/MacOS/xcall -url "drafts://x-callback-url/getCurrentDraft" -activateApp NO)

# Grab the line about the title and then strip out the extraneous JSON
TITLE=$(echo $JSON | grep '"title" : "')
TITLE=${TITLE//  \"title\" : \"/}
TITLE=${TITLE//\"/}
TITLE=${TITLE//,/}

# Output the title
echo $TITLE

# Grab the line about the permalink and then strip out the extraneous JSON
URL=$(echo $JSON | grep '"url" : "')
URL=${URL//  \"url\" : \"/}
URL=${URL//\"/}
URL=${URL//,/}

# Unescape the URL
URL=${URL//\\/}

# Output the URL
echo $URL

The output of the script is the title on line 1 and the permalink on line 2.

Hope that helps.