首页 文章

将单个Google日历活动导出到ICS?

提问于
浏览
4

我目前正在研究在网页上显示来自多个Google日历的事件列表的可能性 . 目前,我正在使用WordPress的Google Calendar Events插件来显示网站上的事件(防火墙后面的开发网站,所以我无法共享链接);但是我想知道是否有任何简单的方法可以为每个单独的事件动态生成ICS文件 .

我们希望允许网站访问者将个别活动添加到他们的日历中,但Google Calendar Data API似乎只提供以ICS格式下载整个日历的选项 . 我尝试将带有eid(事件ID)的查询字符串附加到ICAL Feed地址的末尾,但仍会打开标准Google ICAL Feed,其中包含当前包含在日历中的所有事件 .

我有点熟悉从头开始动态构建ICS文件,过去曾经做过一次,从本地Perl日历程序中提取事件并为每个事件生成ICS文件;但如果有任何预先构建的API或PHP类已经设置为从各个Google Calendar事件构建ICS文件,我更愿意使用它们 .

3 回答

  • 3

    它真的很简单它只是一个页面,试试这个:(当然,你需要用自己的变量代替......)

    <?php
        /*
        * generates calendar ics file
        */ 
    
    if( 
        empty($_GET['summary']) || 
        empty($_GET['dtstart']) || 
        empty($_GET['dtend']) 
    ){
    header ("Location: /diary/this-week") ;
    exit();
    } 
    
      header("Content-type: text/calendar");
      header("Content-Disposition: attachment; filename=".urlencode($_GET['summary']).'-'.time().".ics");
      header("Pragma: no-cache");
      header("Expires: 0");
      echo 'BEGIN:VCALENDAR
    VERSION:2.0
    PRODID:councilsites
    METHOD:PUBLISH
    BEGIN:VEVENT
    URL:'. htmlentities( $_GET['url'] ) .'
    UID:'. htmlentities( $_GET['url'] ) .'
    SUMMARY:'. htmlentities( $_GET['summary'] ) .'
    DTSTAMP:'. date('Ymd\THis\Z') .'
    DTSTART:'. htmlentities( $_GET['dtstart'] ) .'
    DTEND:'. htmlentities( $_GET['dtend'] ) .'
    LOCATION:'. htmlentities( $_GET['location'] ) .' 
    END:VEVENT
    END:VCALENDAR';
    
    
    ?>
    
  • 0

    一些PHP库我能够通过谷歌挖掘,全部用于PHP,我打赌还有更多:

  • 0

    我还想为单个事件生成一个.ics文件 . 我没有提示't want to mess with PHP so I was going to use grymala' . 不幸的是我不知道我想导出的事件的calendarID所以我导出所有gcal 's calendars and edited the resulting file so that it only contained the calendar heading, footing, and vevent lsiting. I also deleted the calendar name thought I don' t知道是否有必要 . 我从来没有找到一种方法来获取特定日历的网址,因为gymala建议但我确实找到了这个help text .

    • 在页面左侧的日历列表中,将鼠标移到要导出的日历上 .

    • 您会在日历名称旁边看到一个下拉箭头 . 单击下拉箭头并选择日历设置 . (或者,单击“我的日历”旁边的下拉箭头,选择“设置”,然后从列表中单击相应的日历 . )

    • 单击页面底部“私人地址”部分中的ICAL按钮,然后单击显示的URL .

    • 将导出的文件保存到计算机上的所需文件夹中 . ,可能通过将该URL粘贴到另一个浏览器窗口,复制窗口文本,并将其粘贴到编辑器中 .

相关问题