微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 REST API 为 SharePoint Online 列表创建新式日历视图

如何解决使用 REST API 为 SharePoint Online 列表创建新式日历视图

我一直在尝试通过 Power Automate 使用 REST API 在 SharePoint 中创建现代日历列表。

使用 UI 时,我见过的唯一方法是首先创建一个现代列表,添加开始和结束日期字段,然后使用这些字段创建现代日历视图。 (出于我的目的,我只需要标题、开始日期和结束日期。)

通过 REST API 遵循相同的过程,我能够很好地创建列表和字段。
但是,似乎没有关于为现代日历视图指定开始和结束日期字段的任何文档,所以当第一次打开视图时,它会给出这个令人讨厌的弹出窗口,告诉用户选择视图将使用的标题、开始和结束日期: Calendar View first opening popup

我的查询正文是:

{ '__Metadata': { 'type': 'SP.View'},'ViewType': 'HTML','ViewType2':'MODERNCALENDAR','Title': 'Calendar','defaultview': true
}

从我查询有效的日历视图时所看到的情况来看,似乎与开始日期和结束日期有关的唯一属性ListViewXmlHtmlSchemaXml,但两者都不是那些明确说明哪些字段用于视图中的开始和结束日期。
正确的 ListViewXML 示例:

<View Name=\"{F0105F06-6621-44AD-9E25-F3D0928D3048}\" Type=\"HTML\" displayName=\"Calendar\" Url=\"/sites/Test-1/Lists/Calendar/Calendar.aspx\" Level=\"1\" BaseViewID=\"1\" ContentTypeID=\"0x\" ImageUrl=\"/_layouts/15/images/generic.png?rev=47\" ><Query /><ViewFields><FieldRef Name=\"Start_x0020_Date\" /><FieldRef Name=\"End_x0020_Date\" /><FieldRef Name=\"LinkTitle\" /></ViewFields><RowLimit Paged=\"FALSE\">30</RowLimit><JSLink>clienttemplates.js</JSLink><Xsllink Default=\"TRUE\">main.xsl</Xsllink><ViewType2>MODERNCALENDAR</ViewType2><ViewData><FieldRef Name=\"LinkTitle\" Type=\"CalendarMonthTitle\" /><FieldRef Name=\"LinkTitle\" Type=\"CalendarWeekTitle\" /><FieldRef Name=\"LinkTitle\" Type=\"CalendarWeekLocation\" /><FieldRef Name=\"LinkTitle\" Type=\"CalendarDayTitle\" /><FieldRef Name=\"LinkTitle\" Type=\"CalendarDayLocation\" /></ViewData><Toolbar Type=\"Standard\"/></View>

正确的 HtmlSchemaXml 示例:

<View Name=\"{F0105F06-6621-44AD-9E25-F3D0928D3048}\" Type=\"HTML\" displayName=\"Calendar\" Url=\"/sites/Test-1/Lists/Calendar/Calendar.aspx\" Level=\"1\" BaseViewID=\"1\" ContentTypeID=\"0x\" ImageUrl=\"/_layouts/15/images/generic.png?rev=47\"><Query /><ViewFields><FieldRef Name=\"Start_x0020_Date\" /><FieldRef Name=\"End_x0020_Date\" /><FieldRef Name=\"LinkTitle\" /></ViewFields><RowLimit Paged=\"FALSE\">30</RowLimit><ViewType2>MODERNCALENDAR</ViewType2><Toolbar Type=\"Standard\" /><ViewData><FieldRef Name=\"LinkTitle\" Type=\"CalendarMonthTitle\" /><FieldRef Name=\"LinkTitle\" Type=\"CalendarWeekTitle\" /><FieldRef Name=\"LinkTitle\" Type=\"CalendarWeekLocation\" /><FieldRef Name=\"LinkTitle\" Type=\"CalendarDayTitle\" /><FieldRef Name=\"LinkTitle\" Type=\"CalendarDayLocation\" /></ViewData><Xsllink Default=\"TRUE\">main.xsl</Xsllink><JSLink>clienttemplates.js</JSLink><ParameterBindings><ParameterBinding Name=\"NoAnnouncements\" Location=\"Resource(wss,noXinviewofY_LIST)\" /><ParameterBinding Name=\"NoAnnouncementsHowTo\" Location=\"Resource(wss,noXinviewofY_DEFAULT)\" /></ParameterBindings></View>

我的问题是,是否有更好的方法来完成我正在尝试做的事情,或者是否有一种方法可以指定日历视图将通过 REST API 调用使用的开始和结束日期?

解决方法

尝试以下操作 -

{
    "parameters": {
        "__metadata": {
            "type": "SP.ViewCreationInformation"
        },"Title": "CalendarViewTitle","ViewFields": {
            "__metadata": {
                "type": "Collection(Edm.String)"
            },"results": [
                "StartDate","EndDate","Title"
            ]
        },"ViewTypeKind": 1,"ViewType2": "MODERNCALENDAR","ViewData": "<FieldRef Name=\"Title\" Type=\"CalendarMonthTitle\" /><FieldRef Name=\"Title\" Type=\"CalendarWeekTitle\" /><FieldRef Name=\"Title\" Type=\"CalendarWeekLocation\" /><FieldRef Name=\"Title\" Type=\"CalendarDayTitle\" /><FieldRef Name=\"Title\" Type=\"CalendarDayLocation\" />","CalendarViewStyles": "<CalendarViewStyle Title=\"Day\" Type=\"day\" Template=\"CalendarViewdayChrome\" Sequence=\"1\" Default=\"FALSE\" /><CalendarViewStyle Title=\"Week\" Type=\"week\" Template=\"CalendarViewweekChrome\" Sequence=\"2\" Default=\"FALSE\" /><CalendarViewStyle Title=\"Month\" Type=\"month\" Template=\"CalendarViewmonthChrome\" Sequence=\"3\" Default=\"TRUE\" />","Query": "","Paged": true,"PersonalView": false,"RowLimit": 0
    }
}

以上注意事项-

  1. RowLimit 设置为零 - 这是为了确保正确获取当前月/周/日的所有项目。
  2. StartDate 映射到 ViewFields
  3. 中的第 0 个条目
  4. EndDate 映射到 ViewFields 中的第一个条目
  5. ViewData 有 5 个 FieldRef 条目 - 1 个用于月视图,2 个用于周视图和日视图。这些字段用作各个可视化的“标题”。 如果缺少此项,您将看到“修复”日历视图的弹出窗口。
  6. CalendarViewStyles 有 3 个 CalendarViewStyle 条目 - 将来会使用。即使缺少此项,视图创建也会成功。
  7. ViewType2MODERNCALENDAR
  8. ViewTypeKind1 - 映射到 HTML。
  9. Query 可以根据需要设置。

如果您有任何问题,请告诉我。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。