Create a new item/object in AppleScript
Solution 1:
receipt
is an element belonging to some parent object. As with any instance of an AppleScript element that has already been created, it'll typically be referenced either by index
, e.g.
receipt 1 of ...
or by name
, e.g.
receipt "MyNamedReceipt" of ...
or by id
, e.g.
receipt id "61405882-ee27-4c94-86bb-bcdecc8792ba" of ...
My feeling is that the add
command will act on an instance of a library item
(including receipt
) that already exists. If so, then
add receipt ...
would most likely generate the error you're seeing, because receipt
is a class name, where add
would be expecting an identifiable element, e.g.
add receipt "MyNamedReceipt" ...
Going by typical nomenclature in the AppleScript world, add
commands typically get invoked when one wishes to take a pre-existing object from one location and insert/add it to another. In Paperless
, this might be taking a receipt
from, say, a folder (or album) of receipts, and adding either a copy of or a reference to (most likely the latter) that receipt to a different folder/album.
The most common way to create new instances of an element in the majority of AppleScriptable applications is by way of the make
command (which is part of the standard suite that an application's scripting dictionary is recommended to contain):
make v : Make a new object.
make
new type : The class of the new object.
[at location specifier] : The location at which to insert the object.
[with data any] : The initial data for the object.
[with properties record] : The initial values for properties of the object.
→ specifier
If Paperless
includes the make
command, try using that. It would take a form similar to:
make new receipt with properties {name:"My Receipt", merchant:"Apple", amount:"$249.99", tax:"$0.00"}
You will need to consider which element owns the collection of receipts
in which you're attempting to create a new one. If library item
is a top-level application object, i.e. owned by application
, then the make
command should not require the at
parameter (if it does, it can be a generic at end of receipts
). However, if library item
is owned by, say, a library
class object, then the make
command either needs to occur within tell
block targeting that library
element (e.g. library 1
, or library "MyLibrary"
); or it needs the at
parameter to describe where to create the new receipt
, e.g.
tell application "Paperless"
.
.
.
make new receipt at library 1 of document 1
.
.
.
end tell
where, for illustrative purposes, I've pre-supposed that library items
are contained by libraries
are contained by documents
are contained by the application
.