I want to create multiplle event sat once using javascript from a dialogflow bot

浪尽此生 提交于 2019-12-25 01:16:38

问题


I have a chatbot in dialogflow that gets users date input to create an event but when I wanted it to make multiple events in google calendar using multiple dates entered by the user it doesnt work the code I use gets the user date and time and creates the constants with it which I use later in the insert event function to create the events I am new to google calendar api and javascript so I am not sure what is wrong with my code

This is the code I use


 function makeAppointment2 (agent) {
   const dateTimeStart = new Date(Date.parse(agent.parameters.date.split('T')[0] + 'T' + agent.parameters.time.split('T')[1].split('+')[0] + timeZoneOffset));
   const dateTimeEnd = new Date(new Date(dateTimeStart).setHours(dateTimeStart.getHours() + 1));
   const dateTimeStart2 = new Date(Date.parse(agent.parameters.date2.split('T')[0] + 'T' + agent.parameters.time2.split('T')[1].split('+')[0] + timeZoneOffset));
   const dateTimeEnd2 = new Date(new Date(dateTimeStart2).setHours(dateTimeStart2.getHours() + 1));
   const appointmentTimeString = dateTimeStart.toLocaleString(
     'en-US',
     { month: 'long', day: 'numeric', hour: 'numeric', timeZone: timeZone }
   );
   const appointmentTimeString2 = dateTimeStart2.toLocaleString(
     'en-US',
     { month: 'long', day: 'numeric', hour: 'numeric', timeZone: timeZone }
   );
   return createCalendarEvent2(dateTimeStart, dateTimeEnd, name, location, dateTimeStart2, dateTimeEnd2).then(() => {
     agent.add(`Great Mr/Mrs ${name}, your appointment has been scheduled on ${appointmentTimeString} & ${appointmentTimeString2}!.`);
     agent.add(`${response2}`);
   }).catch(() => {
     agent.add(`I'm sorry Mr/Mrs ${name}, there are no slots available for ${appointmentTimeString} Please choose another date.`);
   });



function createCalendarEvent2 (dateTimeStart, dateTimeEnd, appointment_name, location, dateTimeStart2, dateTimeEnd2) {
  return new Promise((resolve, reject) => {
    calendar.events.list({
      auth: serviceAccountAuth,
      calendarId: calendarId,
      timeMin: dateTimeStart.toISOString(),
      timeMax: dateTimeEnd.toISOString()
    }, (err, calendarResponse) => {

      if (err || calendarResponse.data.items.length > 0) {
        reject(err || new Error('Requested time conflicts with another appointment'));
      } else {

        calendar.events.insert({ auth: serviceAccountAuth,
          calendarId: calendarId,
          resource: {
   'summary': appointment_name + "1st" ,
   'description': location,
   'start': {
     'dateTime': dateTimeStart,
   },
   'end': {
     'dateTime': dateTimeEnd,
   },
 } ,
        }, (err, event) => {
          err ? reject(err) : resolve(event);
        }
        );
      }
    });
    calendar.events.list({
      auth: serviceAccountAuth,
      calendarId: calendarId,
      timeMin: dateTimeStart2.toISOString(),
      timeMax: dateTimeEnd2.toISOString()
    }, (err, calendarResponse) => {

      if (err || calendarResponse.data.items.length > 0) {
        reject(err || new Error('Requested time conflicts with another appointment'));
      } else {

        calendar.events.insert({ auth: serviceAccountAuth,
          calendarId: calendarId,
          resource: {
   'summary': appointment_name + "2nd" ,
   'description': location,
   'start': {
     'dateTime': dateTimeStart2,
   },
   'end': {
     'dateTime': dateTimeEnd2,
   },
  } ,
        }, (err, event) => {
          err ? reject(err) : resolve(event);
        }
        );
      }
    });

  });
}
}

来源:https://stackoverflow.com/questions/56702126/i-want-to-create-multiplle-event-sat-once-using-javascript-from-a-dialogflow-bot

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!