**** script: migrate from old heading format :PROPERTIES: :CREATED: [2023-07-24 Mon 03:38] :CUSTOM_ID: emacsconf_51 :END: #+name: created on [2023-07-24 Mon 03:38:47] #+begin_src emacs-lisp (defun my/migrate-legacy-created-format () (interactive) (org-map-entries (lambda () (let* ((title (org-entry-get nil "ITEM")) (regexp "^\\(.*\\) <\\(20.*\\)>") (current-created (org-entry-get (point) "CREATED"))) (when (string-match regexp title) (let ((new-title (match-string 1 title)) (new-created (match-string 2 title))) (if current-created (message "Warning: \"%s\" not added as created property" title) (progn ;; move match to CREATED property (org-entry-put (point) "CREATED" (format "[%s]" new-created)) ;; delete heading text (org-edit-headline new-title))))))) nil 'file)) #+end_src