var dur_month = 12const startDate = new Date()
startDate.setMonth(startDate.getMonth() - dur_month)
console.log(`日历的开始时间 ${startDate.toLocaleDateString()}`)const endDate = new Date()
endDate.setMonth(endDate.getMonth() + dur_month)
console.log(`日历的结束时间 ${endDate.toLocaleDateString()}`)const reminders = await Reminder.allDueBetween(startDate, endDate)
console.log(`获取 ${reminders.length} 条提醒事项`)var calendar = await Calendar.forEvents()//获取日历名和对应的日历
var m_dict = {}
for(cal of calendar)
{
m_dict[cal.title] = cal
//console.log(`日历:${cal.title}`)
}const events = await CalendarEvent.between(startDate, endDate, calendar)
console.log(`获取 ${events.length} 条日历`)var reminders_id_set = new Set(reminders.map(e=>e.identifier))
//删除日历里提醒事项删除的事项
events_created = events.filter(e=>e.notes != null && e.notes.includes("[Reminder]"))
for(let event of events_created){
//console.warn(event.notes)
let reg = /(\[Reminder\])\s([A-Z0-9\-]*)/
let r = event.notes.match(reg)
//if(r) console.log(r[2])
if(!reminders_id_set.has(r[2]))
{
event.remove()
}
}for (const reminder of reminders) {
//reminder的标识符
const targetNote = `[Reminder] ${reminder.identifier}`
const [targetEvent] = events.filter(e => e.notes != null && e.notes.includes(targetNote))//过滤重复的reminder
if(!m_dict[reminder.calendar.title])
{
console.warn("找不到日历"+ reminder.calendar.title)
continue
}
if (targetEvent) {
//console.log(`找到已经创建的事项 ${reminder.title}`)
updateEvent(targetEvent, reminder)} else {
console.warn(`创建事项 ${reminder.title} 到 ${reminder.calendar.title}`)
const newEvent = new CalendarEvent()
newEvent.notes = targetNote + "\n" + reminder.notes//要加入备注
updateEvent(newEvent, reminder)}
}Script.complete()function updateEvent(event, reminder) {
event.title = `${reminder.title}`
cal_name = reminder.calendar.title
cal = m_dict[cal_name]
event.calendar = cal
//console.warn(event.calendar.title)
//已完成事项
if(reminder.isCompleted)
{
event.title = `✅${reminder.title}`
event.isAllDay = falsevar period = (reminder.dueDate-reminder.completionDate)/1000/3600/24
period = period.toFixed(1)
if(period < 0)
{
period = -period
event.location = " 延期" + period + "天完成"
}
else if (period == 0)
{
event.location = " 准时完成"
}
else
{
event.location = " 提前" + period + "天完成"
}
}
//未完成事项
else{
const nowtime = new Date()
var period = (reminder.dueDate-nowtime)/1000/3600/24
period = period.toFixed(1)
//console.log(reminder.title+(period))
if(period < 0)
{
//待办顺延event.location = " 延期" + (-period) + "天"
//如果不是在同一天,设置为全天事项
if(reminder.dueDate.getDate() != nowtime.getDate())
{
event.title = `❌${reminder.title}`
event.startDate = nowtime
event.endDate = nowtime
event.isAllDay = false
}
//在同一天的保持原来的时间
else
{
event.title = `⭕️${reminder.title}`
event.isAllDay = false
event.startDate = reminder.dueDate
var ending = new Date(reminder.dueDate)
ending.setHours(ending.getHours()+1)
event.endDate = ending
}
console.log(`【${reminder.title}】待办顺延${-period}天` )
}
else
{
event.title = `⭕️${reminder.title}`
event.isAllDay = false
event.location = "还剩" + period + "天"
event.startDate = reminder.dueDate
var ending = new Date(reminder.dueDate)
ending.setHours(ending.getHours()+1)
event.endDate = ending
}
}
if(!reminder.dueDateIncludesTime)
event.isAllDay = false
event.save()
}

