提醒事项同步日历代码
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()
}
提醒事项同步日历代码相关推荐
- ios提醒事项同步日历scriptable代码
var dur_month = 1const startDate = new Date() startDate.setMonth(startDate.getMonth() - dur_month) c ...
- ios提醒事项和日历同步优化
优化了同步,将原本无时间的提醒事项同步成全天事项 代码改自:https://blog.csdn.net/zackerzhuang 这位博主,可以配合她的小目标,非常好用. 更新点 1.原本无时间的提醒 ...
- 【ios】提醒事项与日历同步升级版可快速新建提醒不用设置时间
经过朋友反馈iPad可能不行✋目前也没有时间解决,pad用户慎用 起因: 看到知乎的 [真香!自动同步ios的提醒事项和日历,显示日打卡内容]文章,试了试,确实很方便,可以再提醒事项里添加事项,日历就 ...
- 【已解决】iphone和mac的备忘录、提醒事项、日历等无法同步。MacBook点击“更新Apple ID 设置”无反应。
iphone和mac的备忘录.提醒事项.日历等无法同步. 1. iCloud官网可以正常登录 2.App Store也可以正常登录 3.但是系统偏好设置中的Apple ID一直提示"更新Ap ...
- 无法同步谷歌日历_真香!自动同步ios的提醒事项和日历,显示日打卡内容
ios的提醒事项没有日历视图,这是我一直想要的功能,以前一直寻求第三方软件,但是第三方软件都要收费,现在发现通过一个脚本就可以自动同步,于是自己动手写了个脚本. 视频教程请戳 真香!一键同步ios[提 ...
- 如何高效的使用苹果产品的备忘录、提醒事项、日历?
作者:HotPursuit丶 链接:https://www.zhihu.com/question/22027616/answer/338956660 来源:知乎 著作权归作者所有.商业转载请联系作者获 ...
- 为什么苹果日历不能设置日程_iphone6提醒事项加入日历怎么不提醒我 到时
iphone6提醒事项加入日历怎么不提醒我 到时 234游戏网友 提出于 2019-07-14 21:02:21 请问:iPhone6s plus如何添加提醒事项 1.苹果手机提醒事项不提醒,可以查看 ...
- iPhone 中常用、好用的提醒类软件(闹钟、提醒事项、日历、滴答清单)
iPhone 中常用.好用的提醒类软件(闹钟.提醒事项.日历.滴答清单) 背景 对比 iPhone 的提醒事项.闹钟.日历,以及第三方的滴答清单的通知的强弱程度,找出 iPhone 上好用的通知软件( ...
- 备忘录怎么用红笔标注_如何高效的使用苹果产品的备忘录、提醒事项、日历?...
不得不感慨原生应用非常强大了!!!超级好用,超级喜欢!!!目前主要在用的是备忘录(日记手帐作用)+闹钟(GTD提醒事项,配合备忘录)+日历(重要长周期事项).看怎么用!第一步,非常非常重要,尤其是你苹 ...
最新文章
- 浮点数在计算机中的表示
- sklearn使用FeatureHasher处理字符串特征
- JAVA 继承基本类、抽象类、接口
- qsort归纳学习(c语言版本)
- 开启虚拟化技术之旅---1什么是虚拟化?
- 18 | 为什么这些SQL语句逻辑相同,性能却差异巨大?
- C++ JSON库:JSON for Morden C++
- 分布式作业 Elastic Job 如何动态调整?
- java版本位数_java 如何查看jdk版本位数
- quick-cocos2dx 组件管理器
- word去除标题前的小黑点
- Android 复杂的列表视图新写法 MultiType (v3.1.0 修订版)
- 你的计算机无法启动怎么回事,电脑无法正常启动如何做系统-“你的电脑未能正确启动”的解决方法...
- 个人申请微信公众号步骤(含截图)
- 「星火计划沙龙视频」Angel核心推荐算法及其应用探秘
- 用纯python脚本玩转UU加速器
- java摇号_以JAVA为平台实现摇号抽奖
- Pytorch基础操作 —— 6. 如何使用自定义数据集
- 三分钟了解JVM的垃圾回收和三色标记
- 有效沟通bic法则_在职场中有效沟通的法则
热门文章
- SpringBoot里实现幂等性有几种方法?看完这篇就不会再踩坑了
- 父母要不要给孩子找个机器人玩伴,看看最新研究怎么说的
- lol服务器最新版本,LOL“版本答案”诞生,12个服务器数据公布,两位AD霸榜
- Laravel打印sql
- 英雄联盟为什么服务器找不到,英雄联盟为什么连接不上服务器(英雄联盟没有响应是什么...
- 【校招VIP】“推推”项目课程Java:SpringBoot demo的说明、入门和下载
- python指针之结果猜谜,一个可爱的错误
- 无聊中~~看《失恋33天》,单片循环
- 方舟加入服务器显示全球禁止怎么办,方舟很多服务器无法加入 | 手游网游页游攻略大全...
- json字符串数据转成json文件保存