我经常使用Mac上的日历应用,公司每天也要写日报,于是将日历中当天的事项导出为TXT文件,可以省下很多心力做其他事情。我尝试了将近一个月,感觉不错。
本文将详细介绍如何使用 AppleScript 实现这一目标。通过简单的脚本,可以获取当天所有的日历事件,将它们导出到一个带有当前日期的TXT文件中,显示导出的记录数量。如果结合 crontab 还能完成定时自动导出的工作,甚至,结合selenium,还可以自动化填写日报。
在开始之前,请确保你已经授予 AppleScript 访问日历的权限。如果这是你第一次运行此脚本,系统可能会提示你授权访问。
以下是完整的 AppleScript 脚本,确保从当天凌晨0点到当天晚上12点之间的“日常”下的所有日历事件,并将它们导出到桌面的TXT文件中。文件名将包含当前日期,并在完成导出后显示一个弹窗,告知导出的记录数量。
tell application "Calendar"
-- 获取当前日期
set currentDate to current date
-- 设置今天的开始时间为凌晨0点
set startOfDay to currentDate
set time of startOfDay to 0
-- 设置今天的结束时间为晚上12点
set endOfDay to startOfDay + 1 * days
-- 获取"日常"日历中的今天的事件
set theEvents to (get events of calendar "日常" whose start date ≥ startOfDay and start date < endOfDay)
set eventDetails to ""
repeat with theEvent in theEvents
set eventDetails to eventDetails & (summary of theEvent) & " - " & (start date of theEvent) & return
end repeat
-- 获取当前日期的年月日
set {year:y, month:m, day:d} to (current date)
set monthText to text -2 thru -1 of ("0" & (m as integer) as string)
set dayText to text -2 thru -1 of ("0" & (d as integer) as string)
set dateText to (y as string) & "-" & monthText & "-" & dayText
-- 设置文件名
set fileName to "daily-" & dateText & ".txt"
-- 导出事件到文件
do shell script "echo " & quoted form of eventDetails & " > ~/Desktop/" & fileName
-- 显示导出记录数量的弹窗
display dialog "导出了 " & (count of theEvents) & " 条记录。" with title "导出完成"
end tell
set theEvents to (get events of calendar "日常" whose start date ≥ startOfDay and start date < endOfDay)
中的 "日常"
为你具体的日历名称。