如何从列表中删除现有的同名日历,并在带有php的谷歌日历apiv3中创建和插入事件作为新日历


How to delete existing calender with same name from list and create and insert events as a fresh calender in google calender apiv3 with php

我正在尝试在我的网站中使用php集成谷歌日历APIv3。这个想法是每个用户在不同的日期根据他在网站上订阅的包有一组活动。如果用户稍后选择新包,则以前订阅的包中的所有事件都将被新包覆盖
对我来说,除了以下几点外,一切都很好
1) 当用户到达gmail日历呈现页面时,第一次在我的日历列表的左侧菜单上成功创建了一个日历(例如:我的第一部作品作为名称),并在上面插入了所有事件(例如:march1、march5、march8上具有不同标题的事件)
2) 当用户点击网站上的链接第二次呈现同一个日历时,它将再次在左侧菜单上创建我的日历列表(例如:我的第一个作品和我的第一件作品两个同名的日历)。在上一次日历插入上插入的所有事件都将在那里,第二次插入到相同日期也将在那里。(例如:3月1日、3月5日和3月8日相同日期的事件重复)
我想要的是,每次用户从网站点击渲染日历页面时,日历都应该被创建为一个新的日历(这是有效的),并且左侧菜单"我的日历列表"上同名的日历也应该被删除。这样就不会在同一日期出现重复的数据/事件。

有人能帮我找到解决方案吗
以下是我的代码片段

$service    = new Google_Service_Calendar($client);
$calendar   = new Google_Service_Calendar_Calendar();
$calendar->setSummary('My first work');
$calendar->setTimeZone( 'Asia/Kolkata');
$createdCalendar        = $service->calendars->insert($calendar);
$calendar               = $service->calendars->get($createdCalendar->getId());
$calendarList           = $service->calendarList->listCalendarList();
foreach($events_data_arr as $key=>$events_data_row)
{
$event = new Google_Service_Calendar_Event();
$event->setSummary($events_data_row['title']);
$event->setLocation('India');
$event->setDescription($events_data_row['description']);
$start = new Google_Service_Calendar_EventDateTime();
$start->setTimeZone('Asia/Kolkata');
$start->setDateTime($events_data_row['start_date'].'T10:00:00.000-07:00');
$event->setStart($start);
$end = new Google_Service_Calendar_EventDateTime();
$end->setTimeZone( 'Asia/Kolkata');
$end->setDateTime($events_data_row['end_date'].'T10:00:00.000-07:01');
$event->setEnd($end);
$createdEvent   = $service->events->insert($createdCalendar->getId(), $event);

}

以下代码帮助了我。

$calendarList=$service->calendarList->listCalendarList();

foreach($calendarList->getItems()作为$calendar ListEntry){

$delid      =   $calendarListEntry->getId();
$calname    =   $calendarListEntry->getSummary();
if(strtolower(trim($calname)) == "mycalendername")
{
    $service->calendarList->delete($delid);
    $service->calendars->delete($delid);
    //echo "ID= ".$delid    ."<br/>";
}

}

这个想法是使用从日历列表中获取所有日历

$calendarList=$service->calendarList->listCalendarList();

将名称与我们的日历名称相等的日历的日历id删除的日历。只有在这一步之后,才能开始创建并插入到我们的日历"mycalendarname"中。这将防止在用户的主日历列表中重复创建相同的日历名称,每次使用我们的代码都会创建一个具有新数据的新日历