2

在我们公司,我们安装了 SharePoint 2013。在我还在运行 Office 2013 之前,我可以安装 OneDrive for Business 客户端,它允许我将我的 SharePoint 文档同步到我的本地 PC。我最近升级到 Office 2016 并且 OneDrive for Business 的安装被删除并替换为“新”一个驱动器。新的 OneDrive 允许与 OneDrive for business 同步,但我找不到与 SharePoint 同步的方法。

有谁知道如何将 SharePoint 与运行 Office 2016 的 PC 同步?

4

1 回答 1

4

这个问题已有一年多的历史了,但我遇到了同样的问题,并找到了解决方法。

我面临的具体问题是尝试将 Office 365 SharePoint 共享文档文件夹与我 PC 上安装的 OneDrive 客户端同步。单击在线共享文件夹上的“同步”按钮时,浏览器将尝试打开 OneDrive for Business 客户端。单击“打开 OneDrive for Business”将启动应用程序并开始同步。一两分钟后,客户端将返回“无法再使用此应用程序同步此库。要同步这些文件,请使用最新的 OneDrive 应用程序。”

为解决问题而采取的不成功步骤:

  • 卸载较新的 OneDrive 客户端
  • 删除 Office 帐户并重新进行身份验证
  • 强制 OneDrive.exe(新客户端)打开“同步”链接
  • 将 URL 复制到 SharePoint 文件夹,并将其作为库手动添加到 OneDrive for Business 客户端

