I find myself sometimes forgetting to update indexed items before closing DEVONthink on my Mac resulting in less than up-to-date spreadsheets and other documents in DTTG. Is there a script, Smart Rule, or other method to force updating of indexed items when closing DEVONthink?
As noted in the Help, items in cloud-synced locations may require manual updates via File > Update Indexed Items to avoid conflicts with the service’s updates.
Yes, it does. Are you inferring records linked to local files will update automatically? If so, I have no problem moving the files in question to my hard drive.
I was syncing Desktop and Documents to iCloud before a recent clean install of macOS 11.2.1 and have not selected that option again. I’m now storing only files in iCloud I think I may need when away from home.
Well…I learned something this morning about updating synced items residing in iCloud. If I make a change in an indexed document located in iCloud, that record in DEVONthink will update if I select something else then select the record. This means I could modify the document in iCloud, but the record will not update unless it is selected. If not selected, the record in DTTG will be out of date.
I have created a Keyboard Maestro script to open DEVONthink every night, select File → Update Indexed Items, then close. It appears to do just what I need.
My only question is whether there is some issue I might inadvertently create by running this script unattended. Any thoughts?
I have been using Keyboard Maestro to run that script to update indexed items for a few years now. I configure mine to run when the Mac is idle for 10 minutes and DEVONthink is running.
I find that in order for my macro to run, DEVONthink needs to be the front window. Running the macro while I’m working in a different app is a bit annoying when the DEVONthink window pops up. Have you found a way for the macro to function in the background?
I run an applescript, are you selecting the menu item to perform the update? I attached a screenshot of the KM macro and also the text of the applescript.
-- Update indexed items of all databases
-- Created by Christian Grunenberg on Tue Mar 25 2014.
-- Copyright (c) 2014. All rights reserved.
-- Set to true if indexed items are not only located at the root of the database
property pAllRecords : true
-- set dScope to button returned of (display dialog "Index all records at all levels?" buttons {"Yes", "No", "Cancel"} default button 2 with title "Setting")
-- if dScope = "Yes" then set pAllRecords to true
-- if dScope = "No" then set pAllRecords to false
tell application id "DNtp"
try
set theDatabases to databases
show progress indicator "Updating Indexed Items" steps (count of theDatabases)
repeat with theDatabase in theDatabases
step progress indicator (name of theDatabase as string)
set theRecords to records of theDatabase -- Children of root
repeat with theRecord in theRecords
if pAllRecords or theRecord is indexed then
synchronize record theRecord -- Updates children of theRecord too
end if
end repeat
end repeat
hide progress indicator
on error error_message number error_number
hide progress indicator
if the error_number is not -128 then display alert "DEVONthink Pro" message error_message as warning
end try
end tell
Yes, I’m using Select or Show a Menu Item. It does what I need, but as mentioned interrupts whatever I’m working on at the time. I was planning on writing a script to accomplish the same, but just don’t have the time right now.
Thank you so much for sharing your script. It is very much appreciated…
Idle will not work for me, … cannot work out why … tried ensuring is idle but no action. I am trialing indexing at login, (using a big pause because I have a lot going on at login) … that seems to work okay for me, as I can do manual update during day, if I have some need to do this, … of course would not suit everyones circumstances.
What is Keyboard Maestro’s Engine Log telling you? I see the following entry: Execute macro “Update Indexed Items” from trigger The Mac has been Idle for 1 minutes.
Set the delay time to 1 minute, open the Engine Log and clear entries so it will be easier to read.