Sharepoint任务列表和Outlook同步

时间:2011-04-05 03:17:31

标签: sharepoint sharepoint-2007 sharepoint-list

我正在尝试将Sharepoint任务列表与Outlook同步。当用户将任务列表连接到Outlook时,Outlook中可以看到所有用户的任务。而不是在Outlook中应用过滤,我可以在源本身提供过滤吗?我的应用程序有相当多的用户,要求所有用户自己应用过滤器并不好。

还有其他建议吗?

感谢。

2 个答案:

答案 0 :(得分:3)

我问了同样的问题:Sync list with outlook only with items in current view.。在这种情况下,可以使用stssync协议来做任何你想做的事情。这需要很多努力(幸运的是有人已经写了implementation

但是我最终使用了另一个解决方案 - 为Lists.asmx webservice实现一个包装器并重写outlook请求(通过使用自定义Global.asax文件)来使用这个新的Web服务而不是Lists.asmx,它只查询特定的视图在列表中。

if (ctx.Request.UserAgent.Contains("Microsoft Office Outlook") && path.ToLower().IndexOf("_vti_bin/lists.asmx") >= 0)
            {
                ctx.RewritePath("/_layouts/OutlookLists.asmx");
            }  

我不确定你会想要这样的解决方案。如果你这样做,你可能会问,我可能会发布网络服务的解决方案来源,但是我不再自己使用这个网络服务了。您可以将它用作草稿,而不是生产就绪代码。

该来源已发布在CodePlex

关于脚本问题

我不知道为什么list id没有被视图id替换。我试图在脚本控制台(IE8 / 9的F12)

中运行该功能
>> var menuItems = document.getElementsByTagName('ie:menuitem');
for (var i = 0; i < menuItems.length; i++) {
        itm = menuItems(i);
        if (itm.id.match('OfflineButton') != null) {
            console.log('listName:' + ctx.listName.toLowerCase() + 'viewName:' + ctx.view.toLowerCase());
            if (ctx != null && ctx.listName != null && ctx.view != null) {
                console.log('Inside if block');
                //Replace listId to viewId being used so outlook will query only items in current view.
                //Must have custom web service in place to handle that request, because it iwll not work OOTB.
        console.log("Before: " + itm.onMenuClick);
                itm.onMenuClick = itm.onMenuClick.replace(ctx.listName.toLowerCase(), ctx.view.toLowerCase());
        console.log("After: " + itm.onMenuClick);
                break;
            }
        }
    } 
LOG: listName:{fe89e809-7de4-4f43-9bc2-7e8ce6624ed0}viewName:{7364a843-c7f2-47d8-b4a3-5dc7381b6248} 
LOG: Inside if block 
LOG: Before: javaScript:ExportHailStorm('tasks','https:\u002f\u002fserver\u002fsapulces\u002fdarbu_parskata','{fe89e809-7de4-4f43-9bc2-7e8ce6624ed0}','Uz\u0146\u0113muma darbu p\u0101rskata sapulce','Uzdevumi','\u002fsapulces\u002fdarbu_parskata\u002fLists\u002fUzdevumi','','\u002fsapulces\u002fdarbu_parskata\u002fLists\u002fUzdevumi'); 
LOG: After: javaScript:ExportHailStorm('tasks','https:\u002f\u002fserver\u002fsapulces\u002fdarbu_parskata','{7364a843-c7f2-47d8-b4a3-5dc7381b6248}','Uz\u0146\u0113muma darbu p\u0101rskata sapulce','Uzdevumi','\u002fsapulces\u002fdarbu_parskata\u002fLists\u002fUzdevumi','','\u002fsapulces\u002fdarbu_parskata\u002fLists\u002fUzdevumi'); 

如您所见,函数参数(第三个)已替换为视图ID而不是列表ID。

在部署之前不要忘记删除console.log语句,因为如果IE没有Web开发人员工具,那么javascript就会崩溃。

答案 1 :(得分:0)

这些任务是从工作流程创建的吗?这是SharePoint 2007的已知问题。

http://social.technet.microsoft.com/Forums/en/sharepointadmin/thread/64b3b124-085c-4d8e-8e85-8bd20736e0e7

http://blah.winsmarts.com/2007-4-SharePoint_2007__Fine_grained_permission_control.aspx

您可以尝试将读取/编辑权限设置为“仅限他们自己”,但我认为会打破工作中的批准/提醒

我认为问题已在SharePoint 2010中修复,我认为每个任务都会创建具有细粒度权限的任务。