+
+A downside to updating an entry is it overwrites what you have already fixed. So, we next develop a function to update the field at point.
+
+#+BEGIN_SRC emacs-lisp
+(defun doi-utils-update-field ()
+ (interactive)
+ (let* ((doi (bibtex-autokey-get-field "doi"))
+ (results (doi-utils-get-json-metadata doi))
+ (field (car (bibtex-find-text-internal nil nil ","))))
+ (cond
+ ((string= field "volume")
+ (bibtex-set-field field (plist-get results :volume)))
+ ((string= field "number")
+ (bibtex-set-field field (plist-get results :issue)))
+ ((string= field "pages")
+ (bibtex-set-field field (plist-get results :page)))
+ ((string= field "year")
+ (bibtex-set-field field (plist-get results :year)))
+ (t
+ (message "%s not supported yet." field)))))
+#+END_SRC
+
+