I am trying to write a little script to search in all open databases and return the results but noticed that the applescript search() method needs a in: parameter and searches only in the current database otherwise.
I wasn’t able to find a way to get a list of all currently opened databases either that I could use to loop through it.
Is it possible to use applescript to search in all of DEVONthink (similar to the search window, just programmatically)?
This will get you a list item of all open databases including the Global Inbox:
tell application id "DNtp"
set allDatabases to every database
end tell
You can then do a loop with
repeat with thisDatabase in allDatabases…
For example, I have a Keyboard Maestro macro that, when executed while a file is selected in Finder, tells me if that file also exists inside some database. This is helpful if am cleaning up some downloaded files and don’t recall if I imported the file or not.
repeat with thisDatabase in allDatabases
set t_fnd to (contents of thisDatabase whose name is i_fileName)
set for_ to for_ & "In: " & name of thisDatabase & return
set locList to ""
if t_fnd is not equal to {} then
repeat with thisItem in t_fnd
set locList to locList & location of thisItem & name of thisItem & return & return
end repeat
else
set locList to "Nothing found" & return & return
end if
set for_ to for_ & locList
end repeat
(The snippet is an example of the technique. I won’t explain the whole macro as it is private to my work.)
Now I saw that each record has ‘score’ field. I assumed this would be the score of how good of a match the result is, but it looks like it’s always 0. Did you by chance figure out how to use it?