ios提醒事项同步日历scriptable代码
2020-08-12 14:06
4663 查看
var dur_month = 1 const 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} 条日历`) for (const reminder of reminders) { //reminder的标识符 const targetNote = `[Reminder] ${reminder.identifier}` const [targetEvent] = events.filter(e => e.notes != null && (e.notes.indexOf(targetNote) != -1))//过滤重复的reminder if(!m_dict[reminder.calendar.title]) { console.warn("找不到日历"+ reminder.calendar.title) continue } if (targetEvent) { console.log(`找到已经创建的事项 ${reminder.title}`) updateEvent(targetEvent, reminder) } else { const newEvent = new CalendarEvent() createEvent(newEvent, reminder,targetNote) } } Script.complete() function createEvent(event, reminder,targetNote){ console.warn(`创建事项 ${reminder.title} 到 ${reminder.calendar.title}`) event.notes = targetNote + "\n" + reminder.notes//要加入备注 cal_name = reminder.calendar.title cal = m_dict[cal_name] event.calendar = cal if(reminder.isCompleted) { event.title = `✅${reminder.title}` } else { event.title = `⭕️${reminder.title}` } event.startDate = reminder.dueDate var ending = new Date(reminder.dueDate) ending.setHours(ending.getHours()+1) event.endDate = ending event.save() } function updateEvent(event, reminder) { 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}` var 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) event.title = `⭕️${reminder.title}` //console.log(reminder.title+(period)) if(period < 0) { event.location = " 延期" + (-period) + "天" } else { event.location = " 还剩" + period + "天" } } event.save() }
相关文章推荐
- iOS 硬件授权检测:定位服务、通讯录、日历、提醒事项、照片、蓝牙共享、麦克风、相机等
- iOS 硬件授权检测:定位服务、通讯录、日历、提醒事项、照片、蓝牙共享、麦克风、相机等
- iOS开发用Eventkit向日历和提醒事项中加入事件和闹铃
- iOS 硬件授权检测:定位服务、通讯录、日历、提醒事项、照片、蓝牙共享、麦克风、相机等
- iOS 定位服务、通讯录、日历、提醒事项、照片、蓝牙共享、麦克风、相机等授权检测
- iOS 硬件授权检测:定位服务、通讯录、日历、提醒事项、照片、蓝牙共享、麦克风、相机等(转)
- iOS 定位服务、通讯录、日历、提醒事项、照片、蓝牙共享、麦克风、相机等授权检测
- iOS开发用Eventkit向日历和提醒事项中加入事件和闹铃
- iOS 硬件授权检测:定位服务、通讯录、日历、提醒事项、照片、蓝牙共享、麦克风、相机等
- iOS 硬件授权检测:定位服务、通讯录、日历、提醒事项、照片、蓝牙共享、麦克风、相机等
- iOS 硬件授权检测:定位服务、通讯录、日历、提醒事项、照片、蓝牙共享、麦克风、相机等
- iOS 硬件授权检测:定位服务、通讯录、日历、提醒事项、照片、蓝牙共享、麦克风、相机等
- iOS 定位服务、通讯录、日历、提醒事项、照片、蓝牙共享、麦克风、相机等授权检测
- iOS开发将App发布的事件直接添加到系统日历提醒事项的封装
- iOS日历中给一个事件添加多个提醒
- ios设置MDaemon activesync同步邮件、联系人、日历 推荐
- iOS 简介eventKit框架(译) 日历提醒应用等
- [iOS]日历和提醒编程指南(Calendar and Reminders Programming Guide)
- swift 往系统日历中添加提醒事项
- iOS日历中给一个事件添加多个提醒