本文接上一篇,通过配置方式连接到一个Office 365组是非常简单的,但是对于我们程序员来说,应该从编程角度去理解和掌握连接到Office 365组的过程,本篇主要讲述如何通过编程方式来连接一个Office 365组。由于篇幅过长,会分成两部分,本篇和下一篇。

以编程方式连接到一个Office 365组

以编程方式去连接一个Office 365组,微软推荐我们遵循三个步骤:

  • 了解
  • 分析
  • 现代化

第一步:了解连接到Office 365组对我们的网站做了什么
了解连接到Office 365组对我们的网站做了什么是很重要的,因此我们可以先在一些测试网站通过上一篇提到的配置方式进行手动连接。评估中的一个重要方面是我们是否想要保持新创建的现代化主页。作为现代化进程的一部分,我们可以创建定制的主页,但是如果默认的主页就能满足我们的需求,微软更推荐保持默认的主页。

第二步:分析我们的网站环境
前面已经说过,如果我们要将成百的网站连接到Office 365组,通过用户接口的方式去做就不合适了。恰当的方式是通过调用API去以编程的方式实现。但是在做这个工作之前,我们最好先验证一下哪些网站可以连接到Office 365组,因为不是所有的网站都适合去连接的。
为了帮助我们清楚哪些网站适合连接到Office 365组,我们可以使用之前提到过的扫描工具SharePoint Modernization Scanner来分析我们的环境。下面列一些需要验证的关键项:

检查组连接障碍 (Blocker)
网站上的某些设置会阻碍网站成功转换到组连接网站:

  • IncompatibleWebTemplate - 网站的模板不支持转换成组连接
  • PublishingFeatureEnabled - 网站启用了发布功能
  • SiteHasOffice365Group - 网站已经连接到了一个Office 365组

在扫描器的结果中,将会把这样的网站的ReadyForGroupify字段设置为False。

检查组连接警告 (Warning)
网站中还可能有其他配置在连接到Office 365组时不是最优的。在扫描器中,会将这些内容标记为警告,因为它们对于网站连接到Office 365组不一定会导致问题,但是我们需要知道它们,并且如果有必要的话,在现代化网站之前或之后修复它们。
在扫描结果中,我们可以从字段GroupifyWarnings看到警告信息,基于这个警告信息,我们能从PermissionWarnings和ModernUIWarnings这两个字段获得更多的细节信息。在现代化网站之前我们首先去评估一下它是否还是业务相关的是非常明智的,扫描报告也包含了一些字段来展示最近的和周期性的视图以及网站的唯一用户。

下面列举一些可能发生的警告信息:

  • ModernUIIssues - 默认的现代化进程会为我们的网站创建一个新的现代化主页。然后,如果我们的网站禁用了现代化界面或者具有不兼容的自定义内容,我们可能想要首先确认网站是否对界面现代化就绪了。关于它的详细信息我们可以在ModernUIWarnings字段找到。
  • ADGroupWillNotBeExpanded - 当我们通过界面将网站连接到Office 365组时,我们可以通过选项定义Office 365组的所有者和成员;同样地在批量操作时,我们也有脚本去实现类似的操作(将在下一篇阐述)。然后,因为Office 365组只能包含人作为所有者或成员,也就是说如果我们通过Azure AD安全组对SharePoint网站进行授权的话,我们无法添加Azure AD安全组作为Office 365组的所有者或成员。如果我们想要只依赖于Office 365组的权限定义,我们必须单独添加所有Azure AD组的成员,但是在SharePoint网站和Office 365组定义相同的访问不是必须的,因此此项为警告项而不是障碍。
  • SiteHasSubSites - 在现代化工作组和社区网站中,子网站的用户被弱化了,我们可以直接现代化一个网站集。
  • DefaultHomePageImpacted - 默认情况下,现代化网站操作会创建一个新的主页,如果我们使用了跟传统工作组网站不同的网站模板,可能会影响网站的某些功能。

如果我们看到了一个ModernUIIssues警告,我们可以通过ModernUIWarnings字段获得更多信息:

  • ModernPageFeatureDisabled - 因为网站在现代化之后会具有一个现代化的主页,启用现代化主页功能是重要的。
  • ModernListsBlockedAtSiteLevel和ModernListsBlockedAtWebLevel - 禁用列表和库的现代化用户接口不会阻碍网站的现代化,但是现代化网站就应该是全新的界面,禁用它们是不合理的。
  • MasterPageUsed和AlternateCSSUsed - 自定义母版页或外部CSS不会在现代化页面中使用。如果我们的网站依赖于它们,我们就需要去验证并寻找可替代方案,因为它们在现代化网站中是不工作的。
  • UserCustomActionUsed - 通过嵌入JavaScript脚本来实现用户自定义操作是常见的方式,但是对于现代化页面同样是不工作的。我们需要使用SharePoint Framework扩展去开发替代的用户自定义操作。
  • PublishingFeatureEnabled - 发布功能跟现代化页面功能是不兼容的,需要关闭。

最后一个警告信息字段是PermissionWarnings:

  • SharingDisabledForSiteButGroupWillAllowExternalSharing - Office 365组网站的默认配置是允许进行外部共享,但是我们要进行现代化的网站可能将它禁用了。
  • SubSiteWithBrokenPermissionInheritance - 我们前面提到了子网站不是最优的但并不会阻碍现代化进程。如果我们拥有独立权限的子网站,这些子网站并不会继承对应Office 365组定义的权限。
  • PrivateGroupButEveryoneUsedOutsideOfAdminOwnerMemberGroups - 扫描结果会提示我们创建公有或私有的组,这是基于SharePoint网站管理员组、所有者组或成员组的everyone声明来做的。然而,我们可能在其他地方声明了everyone,所以就有了这个警告。

在下一篇我们将真正地去以代码地方式完成网站的现代化。