Zotero期刊自动匹配更新影响因子

现有的zotero插件中,找到可以支持更新影响因子青柠学术的Zotero IF,但它的代码没有公开,需要关注微信公众号才能获取免费版,免费版的影响因子更新也不是很及时;它的Pro版本功能更多,但需要收费,建议有需求的小伙伴去下载,创作不易,支持好用的原创工具。

Zotero本身为开发者提供了JavaScript API,可以直接在软件里允许JavaScript(菜单栏“工具-开发者-Run JavaScript”),利用这个功能也可以匹配影响因子。hlblade/Zotero_IF提供了一段事项影响因子匹配的功能,但原作者把影响因子列表放在了脚本中,虽然简便,但不够优雅;另外,作者也没有在第一时间更新这个列表。于是我修改了一下这个脚本 commonreed/Zotero_IF,换上了昨天(2022年6月28日)发布的最新的影响因子,如下:

var path = 'C:/Users/Administrator/Desktop/IF_2022.json';
var data = await Zotero.File.getContentsAsync(path);
var impact_factors = eval("(" + data + ")");
var fieldName = "series";
var newValue = "";
var fieldID = Zotero.ItemFields.getID(fieldName);
var s = new Zotero.Search();
s.libraryID = ZoteroPane.getSelectedLibraryID();
var ids = await s.search();
if (!ids.length) {
    return "No items found";
}
await Zotero.DB.executeTransaction(async function() {
    for (let id of ids) {
        let item = await Zotero.Items.getAsync(id);
        let mappedFieldID = Zotero.ItemFields.getFieldIDFromTypeAndBase(item.itemTypeID, fieldName);
        var IF = impact_factors[item.getField('publicationTitle').toLowerCase()]
        item.setField(mappedFieldID ? mappedFieldID : fieldID, newValue);
        if (IF != undefined) {
            item.setField('series', IF)
        }
        await item.save();
    }
});
return ids.length + " item(s) IF updated, and shown in series field!";

可直接点击下载2022年6月发布的JCR影响因子json文件到本地,修改脚本中的path路径。另外,分享原始excel表格便于查看。

该json文件是由csv文件在Notepad++中利用正则完成的,注意删除影响因子为N/A的行,把所有期刊名称改为小写(使用\L)。


 

posted @ 2022-06-29 19:29  LiuLyle  阅读(578)  评论(0编辑  收藏  举报