# Is Reminders App Linkable?

**URL:** https://discourse.hookproductivity.com/t/is-reminders-app-linkable/2397
**Category:** Discussion & Help
**Created:** [December 13, 2020, 11:28pm UTC](https://discourse.hookproductivity.com/t/is-reminders-app-linkable/2397 "2020-12-13T23:28:03Z")
**Posts on this page:** 10
**Page:** 2

<div class="post-metadata">

### Author: ![zsbenke](https://discourse.hookproductivity.com/user_avatar/discourse.hookproductivity.com/zsbenke/32/1811_2.png) [@zsbenke](https://discourse.hookproductivity.com/u/zsbenke)
#### Post date: [February 5, 2023, 10:53am UTC](https://discourse.hookproductivity.com/t/is-reminders-app-linkable/2397/22 "2023-02-05T10:53:29Z")

</div>

> I’ve been using this code for a while now, thanks @zsbenke

@ethanschoonover Thank you! I’m honored. 🙂

I actually gave up using this script, because Reminders Apple Script integration is so slow, it is barely usable.

---

<div class="post-metadata">

### Author: ![ethanschoonover](https://discourse.hookproductivity.com/user_avatar/discourse.hookproductivity.com/ethanschoonover/32/2510_2.png) [@ethanschoonover](https://discourse.hookproductivity.com/u/ethanschoonover)
#### Post date: [February 5, 2023, 6:31pm UTC](https://discourse.hookproductivity.com/t/is-reminders-app-linkable/2397/23 "2023-02-05T18:31:59Z")

</div>

Yeah I’ve been trying to use shortcuts to pull the selected reminder title as that would speed things up, but no joy so far. regardless, appreciate the script!

---

<div class="post-metadata">

### Author: ![LucB](https://discourse.hookproductivity.com/user_avatar/discourse.hookproductivity.com/lucb/32/2228_2.png) [@LucB](https://discourse.hookproductivity.com/u/LucB)
#### Post date: [February 5, 2023, 8:32pm UTC](https://discourse.hookproductivity.com/t/is-reminders-app-linkable/2397/24 "2023-02-05T20:32:33Z")

</div>

That’s pretty much why we don’t include it with Hookmark. If the [Manifesto for Ubiquitous Linking](https://linkingmanifesto.org/) gains in popularity, Apple might take notice. Would be so easy for them to provide an API for this. Internally they have the IDs. Same goes for Notes and Messages. They use Message URLs between their apps (Calendar), but don’t give consumers and competitors the same benefits, as I discussed here:

> **[Linking Manifesto FAQ and Press Kit](https://cogzest.com/projects/solving-the-meta-access-problem/linking-manifesto-faq/)**
>
> This page is an informal press kit for the "Linking Manifesto" i.e., the Manifesto for Ubiquitous Linking, as a FAQ, by its editor Luc P. Beaudoin. It is not part of the official manifesto.
> 
> When will the manifesto launch
> 
> Dec 6 2021 00:01...

---

<div class="post-metadata">

### Author: ![realCrush](https://discourse.hookproductivity.com/letter_avatar_proxy/v4/letter/r/c68b51/32.png) [@realCrush](https://discourse.hookproductivity.com/u/realCrush)
#### Post date: [October 7, 2023, 5:11am UTC](https://discourse.hookproductivity.com/t/is-reminders-app-linkable/2397/25 "2023-10-07T05:11:36Z")

</div>

Thank you for your script, but it seems that it no longer works in the latest **macOS Sonoma**. It still displays “No linkable item”.

---

<div class="post-metadata">

### Author: ![bchend](https://discourse.hookproductivity.com/letter_avatar_proxy/v4/letter/b/dbc845/32.png) [@bchend](https://discourse.hookproductivity.com/u/bchend)
#### Post date: [October 7, 2023, 4:09pm UTC](https://discourse.hookproductivity.com/t/is-reminders-app-linkable/2397/26 "2023-10-07T16:09:42Z")

</div>

Sorry about this issue.  
What’s your system language?  
Does the reminder have priority?  
Is it a nested reminder? Nested reminder is not accessible via AppleScript.

Thank you

---

<div class="post-metadata">

### Author: ![bchend](https://discourse.hookproductivity.com/letter_avatar_proxy/v4/letter/b/dbc845/32.png) [@bchend](https://discourse.hookproductivity.com/u/bchend)
#### Post date: [October 7, 2023, 5:29pm UTC](https://discourse.hookproductivity.com/t/is-reminders-app-linkable/2397/27 "2023-10-07T17:29:45Z")

</div>

Here is the revised script, Please give it a try:

> **Summary**
>
> ```auto
> set sysinfo to system info
> set osver to system version of sysinfo
> 
> considering numeric strings
> set isMonterey to osver ≥ "12"
> end considering
> 
> tell application "System Events" to tell process "Reminders"
> set wn to name of menu bar item 2 of menu bar 1
> end tell
> 
> set sysinfo to system info
> set osver to system version of sysinfo
> 
> considering numeric strings
> set isMonterey to osver ≥ "12"
> end considering
> 
> tell application "System Events"
> tell its application process "Reminders"
> tell its window wn
> tell its splitter group 1
> tell its UI element 3
> tell its UI element 2
> tell its UI element 1
> if isMonterey then
> set reminderOutline to first UI element whose selected of UI element 1 is true
> set ele to UI element 2 of UI element 1 of UI element 1 of reminderOutline
> set uiName to class of ele as string
> if uiName is "text field" then
> set theReminderName to value of ele
> else
> set theReminderName to value of UI element 3 of UI element 1 of UI element 1 of reminderOutline
> end if
> else
> set reminderOutline to first UI element whose selected is true
> set theReminderName to value of UI element 2 of UI element 1 of reminderOutline
> 								
> 								
> end if
> end tell
> end tell
> end tell
> end tell
> end tell
> end tell
> end tell
> 
> tell application "Reminders"
> try
> set theReminder to the first reminder whose name is theReminderName
> set theURL to the id of theReminder as text
> set theURL to do shell script "echo \"" & theURL & "\"|sed 's/x-apple-reminder:\\/\\//x-apple-reminderkit:\\/\\/REMCDReminder\\//g'"
> 		
> return "[" & theReminderName & "](" & theURL & ")"
> 		
> on error errMsg
> display dialog "ERROR: " & errMsg
> end try
> end tell
> set sysinfo to system info
> set osver to system version of sysinfo
> 
> considering numeric strings
> set isMonterey to osver ≥ "12"
> end considering
> 
> tell application "System Events" to tell process "Reminders"
> set wn to name of menu bar item 2 of menu bar 1
> end tell
> 
> set sysinfo to system info
> set osver to system version of sysinfo
> 
> considering numeric strings
> set isMonterey to osver ≥ "12"
> end considering
> 
> tell application "System Events"
> tell its application process "Reminders"
> tell its window wn
> tell its splitter group 1
> tell its UI element 3
> tell its UI element 2
> tell its UI element 1
> if isMonterey then
> set reminderOutline to first UI element whose selected of UI element 1 is true
> set ele to UI element 2 of UI element 1 of UI element 1 of reminderOutline
> set uiName to class of ele as string
> if uiName is "text field" then
> set theReminderName to value of ele
> else
> set theReminderName to value of UI element 3 of UI element 1 of UI element 1 of reminderOutline
> end if
> else
> set reminderOutline to first UI element whose selected is true
> set theReminderName to value of UI element 2 of UI element 1 of reminderOutline
> 								
> 								
> end if
> end tell
> end tell
> end tell
> end tell
> end tell
> end tell
> end tell
> 
> tell application "Reminders"
> try
> set theReminder to the first reminder whose name is theReminderName
> set theURL to the id of theReminder as text
> set theURL to do shell script "echo \"" & theURL & "\"|sed 's/x-apple-reminder:\\/\\//x-apple-reminderkit:\\/\\/REMCDReminder\\//g'"
> 		
> return "[" & theReminderName & "](" & theURL & ")"
> 		
> on error errMsg
> display dialog "ERROR: " & errMsg
> end try
> end tell
> 
> ```

Thank you

---

<div class="post-metadata">

### Author: ![realCrush](https://discourse.hookproductivity.com/letter_avatar_proxy/v4/letter/r/c68b51/32.png) [@realCrush](https://discourse.hookproductivity.com/u/realCrush)
#### Post date: [October 8, 2023, 6:32am UTC](https://discourse.hookproductivity.com/t/is-reminders-app-linkable/2397/28 "2023-10-08T06:32:37Z")

</div>

Thank you! It works!

---

<div class="post-metadata">

### Author: ![zsbenke](https://discourse.hookproductivity.com/user_avatar/discourse.hookproductivity.com/zsbenke/32/1811_2.png) [@zsbenke](https://discourse.hookproductivity.com/u/zsbenke)
#### Post date: [December 19, 2023, 9:10pm UTC](https://discourse.hookproductivity.com/t/is-reminders-app-linkable/2397/29 "2023-12-19T21:10:37Z")

</div>

I updated my Reminders integration script recently to make it faster on Sonoma. I also made sure that I have a “New Item” part too, so I can create reminders directly from Hookmark.

The “Get Address” script uses the backing SQLite database to find the ID of the selected reminder by title.

There are some caveats to keep in mind:

1. We have to replace the `remindersDatabasePath` property with the proper database path which is different for everyone.
2. Reminders are matched by title, so if we have multiple reminders with the same title, the script may fail to link the proper one.

Here are the scripts updated for Sonoma:

Get Address:

```plaintext
use AppleScript version "2.4" -- Yosemite (10.10) or later
use scripting additions

-- Replace this with your Reminders database path.
property remindersDatabasePath : "/Users/yourusername/Library/Group Containers/group.com.apple.reminders/Container_v1/Stores/Data-some-UUID.sqlite"

tell application "System Events"
	tell its application process "Reminders"
		tell its window "Reminders"
			tell its splitter group 1
				tell its UI element 3
					tell its UI element 2
						tell its UI element 1
							set reminderOutline to first UI element whose selected of UI element 1 is true
							set theReminderName to value of UI element 2 of UI element 1 of UI element 1 of reminderOutline
						end tell
					end tell
				end tell
			end tell
		end tell
	end tell
end tell

set theSQLCommand to "/usr/bin/sqlite3 \"" & remindersDatabasePath & "\" \"SELECT ZCKIDENTIFIER from ZREMCDREMINDER WHERE ZTITLE = '" & theReminderName & "'\""
set theReminderIdentifier to do shell script theSQLCommand
set theURL to "x-apple-reminderkit://REMCDReminder/" & theReminderIdentifier
return "[" & theReminderName & "](" & theURL & ")"

```

New Item (this one can be a bit slow unfortunately)

```plaintext
tell application "Reminders"
	set theName to "$title"
	set theBody to "$user_link"
	set theReminder to make new reminder with properties {name:theName, body:theBody}
	set theReminderURL to the id of theReminder
	set theReminderURL to do shell script "echo \"" & theReminderURL & "\"|sed 's/x-apple-reminder:\\/\\//x-apple-reminderkit:\\/\\/REMCDReminder\\//g'"
	activate
end tell

theReminderURL

```

I haven’t tested these on earlier systems.

---

<div class="post-metadata">

### Author: ![berkentekin](https://discourse.hookproductivity.com/letter_avatar_proxy/v4/letter/b/2acd7d/32.png) [@berkentekin](https://discourse.hookproductivity.com/u/berkentekin)
#### Post date: [March 23, 2025, 11:14am UTC](https://discourse.hookproductivity.com/t/is-reminders-app-linkable/2397/30 "2025-03-23T11:14:28Z")

</div>

I modified the wiki version to make it work with priorities. Though the reminder itself can’t be named “high priority”, "medium priority"or “low priority” if this is active.

```Applescript
set sysinfo to system info
set osver to system version of sysinfo

considering numeric strings
  set isMonterey to osver ≥ "12"
end considering

tell application "System Events"
  tell its application process "Reminders"
    tell its window "Reminders"
      tell its splitter group 1
        tell its UI element 3
          tell its UI element 2
            tell its UI element 1
              if isMonterey then
                set reminderOutline to first UI element whose selected of UI element 1 is true
                set theReminderName to value of UI element 2 of UI element 1 of UI element 1 of reminderOutline
                -- Check if the reminder name contains "Priority" and use the next UI element if it does
                if theReminderName is "High Priority" or theReminderName is "Medium Priority" or theReminderName is "Low Priority" then
                  set theReminderName to value of UI element 3 of UI element 1 of UI element 1 of reminderOutline
                end if
              else
                set reminderOutline to first UI element whose selected is true
                set theReminderName to value of UI element 2 of UI element 1 of reminderOutline
                -- Check if the reminder name contains "Priority" and use the next UI element if it does
                if theReminderName is "High Priority" or theReminderName is "Medium Priority" or theReminderName is "Low Priority" then
                  set theReminderName to value of UI element 3 of UI element 1 of reminderOutline
                end if
              end if
            end tell
          end tell
        end tell
      end tell
    end tell
  end tell
end tell

tell application "Reminders"
  try
    set theReminder to the first reminder whose name is theReminderName
    set theURL to the id of theReminder as text
    set theURL to do shell script "echo \"" & theURL & "\"|sed 's/x-apple-reminder:\\/\\//x-apple-reminderkit:\\/\\/REMCDReminder\\//g'"

    return "[" & theReminderName & "](" & theURL & ")"
  on error errMsg
    display dialog "ERROR: " & errMsg
  end try
end tell

```

---

<div class="post-metadata">

### Author: ![bchend](https://discourse.hookproductivity.com/letter_avatar_proxy/v4/letter/b/dbc845/32.png) [@bchend](https://discourse.hookproductivity.com/u/bchend)
#### Post date: [March 23, 2025, 8:31pm UTC](https://discourse.hookproductivity.com/t/is-reminders-app-linkable/2397/31 "2025-03-23T20:31:40Z")

</div>

Welcome to Hookmark forum, @berkentekin .

Thank you for your script!

[Previous page](https://discourse.hookproductivity.com/t/is-reminders-app-linkable/2397.md?page=1)
