다음은 들어가는 데이터 추출하는 방법의 예이다 축합 *Org Agenda*
정상적으로 기능을 사용할 때 버퍼 org-agenda-list
로, org-agenda-entry-types
예컨대 :deadline
, :scheduled
, :timestamp
, sexp
, :deadline*
, 및 :scheduled*
. 날짜 범위는- begin
및 end
-그레고리력 목록 형식이어야합니다 (예 :) '(6 1 2015)
. 사용자 정의 가능한 바운드 옵션은 org-agenda-prefix-format
및 org-agenda-entry-types
입니다. 이 함수는 결과를 목록 형식으로 반환합니다.
(require 'calendar)
(require 'org)
(require 'org-agenda)
(require 'cl)
;; Portions of following code were extracted from:
;; https://github.com/kiwanami/emacs-calfw written by Masashi Sakurai
;; Said code has been modified by @lawlist hereinbelow.
;;
(defun org-get-entries-fn (begin end)
"Return org schedule items between BEGIN and END.
USAGE: (org-get-entries-fn '(6 1 2015) '(12 31 2020))"
(unless
(and
(calendar-date-is-valid-p begin)
(calendar-date-is-valid-p end))
(let ((debug-on-quit nil))
(signal 'quit '("One or both of your Gregorian dates are invalid."))))
(let* (
result
(org-agenda-buffer nil) ;; prevent error from `org-compile-prefix-format'
;; The variable `org-agenda-only-exact-dates' is apparently not operational.
(org-scheduled-past-days 0) ;; avoid duplicate entries for overdue items
(org-agenda-prefix-format "• ")
(org-agenda-entry-types '(:scheduled))
(date-after
(lambda (date num)
"Return the date after NUM days from DATE."
(calendar-gregorian-from-absolute
(+ (calendar-absolute-from-gregorian date) num))))
(enumerate-days
(lambda (begin end)
"Enumerate date objects between BEGIN and END."
(when (> (calendar-absolute-from-gregorian begin)
(calendar-absolute-from-gregorian end))
(error "Invalid period : %S - %S" begin end))
(let ((d begin) ret (cont t))
(while cont
(push (copy-sequence d) ret)
(setq cont (not (equal d end)))
(setq d (funcall date-after d 1)))
(nreverse ret)))) )
(org-compile-prefix-format nil)
(setq result
(loop for date in (funcall enumerate-days begin end) append
(loop for file in (org-agenda-files nil 'ifmode) append
(progn
(org-check-agenda-file file)
(apply 'org-agenda-get-day-entries file date org-agenda-entry-types)))))
result))