Google日历中的HTML格式文字事件说明

时间:2018-03-15 18:43:36

标签: google-api google-calendar-api

Google Calendar团队。

我们使用Google Calendar API为客户同步日历。 Event.description一直是纯文本。并且应该是纯文本,对吧?但是最近我们开始遇到我们的代码不准备处理的html格式文本的情况。

实际上有一个很长的关于新Google应用程序的帖子导致了这个问题: https://productforums.google.com/forum/#!topic/calendar/r3OC4cL53NQ

来自Google API团队的人可以就此问题发表评论吗?

实际上它非常有趣。 Google Cloud团队今天向我发送了邀请,我的Mac iCal中的事件描述是html垃圾。这都是因为谷歌日历应用程序开始将html写入使用Google Calendar API的任何人视为纯文本的字段。

即使是最初的iCalendar标准也只允许纯文本作为事件描述的一部分。文本描述字段中不允许使用HTML标记,例如字体属性(粗体,下划线)和布局(div,表格)。

4 个答案:

答案 0 :(得分:1)

我想我会在这里插话。

最初,谷歌合并了“Internet 日历标准”(ICAL -- 不是 iCal,仅适用于 mac),这是日历数据库的开放标准。它始于程序员想要替代 Microsoft 的 VCAL 标准(VISUAL CALENDAR STANDARD 的缩写——对他们的编程实用程序的引用,如果包含标题数据,则本机处理这些类型的项目)。当他们试图写一些不同的东西时,他们最终得到了一些非常相似的东西,而且两人最初以一种单向的交流模式合作得很好。一些程序员勇敢地编写了双向或多向模式,这些模式可以从 Microsoft Outlook 或使用 ICAL 的其他平台进行编辑。他们处理的问题是弄清楚如何格式化数据,因为 VCAL 可以使用 HTML(您可以从您在 Office 程序中创建的任何文档中复制或使用邮件合并操作来创建许多事件),而在 ICAL 中您只有纯文本;另一个问题是如何处理重复发生或重复发生的事件,因为 Exchange 将它们视为一块数据,并带有一个表示它们如何复制的修饰符。微软专注于内存空间,因为在创建程序时这是昂贵的,而开源则专注于便利性和可移植性。这其中的大部分都没有改变。
Google 仍然使用 ICAL 标准作为如何制作日历的主要指南,因为它是可移植的,并且跨平台的编程是相似的。然而,随着越来越多的人使用更强大的系统,有足够的能力来处理一些视觉格式,谷歌已经“允许”在数据字段中添加 HTML。他们还没有做的是设置 API 的一部分来为您处理。您必须构建自己的数据处理程序来处理和显示 HTML。简而言之:您必须自己解析 HTML。
许多可视化平台实际上都有 HTML 实现。那么,最佳实践是只抓取一小部分文本,然后找出其中是否存在 HTML,如果需要,解析 HTML,然后显示。另一种选择是找到 HTML,然后将其删除。 GITHUB 和 SourceForge 上的存储库具有从文本中删除 HTML 并将其转换为纯文本的方法。 不过,我也遇到过同样的困惑,但不可否认的是,要解决的整体问题不同。在过去的 20 年里,我一直这样做。大量阅读并找到合适的人来增强我自己解决特定问题的能力,但最终,互连性和安全访问市场已开始协同工作,提供平台之间的链接。在 Google 生命周期的早期,这一切都必须使用 powershell 和 WinAMP apache 来完成,使用 javascript 将信息放入临时文件中,然后由相反的编程接口获取。这意味着将看门狗(检查文件等是否发生更改的应用程序)编程到每个系统中,然后让每个平台检查它是更新链的开始还是结束。它既令人生畏又笨拙,而且它被用于内部服务器,几乎没有多余的电量,但它运行了。最终,处理其中一个或两个 API 的地方将不得不购买大型服务器集来处理不同操作的处理负载,但其中大多数仍然局限于小集。只有一两个人转向“更大更好的业务”结构。现在大的都是混合的,小的通常只有一台服务器用于内部操作,并且它们的通信都是云。这一举动要困难得多。

答案 1 :(得分:0)

在Google的Calendar API第3版上。在他们的文档中,其内容如下:“事件描述。可以包含HTML。可选。”

来源:https://developers.google.com/calendar/v3/reference/events/insert

答案 2 :(得分:0)

物有所值。我已经能够使用非常基本的 HTML 更新 Google Calendar API (Google Events) 描述字段:

HTML 标题 <h1><h6>

换行符 <br>

换行符 <br>

横线<hr>

我怀疑其他人也能正常工作(下面是我的事件 js)。

let remarks = '<ul><li>Coffee</li><li>Tea</li><li>Milk</li></ul><br><hr><h2>h2 tag!</h2>'
            let event = {
                "description":
                '<hr> Super limited HTML!: ' + remarks,
                "colorId": colorID,
                "summary": SOtitle,
                "end": {
                    "dateTime": end,
                    "timeZone": $rootScope.app.timezone
                },
                "attendees": attendeesArrray,
                "sendUpdates": "all",

                "start": {
                    "dateTime": start,
                    'timeZone': timezone
      },
  };

enter image description here

答案 3 :(得分:0)

是的,最新的更新“允许”了一些 HTML 标签。您必须从其他相互通信的链接日历中符合您的 HTML,并且大多数没有简单的方法来做到这一点。但是,对于简单的文本格式,您不必再担心。除此之外,我建议如下: 使用附件。如果一台服务器上的消息包含 HTML,您可以将其收集到文件附件中,然后在描述框中粘贴指向您需要编辑信息的位置的链接。这样,只要您的链接处于活动状态,您就不必担心两者相互交谈。它会在浏览器中打开。如果给其他人,它会在附件中包含的文件中,您可以轻松处理。否则,唯一的方法就是测试它,看看你能混合多少。我还没有推它,但我可以。我只是稍微回归一下。

相关问题