deleting items from other (sub-)collections

edited 17 days ago
Hello fellow users of Zotero,

TLDR-Q: Is there a way to both find out if a batch of items is/are in multiple collections, and to remove these items from those other collections, preferable per batch? I am asking this for Zotero 7.0.11 on Linux (Fedora Copr). (I know that you can assign one item to multiple (sub-)collections, but that is not preferred for the used research methode... )

For doing an Integrative review (similar methode to a systematic review), I have a lot of items in a private shared library. Due to this research methode, I have to assign each item to their own appropriate categorie. Each categorie is just a collection with the appropriate name. Thus I have to assign each item to one (sub-)collection. Concrete to my own research case: when an item can be labeled as Environment, I put this item in the collation Excluded, and sub-collection Environment.

Over time, somehow several Items ended up in several (sub-)collections. Although these items may have multiple categories, due to the research methode, I can only assign one (sub-)collection per item. To phrase it the other way, every item can only be assigned to one sub-collection. Because several items ended up in several sub-collections, I would like to remove these items from other sub-collections, preferable removing these from other in batches. Concrete to my own research case: when an item has been labeled earlier as Environment, and later again as Society, Medical, and/or Included, then I have one item in multiple collections.

Although I can find out if one item is in more (sub-)collections (Linux: left ctrl), and remove this item manual, and repeating this per item all over again, I would like to know if Zotero has also a batch function. Concrete to my own research case: Because somehow I assigned multiple (sub-)collections to several items, I would like to still end up with items that are in one (sub-)collection, and are thus not in other (sub-)collections as well.

A work around is:
1) (re)moving the full (sub-)collection that are correct to the bin
2) copying every other (sub-)collections to another (sub-)collection
3) deleting mere these copied collections themselves (but not the copies)
4) restoring the (sub-)collection from step 1)
5) deleting the 'restored' copied (sub-)collections from step 3)
6) repeating this with every (sub-)collection that hold items with multiple collections.

Thanks,

86ul
  • Is there a way to do this above?
  • edited 8 days ago
    You could do it with tags, as long as the number of collections doesn't make that too tedious.

    1. Make sure you have View\Show Items from Subcollections turned OFF.
    2. Create a tag with each collection's name.
    3. Step through each collection, select all items, and drag them onto the tag to assign that tag to all items in that collection.
    4. Then step through each collection again. For each collection, select the tags of every OTHER collection in turn, one at a time. When an item in the current collection also appears when you select the tag for another collection, decide which collection you want to remove it from (the current one or the other one). If you cannot decide that until you know all the collections that an item belongs to, just make a note of all items that belong to more than one collection.

    You can code lots of things like item collection membership checking with the Zotero javascript API, or maybe something like pyzotero. The question is whether it's worth the effort.
Sign In or Register to comment.