我已经使用Google Calendar API在Django应用程序中实现了一个事件模块,并且设置了事件的提醒时间,现在我必须在我的应用程序中启动事件之前获得提醒通知,但是只有Google提供的传递机制是
弹出。这些支持在移动平台和web客户端上。 服务器发送的电子邮件。
他们没有提供任何这类功能,我可以从Google得到提醒到我们的应用程序。我尝试过从谷歌日历API的推送通知,但它有不同的功能。
解决方案:--我还有另一种选择,可以使用芹菜拍编写cron作业,但是在特定的时间间隔之后,从数据库检查可能会花费很大的代价,即,是否有时间与事件提醒相匹配,然后推送通知。如果事件数据是大规模的,那是一项繁忙的工作。
我正在寻找最好的解决方案或任何第三方工具,以提供提醒功能。
发布于 2021-01-05 09:24:03
目前Google发布跟踪器上有一个开放的特性请求来添加一个用于提醒日历的API。
在这种情况下,您可以做的是将问题定位为这里,并最终添加一个注释,说明您对此功能的需求。
解决办法
您可以使用Apps脚本的时间驱动触发器,并触发Python脚本的执行。
在这种情况下,您必须收集应用程序脚本中的事件并检查它们的启动时间。如果启动时间小于事件的开始时间,则将触发Python脚本的执行。就Python脚本的执行而言,您可以将其托管在私有服务器或云上,并触发其执行。
代码
function getEvents() {
let today = new Date();
let calendar = CalendarApp.getCalendarById(id);
let events = calendar.getEventsForDay(today);
let startTime = today.getHours();
let params = {
'method': 'post',
'headers': {
'contentType': 'application/json',
},
'payload':'payload'
};
for (let i = 0; i < events.length; i++) {
if (events[0].getStartTime() <= startTime) {
UrlFetchApp.fetch('python_script_url', params);
}
}
}
为了确保getEvents
函数得到执行,您可以添加一个可安装的时间驱动触发器,它可以每10分钟运行一次,以触发上述函数的执行。
function createTrigger() {
ScriptApp.newTrigger('getEvents')
.timeBased()
.everyMinutes(10)
.create();
}
参考文献
https://stackoverflow.com/questions/65561569
复制相似问题