使用REST API为SharePoint Online列表创建现代日历视图 [英] Create Modern Calendar view for SharePoint Online List using the REST API

查看:9
本文介绍了使用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中的第0个条目
  3. EndDate映射到ViewFields中的第一个条目
  4. ViewData有5个FieldRef条目-1个用于月视图,2个用于周视图和日视图。这些字段被用作各自可视化的"标题"。如果缺少此选项,您将看到"修复"日历视图的弹出窗口。
  5. CalendarViewStyles有3个CalendarViewStyle条目-将在将来使用。即使缺少此选项,视图创建也将成功。
  6. ViewType2MODERNCALENDAR
  7. ViewTypeKind1-映射到HTML.
  8. Query可根据需要进行设置。

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

这篇关于使用REST API为SharePoint Online列表创建现代日历视图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