如何在自定义列表中启用“连接到Outlook”功能?

时间:2009-02-10 10:12:56

标签: sharepoint outlook synchronization

如何启用将自定义列表与Outlook 2007待办事项或日历列表同步的功能?我认为也可以使用自定义列表,但我找不到任何文档。

7 个答案:

答案 0 :(得分:4)

据我所知,这是不可能的。如果需要同步待办事项列表,请创建任务列表。然后,您可以删除所有不感兴趣的列,并添加要使用的列。

日历也是如此,如果您想要与Outlook日历同步的列表,则创建日历列表​​并根据您的需要进行自定义。

答案 1 :(得分:4)

扩展菲利普的好答案。 。

根据此MSDN post,自定义列表模板具有与任务模板不同的类型名称(100)(上文中的106,我在SP2010的研究中的107)。这是UI查看禁用Outlook同步按钮的内容。因此,如果您的自定义列表基于您创建的自定义内容类型,则可以重新创建列表以与Outlook兼容。

  1. 如果您的列表已包含数据,请将其导出到Excel
  2. 根据任务模板(而非自定义)
  3. 创建新列表
  4. 添加您的CT并删除任务CT(如果您的内容类型基于任务CT,即包含列)以及您的列表不需要的任何其他内容
  5. 添加您的列表需要的任何其他列但可能不是您的CT的一部分(或者如果您不使用自定义CT)
  6. 使用数据表视图将数据复制并粘贴到新列表中(观察列顺序)
  7. 警告:并非所有数据列都可以使用此方法复制(例如,附件,系统字段等)

    希望这有助于澄清

答案 2 :(得分:2)

这是可行的/可能的(实现它需要一些编程) - 见here

对于我的解决方案,我在站点之间聚合数据并将它们与outlook同步。有一些棘手的事情,比如将item的uniqueId映射到整数ID(可能是带有映射的数据库表)来正确引用特定项,但这并非不可能。

但这不是你可以马上使用的东西 - 需要编码。但是,如果你真的需要它,那么它还有一段路要走。

答案 3 :(得分:1)

是的,不可能遗憾。此外,如果您在任务列表或日历中创建自定义列,Outlook将不会同步这些列。

答案 4 :(得分:1)

如果您的自定义列表基于共享点列表,则可以通过生成基于stssync协议格式化的链接将其连接到Outlook。

我根据事件(日历)列表创建了一个自定义列表定义。

它使用基本日历列表模板以及一些自定义字段和表单。

我创建了一个按照stssync协议格式化的链接,并成功将其与outlook:

连接

stssync:// sts /?ver = 1.1& type = calendar& cmd = add-folder& base-url = [site url]& list-url = [your list url]& guid = [GUID列表]& site-name = [SiteName]& list-name = [ListName]

答案 5 :(得分:0)

我一直在努力解决同样的问题,并发现使用SharePoint所具有的内置功能无法做到这一点,但是有一个第三方程序允许这样做。您可以尝试使用ProperSync。它允许您从SharePoint连接自定义列表的自定义字段,并使用Outlook查看和编辑它们。

这是指向主网站的链接:http://propersync.com/default.aspx

答案 6 :(得分:0)

您可以覆盖列表功能区按钮,其中包含同步逻辑,并在其上创建自定义操作。

以下是关于创建彩带的好文章:http://blogs.msdn.com/b/sharepointdeveloperdocs/archive/2009/12/07/sharepointfoundationhowtoaddtabtoribbon.aspx

对于列表视图OutlookSyncButton,您应该在CommandUIDefinition中指定Location =" Ribbon.List.Actions.ConnectToClient"。 对于日历视图 - 您应指定Location =" Ribbon.Calendar.Calendar.Actions.ConnectToClient"。

现在,在CommandUIHandler / CommandAction中,您指定连接到outlook的JS代码(我只是从SP中获取它:)):

alert("Let's go!");

var listid = '{ListId}';           
var list;

ExecuteOrDelayUntilScriptLoaded(GetParamsAndSync, 'sp.js');

function GetParamsAndSync()
{
  var clientContext = new SP.ClientContext.get_current();
  var web = clientContext.get_web();
  list = web.get_lists().getById(listid);
  clientContext.load(list);
  clientContext.load(web);

  rf = list.get_rootFolder()
  clientContext.load(rf);

  clientContext.executeQueryAsync(
   function() {
      viewUrl=rf.get_serverRelativeUrl();
      ExportHailStormOverride('calendar','{SiteUrl}','{ListId}', web.get_title(),list.get_title(),viewUrl,viewUrl,'')
    }, 
    function() {alert('Error')});
}

//This function was taken from SharePoint sp.init.js
function  ExportHailStormOverride(type,weburl,guid,webname,listname,viewurl,passport,listrooturl,folderurl,folderid)
{ULSA13:;
    var strAppName=GetCookie('stsSyncAppName');
    var strIconName=GetCookie('stsSyncIconPath');
    var maxLinkLength=500;
    var maxNameLength=20;
    var link='stssync://sts/?ver=1.1'
            +'&type='+escapeProperly(type)
            +'&cmd=add-folder'
            +'&base-url='+escapeForSync(weburl)
            +'&list-url='+escapeForSync('/' 
            + makeAbsUrl(viewurl).substr(weburl.length+1)+'/')
            +'&guid='+escapeProperly(guid);
    if (window.self.offlineBtnUser !=undefined)
        link+='&user-id='+offlineBtnUser;
    var names='&site-name='+escapeForSync(webname)
            +'&list-name='+escapeForSync(listname);
    var context='';
    if (folderurl)
        context+='&folder-url='
             + escapeForSync('/'+folderurl.substr(listrooturl.length+1));
    if (folderid)
        context+='&folder-id='+folderid;
    if (link.length+names.length+context.length > maxLinkLength &&
        (webname.length > maxNameLength || listname.length > maxNameLength))
    {
        if (webname.length > maxNameLength)
            webname=webname.substring(0, maxNameLength-1)+'...';
        if (listname.length > maxNameLength)
            listname=listname.substring(0, maxNameLength-1)+'...';
        names='&site-name='+escapeForSync(webname)
             +'&list-name='+escapeForSync(listname);
    }
    link=link+names+context;
    var L_StssyncTooLong_Text='The name of site or list is too long. Make it shorter.';
    if (link.length > maxLinkLength)
        alert(L_StssyncTooLong_Text);
    else
    {
        try
        {
            window.location.href=link;

        }
        catch (e)
        {
            alert('Sync error.');
        }
    }
}