您的位置:首页 > 移动开发 > IOS开发

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()
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