JavaScript templates

Syntax

Custom functions must be defined with the syntax window.customMetadata = function(item) { ... } rather than function customMetadata(item){ ... } otherwise an error will be thrown. This syntax is needed to make the function globally available, so that it can be found by the extension.

Specifications

All formatting functions must have the structure described below.

Arguments

The function must take up to 3 arguments, in order :

  • The item's data object, as returned by the Zotero Web API. See here for an example from the Zotero API docs.

  • The item's linked PDFs

  • The item's linked notes/annotations

Return Value

The function must return a single array, containing the blocks to be added to the item's Roam page. Each element of the array will be processed as a top-level Roam block to be added to the item's Roam page. The array's order will be the final block order in Roam.

Blocks can be provided in two forms:

  • A simple string of text, which will create a childless block

  • An Object with a string property, and an optional children property: { string: "The block's contents", children: [...] }

    • Objects will be processed recursively, which means you can specify as much nesting levels as you'd like (see Nesting metadata).

Getting Started

To start writing your own functions, feel free to make use of this Observable interactive notebook , which has a few examples and demos:

Last updated