经过一番研究和调试,微软似乎还没有更新 SharePoint for Office 365 以将更新的协议用于“下一代”OneDrive 客户端。OneDrive for Business,以前称为 Groove,使用 Groove Open 协议 (grvopen://) 与浏览器内容进行交互。新的 OneDrive 客户端使用不同的 OneDrive Open 协议 (odopen://)。

Groove Open 链接看起来像这样(为了便于阅读,在 & 添加了换行符):

grvopen://<url-encoded-path-to-library-here-including-https://>/{<SharePoint-list-id>}/<list-base-type>?OPENLIST&
siteId=<site-id>&
webId=<web-id>&
webTitle=<web-title>&
listId=<list-id-surrounded-by-braces>&
listTitle=<list-title>&
userEmail=<user-email>&
listTemplateTypeId=<list-base-template-id>&
webUrl=<url-encoded-absolute-path-to-folder>&
webLogoUrl=<relative-url-to-logo>&
webTemplate=<web-template>&
isSiteAdmin=<is-site-admin>

一个示例如下所示:

grvopen://https_58_47_47www_46sharepoint_46com_47Documents/_aahl00000000_450000_450000_450000_45000000000000%7D/101?OPENLIST&siteId=00000000-0000-0000-0000-000000000000&webId=00000000-0000-0000-0000-000000000000&webTitle=SharePoint%20Site%20Title&listId={00000000-0000-0000-0000-000000000000}&listTitle=Documents&userEmail=user@domain.com&listTemplateTypeId=101&webUrl=https%3A%2F%2Fwww.sharepoint.com%2FDocuments&webLogoUrl=_layouts%2F15%2Fimages%2Fsiteicon.png&webTemplate=1&isSiteAdmin=0

我不确定哪种编码会导致 URL 出现下划线,但这与解决方案无关。

我能够在 Office 365 中获取我的个人 OneDrive 目录以与我 PC 上正确的 OneDrive 客户端同步,因此我在单击“同步”时使用 Chrome 的开发工具来监控网络流量。流量显示了新 OneDrive 客户端的以下 URL 格式(添加换行符以提高可读性):

odopen://sync?
siteId=<site-id>&
webId=<web-id>&
webTitle=<web-title>&
listId=<list-id-surrounded-by-braces>&
listTitle=<list-title>&
userEmail=<user-email>&
listTemplateTypeId=<list-base-template-id>&
webUrl=<url-encoded-absolute-path-to-folder>&
webLogoUrl=<relative-url-to-logo>&
webTemplate=<web-template>&
isSiteAdmin=<site-admin>&
scope=OPENLIST

和一个示例网址:

odopen://sync?siteId=%7B00000000-0000-0000-0000-000000000000%7D&webId=%7B00000000-0000-0000-0000-000000000000%7D&webTitle=SharePoint%20Site%20Title&listId=%7B00000000-0000-0000-0000-000000000000%7D&listTitle=Documents&userEmail=email%40domain.com&listTemplateTypeId=101&webUrl=https%3A%2F%2Fwww.sharepoint.com%2FDocuments&webLogoUrl=_layouts%2F15%2Fimages%2Fsiteicon.png&webTemplate=1&isSiteAdmin=0&scope=OPENLIST

与 Groove 链接没有太大区别。_spPageContextInfo为了制作格式正确的 OneDrive URL,我编写了一个 JavaScript 小书签,以从SharePoint 网站的 DOM 中可用的全局 JavaScript 变量中提取必要的参数。

您可能已经注意到,上面包含 Guids 的参数是用花括号括起来的。从中提取的 Guid_spPageContextInfo已经用花括号包裹起来。

(function() {
    var siteId = _spPageContextInfo.siteId
      , webId = _spPageContextInfo.webId
      , webTitle = _spPageContextInfo.webTitle
      , listId = _spPageContextInfo.listId
      , listTitle = _spPageContextInfo.listTitle
      , userEmail = _spPageContextInfo.userEmail
      , listTemplateTypeId = _spPageContextInfo.listBaseTemplate
      , webUrl = _spPageContextInfo.webAbsoluteUrl
      , webLogoUrl = _spPageContextInfo.webLogoUrl
      , webTemplate = _spPageContextInfo.webTemplate
      , isSiteAdmin = (_spPageContextInfo.isSiteAdmin ? 1 : 0)
      , scope = "OPENLIST";

    var oneDriveURL = "odopen://sync?";
    oneDriveURL += "siteId="+encodeURIComponent(siteId);
    oneDriveURL += "&webId="+encodeURIComponent(webId);
    oneDriveURL += "&webTitle="+encodeURIComponent(webTitle);
    oneDriveURL += "&listId="+encodeURIComponent(listId);
    oneDriveURL += "&listTitle="+encodeURIComponent(listTitle);
    oneDriveURL += "&userEmail="+encodeURIComponent(userEmail);
    oneDriveURL += "&listTemplateTypeId="+encodeURIComponent(listTemplateTypeId);
    oneDriveURL += "&webUrl="+encodeURIComponent(webUrl);
    oneDriveURL += "&webLogoUrl="+encodeURIComponent(webLogoUrl);
    oneDriveURL += "&webTemplate="+encodeURIComponent(webTemplate);
    oneDriveURL += "&isSiteAdmin="+encodeURIComponent(isSiteAdmin);
    oneDriveURL += "&scope="+encodeURIComponent(scope);

    window.location.href = oneDriveURL;
}());

要使用上述代码,请在您选择的浏览器中创建一个新书签。将以下行复制并粘贴到书签目标中:

javascript: (function() { var siteId = _spPageContextInfo.siteId , webId = _spPageContextInfo.webId , webTitle = _spPageContextInfo.webTitle , listId = _spPageContextInfo.listId , listTitle = _spPageContextInfo.listTitle , userEmail = _spPageContextInfo.userEmail , listTemplateTypeId = _spPageContextInfo.listBaseTemplate , webUrl = _spPageContextInfo.webAbsoluteUrl , webLogoUrl = _spPageContextInfo.webLogoUrl , webTemplate = _spPageContextInfo.webTemplate , isSiteAdmin = (_spPageContextInfo.isSiteAdmin ? 1 : 0) , scope = "OPENLIST"; var oneDriveURL = "odopen://sync?"; oneDriveURL += "siteId="+encodeURIComponent(siteId); oneDriveURL += "&webId="+encodeURIComponent(webId); oneDriveURL += "&webTitle="+encodeURIComponent(webTitle); oneDriveURL += "&listId="+encodeURIComponent(listId); oneDriveURL += "&listTitle="+encodeURIComponent(listTitle); oneDriveURL += "&userEmail="+encodeURIComponent(userEmail); oneDriveURL += "&listTemplateTypeId="+encodeURIComponent(listTemplateTypeId); oneDriveURL += "&webUrl="+encodeURIComponent(webUrl); oneDriveURL += "&webLogoUrl="+encodeURIComponent(webLogoUrl); oneDriveURL += "&webTemplate="+encodeURIComponent(webTemplate); oneDriveURL += "&isSiteAdmin="+encodeURIComponent(isSiteAdmin); oneDriveURL += "&scope="+encodeURIComponent(scope); window.location.href = oneDriveURL; }());

注意:除非您位于“文档”页面或 SharePoint 网站的特定文档文件夹中,否则此小书签不起作用。即使登录页面上显示“共享文档”,它也无法从 SharePoint 网站的根页面运行。

于 2017-06-22T14:25:54.250 回答