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):

makev : 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.