This might all become irrelevant once dtpro directly support skim, but here’s a rough and ready cript that I use for personal use to tell dtpro to import all of the comments that I have entered in skim into the comment field of the note in dtpro. I at least feel this way that I have a backup of the notes I take, and that devonthink can find them.
it’s rough, but hasn’t caused me any trouble yet. I probably should add a check to find the existing record that has the skim info in it, but i’ve been too lazy to do that. Feel free to modify it as suits your needs…
-erico
tell application "DEVONthink Pro"
if not (exists (think window 1)) then error "No window is open."
if not (exists selection) then error "please select a record"
set cur_sel to selection
if exists (parent 1 of item 1 of cur_sel) then
set import_location to parent 1 of item 1 of cur_sel
else
set import_location to root of database 1
end if
end tell
repeat with this_record in cur_sel
tell application "DEVONthink Pro"
set dt_record_path to path of this_record
end tell
set skim_doc to my check_open_skim_documents(dt_record_path)
tell application "Skim"
if skim_doc = "" then
open dt_record_path
delay 4
set the_Window to window 1
set this_document to document of the_Window
else
set this_document to skim_doc
end if
set accumulated_note to ""
if exists notes of this_document then
set the_notes to notes of this_document
set note_text to ""
repeat with this_note in the_notes
set the_page to page of this_note
log the_page
set page_string to index of the_page
if exists text of this_note then set note_text to text of this_note
if exists extended text of this_note then set note_text to note_text & extended text of this_note
set accumulated_note to accumulated_note & "
--------------" & page_string & "-------------------" & "
" & note_text
end repeat
end if
end tell
tell application "DEVONthink Pro"
set comment of this_record to accumulated_note
---comment out above line to not update dt comments
---commment out below line to not create record in dtpro
create record with {type:rtf, name:"skim notes from " & (name of this_record), rich text:accumulated_note} in import_location
end tell
if skim_doc = "" then tell application "Skim" to close this_document --close it if we opened it
end repeat
on check_open_skim_documents(the_path)
--checks if skim has record with given path open. If so, it returns a reference to it.
tell application "Skim"
set doc_properties to get properties of every window
repeat with this_window in doc_properties
---figure out where window is
---if exists document of this_window then log "this window has document"
--- if document of this_window does not contain missing value then log "oops"
if (class of document of this_window) is document then
set this_document to document of this_window
if path of this_document is the_path then
--save this_document
return this_document
end if
end if
end repeat
end tell
return ""
end check_open_skim_documents