如何启用将自定义列表与Outlook 2007待办事项或日历列表同步的功能?我认为也可以使用自定义列表,但我找不到任何文档。
答案 0 :(得分:4)
据我所知,这是不可能的。如果需要同步待办事项列表,请创建任务列表。然后,您可以删除所有不感兴趣的列,并添加要使用的列。
日历也是如此,如果您想要与Outlook日历同步的列表,则创建日历列表并根据您的需要进行自定义。
答案 1 :(得分:4)
扩展菲利普的好答案。 。
根据此MSDN post,自定义列表模板具有与任务模板不同的类型名称(100)(上文中的106,我在SP2010的研究中的107)。这是UI查看禁用Outlook同步按钮的内容。因此,如果您的自定义列表基于您创建的自定义内容类型,则可以重新创建列表以与Outlook兼容。
警告:并非所有数据列都可以使用此方法复制(例如,附件,系统字段等)
希望这有助于澄清
答案 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.');
}
}
}