真香!自动同步ios的提醒事项和日历,显示日打卡内容 - 知乎专栏

文章推薦指數: 80 %
投票人數:10人

ios的提醒事项没有日历视图,这是我一直想要的功能,以前一直寻求第三方软件,但是第三方软件都要收费,现在发现通过一个脚本就可以自动同步,于是自己动手写了个脚本 ... 首发于ios小技巧无障碍写文章登录/注册ios的提醒事项没有日历视图,这是我一直想要的功能,以前一直寻求第三方软件,但是第三方软件都要收费,现在发现通过一个脚本就可以自动同步,于是自己动手写了个脚本。

视频教程请戳脚本功能未完成的项目会添加到日历,日期是截止时间,位置一栏提醒了还剩多少时间完成项目以后会把打卡的日程添加到日历,时间是完成项目的时间在延期的时候会把未完成项目的截止日期改为当天,变为全天事项实现方法在iphone或者ipad下载scriptable打开app,新建一个脚本,将本文最后的脚本文件复制到里面。

打开ios自带的快捷指令app,创建一个自动化,在打开提醒事项或者日历的时候自动运行scriptable的同步脚本文件,记得吧alwaysruninapp这个选项关闭如果不想要每次打开两个app就自动运行脚本,也可以手动创建我的快捷指令,然后也是添加scriptable的脚本,把运行时显示和runinapp关闭,然后在首页的-1屏添加快捷指令的小组件,每天进行一键同步。

重要的一步!!需要在日历里面添加提醒事项列表名对应的日历列表名,只需要创建想同步的列表,不想显示在日历上的待办事项不需要创建列表。

例如然后打开app就可以一键同步啦脚本放下面,也可以自己去scriptable里面添加,写得比较丑希望大佬放过我!vardur_month=1 conststartDate=newDate() startDate.setMonth(startDate.getMonth()-dur_month) console.log(`日历的开始时间${startDate.toLocaleDateString()}`) constendDate=newDate() endDate.setMonth(endDate.getMonth()+dur_month) console.log(`日历的结束时间${endDate.toLocaleDateString()}`) constreminders=awaitReminder.allDueBetween(startDate,endDate) console.log(`获取${reminders.length}条提醒事项`) varcalendar=awaitCalendar.forEvents() //获取日历名和对应的日历 varm_dict={} for(calofcalendar) { m_dict[cal.title]=cal //console.log(`日历:${cal.title}`) } constevents=awaitCalendarEvent.between(startDate,endDate,calendar) console.log(`获取${events.length}条日历`) varreminders_id_set=newSet(reminders.map(e=>e.identifier)) //删除日历里提醒事项删除的事项 events_created=events.filter(e=>e.notes!=null&&e.notes.includes("[Reminder]")) for(leteventofevents_created){ //console.warn(event.notes) letreg=/(\[Reminder\])\s([A-Z0-9\-]*)/ letr=event.notes.match(reg) //if(r)console.log(r[2]) if(!reminders_id_set.has(r[2])) { event.remove() } } for(constreminderofreminders){ //reminder的标识符 consttargetNote=`[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}`) constnewEvent=newCalendarEvent() newEvent.notes=targetNote+"\n"+reminder.notes//要加入备注 updateEvent(newEvent,reminder) } } Script.complete() functionupdateEvent(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=true event.startDate=reminder.dueDate //event.endDate=reminder.dueDate //varending=newDate(reminder.completionDate) //ending.setHours(ending.getHours()+1) //event.endDate=ending varperiod=(reminder.dueDate-reminder.completionDate)/1000/3600/24 period=period.toFixed(1) if(period<0) { period=-period event.location="延期"+period+"天完成" } elseif(period==0) { event.location="准时完成" } else { event.location="提前"+period+"天完成" } } //未完成事项 else{ constnowtime=newDate() varperiod=(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=true } //在同一天的保持原来的时间 else { event.title=`⭕️${reminder.title}` event.isAllDay=false event.startDate=reminder.dueDate varending=newDate(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 varending=newDate(reminder.dueDate) ending.setHours(ending.getHours()+1) event.endDate=ending } } if(!reminder.dueDateIncludesTime) event.isAllDay=true event.save() } 编辑于2022-09-1700:10iOS时间管理提醒事项(app)​赞同570​​300条评论​分享​喜欢​收藏​申请转载​文章被以下专栏收录ios小技巧分享一些使用ios的小技巧



請為這篇文章評分?