Quotidien Shaarli

Tous les liens d'un jour sur une page.

September 18, 2025

How to delete tags in bulk? - Zotero Forums

Script à ajouter dans l'extension Actions & Tags de Zotero permettant de supprimer les marqueurs tout en conservant certains d'entre eux

Astuce : en commentant les 2 lignes qui affichent une fenêtre pendant la suppression, cela évite de devoir cliquer des centaines, voire des milliers de fois sur OK.

// Delete tags, based on Replace tags
// This script removes all tags from the specified Zotero items, except those in the ignore list.
// add tags you wish to keep to `ignoreTags` list, the list is prefilled with two examples

(async () => {

const ignoreTags = ['#GoldSet', '#ClinicalTrials.gov', '#Cochrane Central', '#Embase', '#Medline', '#Proquest', '#Web of Science', '#WHO ICTRP'];

// ^^^^^ Add tag names here to ignore. ^^^^^^^

// Initialize `targetItems` to the array of `items`, or if `items` is undefined,
// use the single `item` wrapped in an array. If neither exists, default to an empty array.
let targetItems = items || (item ? [item] : []);

// Show an alert message
// await Zotero.alert(null, "Delete all tags except ignored ones");

// Iterate over each item in the `targetItems` array.
for (const currentItem of targetItems) {

// Retrieve all tags associated with the current item.
// Use `.getTags()` to get tag objects, and map to their `tag` property to get tag names.
const tags = currentItem.getTags().map(tag => tag.tag);

// Iterate over each tag in the list of tag names.
for (const tag of tags) {

// Check if the tag is in the ignore list.
if (ignoreTags.includes(tag)) {

// Alert the user that the tag is being skipped.
// await Zotero.alert(null, `Tag "${tag}" is in the ignore list and will not be deleted.`);
continue;
}

// Remove the tag from the current item using `.removeTag()`.
await currentItem.removeTag(tag);
}
}

// The script finishes here.
})();