Reactjs 在google calander中插入多个事件
我需要插入120事件从一个用户一次谷歌calander 我有一个React应用程序,它可以在120个不同的日期创建120份相同的提醒 我想将它们添加到日历中,并使用Reactjs 在google calander中插入多个事件,reactjs,google-calendar-api,google-api-js-client,Reactjs,Google Calendar Api,Google Api Js Client,我需要插入120事件从一个用户一次谷歌calander 我有一个React应用程序,它可以在120个不同的日期创建120份相同的提醒 我想将它们添加到日历中,并使用import{gapi}从“gapi脚本” 我尝试以如下方式单独发送事件: var event = { 'summary': nameValue.toString(), 'description': ReminderTextValues.toString(),
import{gapi}从“gapi脚本”
我尝试以如下方式单独发送事件:
var event = {
'summary': nameValue.toString(),
'description': ReminderTextValues.toString(),
'start': {
'date': ISODateString(javasScriptDate)
},
'end': {
'date': ISODateString(NextDate)
},
'reminders': {
'useDefault': false,
'overrides': [
{'method': "email", 'minutes': 24 * 60},
{'method': "popup", 'minutes': 30}
]
}
}
var request = gapi.client.calendar.events.insert({
'calendarId': 'primary',
'resource': event,
})
request.execute(event => {
console.log("Executed:", event)
})
// we will submit all the request in a 1 batch
var batch = gapi.client.newBatch();
// We will save the eevnt for the next 120 years
for (var startYear = HebrewDateEnteredByTheUser.year; startYear< (HebrewDateEnteredByTheUser.year+120); startYear++ )
{
// JS date
const javasScriptDate = new Date(day, month, startYear).addHours(1);
const NextDate = javasScriptDate.addHours(22);
// Google event
var event = {
'summary': nameValue.toString(),
'description': ReminderTextValues.toString(),
'start': {
'date': ISODateString(javasScriptDate)
},
'end': {
'date': ISODateString(NextDate)
},
'reminders': {
'useDefault': false,
'overrides': [
{'method': "email", 'minutes': 24 * 60},
{'method': "popup", 'minutes': 30}
]
}
}
batch.add(gapi.client.calendar.events.insert({
'calendarId': 'primary',
'resource': event,
}));
即使120事件中只有100个返回到calander中的403
(这是一个不同的问题),我看到实际上只有1个被添加
我还尝试使用批处理,如下所示:
var event = {
'summary': nameValue.toString(),
'description': ReminderTextValues.toString(),
'start': {
'date': ISODateString(javasScriptDate)
},
'end': {
'date': ISODateString(NextDate)
},
'reminders': {
'useDefault': false,
'overrides': [
{'method': "email", 'minutes': 24 * 60},
{'method': "popup", 'minutes': 30}
]
}
}
var request = gapi.client.calendar.events.insert({
'calendarId': 'primary',
'resource': event,
})
request.execute(event => {
console.log("Executed:", event)
})
// we will submit all the request in a 1 batch
var batch = gapi.client.newBatch();
// We will save the eevnt for the next 120 years
for (var startYear = HebrewDateEnteredByTheUser.year; startYear< (HebrewDateEnteredByTheUser.year+120); startYear++ )
{
// JS date
const javasScriptDate = new Date(day, month, startYear).addHours(1);
const NextDate = javasScriptDate.addHours(22);
// Google event
var event = {
'summary': nameValue.toString(),
'description': ReminderTextValues.toString(),
'start': {
'date': ISODateString(javasScriptDate)
},
'end': {
'date': ISODateString(NextDate)
},
'reminders': {
'useDefault': false,
'overrides': [
{'method': "email", 'minutes': 24 * 60},
{'method': "popup", 'minutes': 30}
]
}
}
batch.add(gapi.client.calendar.events.insert({
'calendarId': 'primary',
'resource': event,
}));
在此之后,我没有得到任何错误,在领事馆我看到所有的工作都完成了代码>但是当我检查日历时,我只能找到前5个事件,其余的都被忽略了
如何将120个事件一次插入google calander?您的症状与“超出403速率限制”错误一致。
您需要限制您的请求。前20个请求通常是可以的,但是在那之后,您需要将速度降低到大约每1.5秒一个请求。不要使用批处理,因为a)它已被弃用,b)它使问题变得更糟
我使用的方法是将所有请求放在内存队列(我使用数组)上,然后使用一个单独的例程,以每x秒一个的速率对项目进行出列。任何失败都会留在队列中并重试。我的算法有点启发性,它会逐渐提高速度,直到达到304,然后减速到2秒间隔。您的症状与“超过403速率限制”错误一致。
您需要限制您的请求。前20个请求通常是可以的,但是在那之后,您需要将速度降低到大约每1.5秒一个请求。不要使用批处理,因为a)它已被弃用,b)它使问题变得更糟
我使用的方法是将所有请求放在内存队列(我使用数组)上,然后使用一个单独的例程,以每x秒一个的速率对项目进行出列。任何失败都会留在队列中并重试。我的算法有点启发性,它会逐渐提高速度,直到达到304,然后降低到2秒的间隔。我知道新的备份系统一次只能发送5个请求。你试过把它分开吗。为什么要麻烦分批?为什么不一次发送一个呢?我试过了,他们失败了…你想在120天内插入相同的事件还是不同的事件?@Kessy他们是120年内不同日期的相同事件你可能想看看这个链接。您收到的与403
错误相关的消息是什么@开发上次我知道新的支持系统只允许您一次发送5个请求。你试过把它分开吗。为什么要麻烦分批?为什么不一次发送一个呢?我试过了,他们失败了…你想在120天内插入相同的事件还是不同的事件?@Kessy他们是120年内不同日期的相同事件你可能想看看这个链接。您收到的与403
错误相关的消息是什么@开发抱歉,没有。它与我的应用程序紧密相连。试试Freelorer.com抱歉,没有。它与我的应用程序紧密相连。试试自由职业者网站