IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    在 Mac 上将当天的日历事项导出为 TXT 文件

    血衫非弧の一存发表于 2024-07-17 00:00:00
    love 0

    我经常使用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
    

    使用步骤

    1. 打开“脚本编辑器”: 在你的Mac上,打开“脚本编辑器”应用程序。这是macOS自带的一个应用,可以用来编写和运行AppleScript脚本。
    2. 粘贴脚本: 将上述脚本复制并粘贴到“脚本编辑器”中。
    3. 修改日历名称: 如果你使用的日历名称不是“日常”,请修改脚本中 set theEvents to (get events of calendar "日常" whose start date ≥ startOfDay and start date < endOfDay) 中的 "日常" 为你具体的日历名称。
    4. 运行脚本: 点击“运行”按钮,脚本将开始执行。

    image-20240719上午90423490



沪ICP备19023445号-2号
友情链接