Zoteroのライブラリー(文献のPDFファイルを保存するディレクトリー)を変更すると、各文献に記録されている絶対パスもそれに合わせて更新する必要が生じる。すべての文献パスを一括で更新したい場合は、以下のようなコードをZoteroのJavaScriptコンソール(Tools → Developer → Run JavaScript)に貼り付けて実行する。
var oldPath = "/Users/nozomu/Library/CloudStorage/Dropbox/Zotero";
var newPath = "/Users/nozomu/Library/CloudStorage/ProtonDrive-nozomu@proton.me-folder/Zotero";
var items = await Zotero.Items.getAll(Zotero.Libraries.userLibraryID);
var count = 0;
for (let item of items) {
if (item.isAttachment() && item.attachmentLinkMode === Zotero.Attachments.LINK_MODE_LINKED_FILE) {
let path = item.getFilePath();
if (path && path.startsWith(oldPath)) {
let newFilePath = newPath + path.substring(oldPath.length);
item.attachmentPath = newFilePath;
await item.saveTx();
count++;
}
}
}
return count + " 件のリンクを更新しました。";