1

SharepointタスクリストをOutlookと同期しようとしています。ユーザーがタスクリストをOutlookに接続すると、すべてのユーザーのタスクがOutlookに表示されます。Outlookでフィルタリングを適用するのではなく、ソース自体でフィルタリングを提供できますか?私のアプリケーションにはかなりの数のユーザーがいるので、すべてのユーザーに自分でフィルターを適用するように依頼するのはよくありません。

他に何か提案はありますか?

ありがとう。

4

2 に答える 2

3

私は同じ質問をしました:現在のビューのアイテムだけでOutlookとリストを同期します。。この場合、stssyncプロトコルを使用して必要なことを行うことができました。それは多くの努力を要します(幸いなことに誰かがすでに実装を書いています)

しかし、私が使用することになった別の解決策がありました-Lists.asmx Webサービスのラッパーを実装し、Outlookリクエストを(カスタムGlobal.asaxファイルを使用して)書き換えて、Lists.asmxの代わりにこの新しいWebサービスを使用し、リスト内の特定のビューのみをクエリします。

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

このような解決策が必要かどうかはわかりません。もしそうなら、あなたは尋ねるかもしれません、そして私はウェブサービスのソリューションソースを公開するかもしれません、しかし私はもうこのウェブサービスを自分で使っていません。また、本番用のコードではなく、ドラフトとして使用できます。

ソースはCodePlexで公開されています。

スクリプトの問題について

リスト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'); 

ご覧のとおり、関数の引数(3番目の引数)は、リストIDではなくビューIDに置き換えられています。

IEにWeb開発ツールがない場合、JavaScriptがそこでクラッシュするため、デプロイする前にconsole.logステートメントを削除することを忘れないでください。

于 2011-04-05T08:17:43.367 に答える
0

これらのタスクはワークフローから作成されましたか?これはSharePoint2007の既知の問題です。

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

読み取り/編集権限を「自分だけ」に設定してみることができますが、それでは承認/アラートが機能しなくなると思います

この問題はSharePoint2010で修正されていると思います。タスクは、タスクごとにきめ細かいアクセス許可で作成されると思います。

于 2011-04-05T03:25:41.240 に答える