Add to List

Posted by agiletortoise, Last update over 1 year ago


over 1 year ago

Added support for adding multiple items (one per line)

Append text of current draft to running lists in Drafts.

See it in action

Prompt user to select a category, and append the text of the draft to a list in a draft tagged “lists”, with a header for the category. Intended as an example of how to maintain lists of ideas, movies you want to remember, etc.

To modify available categories, edit the “Define Template Tag” step, listing one category per line. The action ships with “Books”, “Movies”, “TV Shows”, and “Blog Ideas” as the default available categories.

Example Use

  • Type “Godfather” in a draft
  • Tap “Add to List”, select “Movies” as category in the prompt.
  • Assuming this is the first time to select “Movies”, a draft with the tag “lists” will be created, with the following text:
## Movies

- [ ] Godfather
  • Type “Jaws” n a new draft, tap “Add to list”, select “Movies”, the existing draft will be updated to:
## Movies

- [ ] Godfather
- [ ] Jaws

These list can then be found by filtering the draft list by the tag “list”. Create a Workspace for “lists” with a tag filter to easily access lists. You can install a Workspace configured for use with this action from the Directory.


  • defineTemplateTag

    TV Shows
    Blog Ideas
  • script

      Ask for a category, and append to a tagged list for that category
    // tag to assign to list drafts
    const listTag = "lists";
    // setup categories available
    // based on "Define Template Tag" step
    const categories = draft.processTemplate("[[categories]]").trim().split("\n");
    // grab current draft
    const currentContent = draft.content.trim();;
    // prompt to select a category
    let p = Prompt.create();
    p.title = "Select list";
    for (let cat of categories) {
    if ( { // user made a selection
    	let category = p.buttonPressed;
    	// query for list drafts...
    	let drafts = Draft.query(category, "inbox", [listTag]);
    	// loop over found drafts looking for a matching list
    	let d;
    	for (let draft of drafts) {
    		if (draft.content.startsWith("## " + category)) {
    			d = draft;
    	// if we didn't find the list, create it...
    	if (!d) {
    		d = Draft.create();
    		d.content = "## " + category + "\n\n";
    	// tag and update content
    	let s = currentContent.split('\n')
    								.map(ln => `- [ ] ${ln.trim()}`)
    	d.content = d.content + s + "\n"
    else { // user cancelled prompt


  • After Success Archive
    Notification Info
    Log Level Info
Items available in the Drafts Directory are uploaded by community members. Use appropriate caution reviewing downloaded items before use.