Mit der Annahme, dass Autokomprimierung
als App erkannt wird (und ich nehme an das wird es wenn es im Ordner liegt, wo sonst alle anderen Apps liegen), müsste das folgende funktionieren. Ich habe es mit Acrobat ausprobiert, dort händisch eine Datei komprimiert und gespeichert, und das ganze hat funktioniert. Ich kann das Script aber so wie es hier steht nicht testen.
Nochmal: bitte unbedingt mit einer Testdatenbank ausprobieren. Deine Smart Rule entscheidet darüber, welche Dateien dem Skript geschickt werden - ist deine Smart Rule falsch, werden auch die falschen Dateien bearbeitet.
on performSmartRule(theRecords)
tell application id "DNtp"
try
set theName to name of first item in theRecords
set theResponse to display dialog "Autokomprimierung von '" & theName & "' und " & ((count of theRecords) - 1) & " weiteren Dokumenten. Diese Manipulation kann nicht rückgängig gemacht werden!" with title "PDF Autokomprimierung" buttons {"Fortfahren", "Abbrechen"} default button "Abbrechen"
if button returned of theResponse is "Abbrechen" then
error number -128
else
show progress indicator "Komprimiere PDFs" cancel button 1 steps count of theRecords
repeat with theRecord in theRecords
if cancelled progress then error number -128
step progress indicator (name of theRecord) as string
set c to 0
set theTags to tags of theRecord
set referenceSize to size of theRecord
set currentSize to size of theRecord
set thePath to path of theRecord as string
tell application "Autokomprimierung"
open (thePath as POSIX file)
end tell
repeat while currentSize is equal to referenceSize
if cancelled progress then error number -128
delay 0.5
set c to c + 0.5
if c > 60 then exit repeat
set currentSize to size of theRecord
end repeat
if c < 60.5 then
set theTags to theTags & "-komprimiert-"
set tags of theRecord to theTags
end if
end repeat
end if
on error error_message number error_number
hide progress indicator
if the error_number is not -128 then display alert "DEVONthink" message error_message as warning
end try
hide progress indicator
end tell
end performSmartRule