Customizing Hook Integration with Things

This page provides an example of Hook integration scripts: with the Things app from Cultured Code.

-- Get Address for Things
tell application id "com.culturedcode.ThingsMac"
    set n to count of selected to dos
    if n = 1 then
        set todo_id to id of item 1 of selected to dos
    else if n = 0 then
        try
            set todo_name to name of item 1 of windows
            set todo_id to id of to do todo_name
        en try
    else
        set proj to project of item 1 of selected to dos
        repeat with todo in selected to dos
            if proj is not project of todo then
                return
            end if
        end repeat
        set todo_id to id of proj
    end if
    set todo_url to "things://show?id=" & todo_id
    todo_url
end tell

The way Hook integrates with Things is somewhat complex. It has different behaviour in different cases

  • If one item (to do) is selected, Hook will link to that item.
  • If a project is open and no items are selected, or if the project header is selected, Hook will link with the project.
  • If multiple items are selected, and they all belong to the same project, Hook will link to that project.
  • If multiple items are selected, and they do not belong to the same project, Hook will not link to anything.

‘Only link to projects’ alternate Things integration

By editing integration scripts, such as for Things, users can customize the behaviour to match their personal workflows.

For example, a user might prefer to always link to the current list of items, (e.g. Inbox, Today, a project). They could do that by using these Get Address and Get Name scripts.

-- Get Name for Things
tell application id "com.culturedcode.ThingsMac"
    get name of item 1 of windows
end tell

However, keep in mind that “get name” is now optional. You can leave this field blank and simply return a markdown link in the Get Address field of this or any app.

-- Get Address for Things
tell application id "com.culturedcode.ThingsMac"
    set todo_id to name of item 1 of windows
    try
        set todo_id to id of to do todo_id
    end try
    get "things://show?id=" & todo_id
end tell