提醒事项同步日历代码相关推荐

  1. ios提醒事项同步日历scriptable代码

    var dur_month = 1const startDate = new Date() startDate.setMonth(startDate.getMonth() - dur_month) c ...

  2. ios提醒事项和日历同步优化

    优化了同步,将原本无时间的提醒事项同步成全天事项 代码改自:https://blog.csdn.net/zackerzhuang 这位博主,可以配合她的小目标,非常好用. 更新点 1.原本无时间的提醒 ...

  3. 【ios】提醒事项与日历同步升级版可快速新建提醒不用设置时间

    经过朋友反馈iPad可能不行✋目前也没有时间解决,pad用户慎用 起因: 看到知乎的 [真香!自动同步ios的提醒事项和日历,显示日打卡内容]文章,试了试,确实很方便,可以再提醒事项里添加事项,日历就 ...

  4. 【已解决】iphone和mac的备忘录、提醒事项、日历等无法同步。MacBook点击“更新Apple ID 设置”无反应。

    iphone和mac的备忘录.提醒事项.日历等无法同步. 1. iCloud官网可以正常登录 2.App Store也可以正常登录 3.但是系统偏好设置中的Apple ID一直提示"更新Ap ...

  5. 无法同步谷歌日历_真香!自动同步ios的提醒事项和日历,显示日打卡内容

    ios的提醒事项没有日历视图,这是我一直想要的功能,以前一直寻求第三方软件,但是第三方软件都要收费,现在发现通过一个脚本就可以自动同步,于是自己动手写了个脚本. 视频教程请戳 真香!一键同步ios[提 ...

  6. 如何高效的使用苹果产品的备忘录、提醒事项、日历?

    作者:HotPursuit丶 链接:https://www.zhihu.com/question/22027616/answer/338956660 来源:知乎 著作权归作者所有.商业转载请联系作者获 ...

  7. 为什么苹果日历不能设置日程_iphone6提醒事项加入日历怎么不提醒我 到时

    iphone6提醒事项加入日历怎么不提醒我 到时 234游戏网友 提出于 2019-07-14 21:02:21 请问:iPhone6s plus如何添加提醒事项 1.苹果手机提醒事项不提醒,可以查看 ...

  8. iPhone 中常用、好用的提醒类软件(闹钟、提醒事项、日历、滴答清单)

    iPhone 中常用.好用的提醒类软件(闹钟.提醒事项.日历.滴答清单) 背景 对比 iPhone 的提醒事项.闹钟.日历,以及第三方的滴答清单的通知的强弱程度,找出 iPhone 上好用的通知软件( ...

  9. 备忘录怎么用红笔标注_如何高效的使用苹果产品的备忘录、提醒事项、日历?...

    不得不感慨原生应用非常强大了!!!超级好用,超级喜欢!!!目前主要在用的是备忘录(日记手帐作用)+闹钟(GTD提醒事项,配合备忘录)+日历(重要长周期事项).看怎么用!第一步,非常非常重要,尤其是你苹 ...

最新文章

  1. 浮点数在计算机中的表示
  2. sklearn使用FeatureHasher处理字符串特征
  3. JAVA 继承基本类、抽象类、接口
  4. qsort归纳学习(c语言版本)
  5. 开启虚拟化技术之旅---1什么是虚拟化?
  6. 18 | 为什么这些SQL语句逻辑相同,性能却差异巨大?
  7. C++ JSON库:JSON for Morden C++
  8. 分布式作业 Elastic Job 如何动态调整?
  9. java版本位数_java 如何查看jdk版本位数
  10. quick-cocos2dx 组件管理器
  11. word去除标题前的小黑点
  12. Android 复杂的列表视图新写法 MultiType (v3.1.0 修订版)
  13. 你的计算机无法启动怎么回事,电脑无法正常启动如何做系统-“你的电脑未能正确启动”的解决方法...
  14. 个人申请微信公众号步骤(含截图)
  15. 「星火计划沙龙视频」Angel核心推荐算法及其应用探秘
  16. 用纯python脚本玩转UU加速器
  17. java摇号_以JAVA为平台实现摇号抽奖
  18. Pytorch基础操作 —— 6. 如何使用自定义数据集
  19. 三分钟了解JVM的垃圾回收和三色标记
  20. 有效沟通bic法则_在职场中有效沟通的法则

热门文章

  1. SpringBoot里实现幂等性有几种方法?看完这篇就不会再踩坑了
  2. 父母要不要给孩子找个机器人玩伴,看看最新研究怎么说的
  3. lol服务器最新版本,LOL“版本答案”诞生,12个服务器数据公布,两位AD霸榜
  4. Laravel打印sql
  5. 英雄联盟为什么服务器找不到,英雄联盟为什么连接不上服务器(英雄联盟没有响应是什么...
  6. 【校招VIP】“推推”项目课程Java:SpringBoot demo的说明、入门和下载
  7. python指针之结果猜谜,一个可爱的错误
  8. 无聊中~~看《失恋33天》,单片循环
  9. 方舟加入服务器显示全球禁止怎么办,方舟很多服务器无法加入 | 手游网游页游攻略大全...
  10. json字符串数据转成json文件保存