SharePoint 网站设计和网站脚本概述
备注
- 网站设计和网站脚本当前仅受 SharePoint Online 支持。
- 在以前版本的 SharePoint 中,网站模板称为网站设计,但将称为网站模板,这些模板将向前称为网站模板。
- SharePoint 具有新的网站模板体验,所有具有 SharePoint 网站创建权限的 SharePoint 用户都将可以使用该体验。 了解有关新网站模板体验的更多信息。
- 自目前起,无法禁用网站模板体验。
- 由你的组织创建并设置为默认模板的网站模板将在创建新网站时自动应用,但网站所有者可以通过依次选择“设置”和“应用网站模板”进行更新。
- 网站模板版本历史记录当前不适用于新网站模板体验,但将包含在将来的迭代中。
使用网站脚本和网站设计,可以通过自己的自定义配置,自动预配新的或现有的新式 SharePoint 网站。
如果组织中有人新建 SharePoint 网站,通常都需要确保一定水平的一致性。 例如,可能需要向每个新网站都应用适当的品牌和主题。 可能还需要有每次新建网站时都必须应用的详细网站预配脚本(如使用 PnP 预配引擎)。
本文介绍了如何使用网站设计和网站脚本提供要在新建网站时应用的自定义配置。
网站设计的工作原理
可以在每次新建网站时使用它们,以应用一组一致的操作。 还可以将它们应用于现有新式网站(与组连接的团队网站和通信网站)。 大多数操作通常影响的是网站本身,如设置主题或创建列表。 不过,网站设计也可以包含其他操作,如将新网站 URL 记录到日志或发送推文。
你可以创建网站模板并在 SharePoint 中将其注册到新式模板网站之一:团队网站或通信网站。你可以在以下步骤中了解其工作方式。
-
在开发人员租户上转到 SharePoint 起始页。
-
选择“创建网站”。
将看到两个新式模板网站:“团队网站”和“通信网站”。
-
选择“通信网站”。
通信网站提供 “选择设计” 框,其中包含以下网站设计:
- 主题
- 展示
- 空白
这些是默认网站设计。 每个网站设计都有标题、说明和图像。
如果选择了“团队网站”模板,其中只包含一个名为 “团队网站” 的默认网站设计。
若要详细了解如何更改默认网站设计,请参阅自定义默认网站设计。
在用户选择网站设计后,SharePoint 便会新建网站,并运行网站设计的网站脚本。 网站脚本包含新建列表或应用主题等操作的详细信息。 这些脚本操作在后台运行。 此时将显示一个通知栏,网站创建者可以单击该通知栏以查看正在应用的操作的状态。
脚本应用完成后,通知栏消息将更改为允许网站创建者刷新页面以查看应用脚本的结果或查看网站脚本详细信息。
网站所有者可以随时调用网站设计信息面板,以查看已对网站应用的网站设计(及其脚本详细信息)以及应用全新或更新的网站设计。
在脚本中的操作完成后,SharePoint 便会在进度窗格中显示这些操作的详细结果。
备注
现在可以将网站设计应用于先前创建的新式网站集。 有关详细信息,请参阅 REST API 和 PowerShell 文章。
网站脚本剖析
网站脚本是 JSON 文件,用于指定创建新网站时要运行的有序操作列表。这些操作将按列出的顺序运行。
下面的示例展示了包含两个顶级操作的脚本。 首先,它会应用之前创建的“Contoso 资源管理器”主题。 然后,它会创建“客户跟踪”列表。
{ "$schema": "https://developer.microsoft.com/json-schemas/sp/site-design-script-actions.schema.json", "actions": [ { "verb": "applyTheme", "themeName": "Contoso Explorers" }, { "verb": "createSPList", "listName": "Customer Tracking", "templateType": 100, "subactions": [ { "verb": "setDescription", "description": "List of Customers and Orders" }, { "verb": "addSPField", "fieldType": "Text", "displayName": "Customer Name", "isRequired": false, "addToDefaultView": true }, { "verb": "addSPField", "fieldType": "Number", "displayName": "Requisition Total", "addToDefaultView": true, "isRequired": true }, { "verb": "addSPField", "fieldType": "User", "displayName": "Contact", "addToDefaultView": true, "isRequired": true }, { "verb": "addSPField", "fieldType": "Note", "displayName": "Meeting Notes", "isRequired": false } ] } ], "version": 1 }
在 JSON 中,网站脚本中的每个操作都是由 谓词 值指定。 在上面的脚本中,第一个操作是由 applyTheme 谓词指定。 接下来,createSPList 谓词创建列表。 请注意,createSPList 谓词包含自己的一组谓词,用于仅对此列表执行其他操作。
可执行操作包括:
- 创建新列表或库(或修改在该网站中创建的默认列或库)
- 创建网站栏、内容类型和配置其他列表设置
- 设置网站品牌打造属性,如导航布局、页眉布局和页眉背景
- 应用主题
- 设置网站徽标
- 将链接添加到快速启动或中心导航
- 触发 Power Automate 流
- 从应用程序目录安装部署的解决方案
- 设置网站的区域设置
- 将主体(用户和组)添加到 SharePoint 角色
- 设置网站的外部共享功能
有关可用操作及其参数的完整列表,请参阅 JSON 架构。
备注
对于库和列表,请使用 PowerShell 命令 Get-SPOSiteScriptFromList 以便从现有 SharePoint 列表创建网站脚本语法。
预配后,可以在同一网站上重新运行网站脚本。 由于网站脚本不具有破坏性,因此它们可以在重新运行时,确保网站与脚本中的配置保持一致。
例如,如果网站上的现有列表与网站脚本要创建的列表同名,网站脚本只会向现有列表添加缺少的字段。
我们之前将网站脚本操作的限制限定为 30 个。 这也是使用 Invoke-SPOSiteDesign 命令同步应用脚本的限制,但根据客户反馈和出于对其他操作的支持,当异步应用脚本(通过 UI 或使用 Add-SPOSiteDesignTask 命令)时,我们已将此限制提高到 300 个操作(或 100,000 个字符)。
每个租户还有 100 个网站脚本和 100 个网站设计的限制。
使用 PowerShell 或 REST 处理网站设计和网站脚本
可以使用 PowerShell 或 REST API 创建网站设计和网站脚本。 下面的示例展示了如何创建网站脚本和使用网站脚本的网站设计。
C:> Get-Content 'c:scriptssite-script.json' ` -Raw | ` Add-SPOSiteScript ` -Title "Contoso theme and list" Id : 2756067f-d818-4933-a514-2a2b2c50fb06 Title : Contoso theme and list Description : Content : Version : 0 C:> Add-SPOSiteDesign ` -Title "Contoso customer tracking" ` -WebTemplate "64" ` -SiteScripts "2756067f-d818-4933-a514-2a2b2c50fb06" ` -Description "Creates customer list and applies standard theme"
在上面的示例中,Add-SPOSiteScript cmdlet 或 CreateSiteScript REST API 返回网站脚本 ID。此 ID 在后续调用 Add-SPO-SiteDesign cmdlet 或 CreateSiteDesign REST API 的过程中用于 SiteScripts 参数。
如果 WebTemplate 参数设置为值 64,表明是向团队网站模板注册此网站设计。 如果已禁用新式组创建,则可以使用 WebTemplate 1 来发布网站设计,使其显示“无组”团队网站模板。 如果设置为值 68,则表明是向通信网站模板注册。 如果新建团队网站,用户会在查看网站设计时看到 Title 和 Description 参数。
备注
网站模板可以运行多个脚本。脚本 ID 在数组中传递,并按列出的顺序运行。
若要逐步了解如何创建网站设计,请参阅开始创建网站设计。
使用 Power Automate 流执行 PnP 预配和自定义
网站脚本提供的一个操作是能够触发 Power Automate 流。 这样一来,可以指定在网站脚本原生提供的操作范围之外需要的任何自定义操作。
如果使用 PnP 预配引擎自动创建网站,可以使用 Power Automate 流与网站设计进行集成。 既可以维护所有现有预配脚本,也可以使用此技术新建自定义预配脚本。
此过程的运行机制如下:
-
脚本使用包含其他详细信息的 URL 实例化 Power Automate 流。
-
流向已配置的 Azure 存储队列发送消息。
-
消息触发调用已配置的 Azure 函数。
-
Azure 函数运行自定义脚本(如 PnP 预配引擎),应用自定义配置。
若要逐步了解如何为自己的 Power Automate 流配置 PnP 预配,请参阅使用 PnP 预配引擎生成完整的网站设计。
界定访问权限
可以将网站设计配置为只对组织中的特定组或人员显示。 这样一来,可以有效确保用户只看到专供自己使用的网站设计。 例如,你可能需要让会计部门只看到专供他们使用的网站设计。 向其他任何人显示会计网站设计可能都没有意义。
默认情况下,网站设计在创建后可供所有人查看。 使用 Grant-SPOSiteDesignRights cmdlet 或 GrantSiteDesignRights REST API 可以界定访问权限。 可以指定只有用户或启用邮件的安全组才能访问。
下面的示例展示了如何向 Nestor(虚构 Contoso 网站中的用户)授予对网站设计的查看权限。
Grant-SPOSiteDesignRights ` -Identity 44252d09-62c4-4913-9eb0-a2a8b8d7f863 ` -Principals "nestorw@contoso.onmicrosoft.com" ` -Rights View
若要详细了解如何界定访问权限,请参阅界定对网站设计的访问权限。