3

SPServices(GetListItemsメソッド)を使用して、SharePointリストからいくつかの情報を取得しています。リストには、この「43#; JohnDoe」のようにセミコロンで区切られたユーザーの数値IDと名前(表示名)を返す「PeopleorGroup」タイプのフィールドが含まれています。このフィールド(返されたすべての行)のすべてのユーザーの電子メールアドレスが必要です。誰か助けてもらえますか?前もって感謝します。

4

2 に答える 2

4

ポール・ユー・ロック:)

ポールの最後のコメントから、私は必要なものを手に入れました。それは完璧だ。:)

必要なのは、通話に以下を追加することだけです

CAMLQueryOptions: "<QueryOptions><ExpandUserField>True</ExpandUserField></QueryOptions>",

だから私の例の呼び出しはこれになります

$().SPServices({ operation: "GetListItems", async: false, listName: "Assignees", webURL: "https://col.wow.telenor.com/sites/go/",
            CAMLViewFields: "<ViewFields Properties='True'/>",
            CAMLQuery: "",
            CAMLQueryOptions: "<QueryOptions><ExpandUserField>True</ExpandUserField></QueryOptions>",
            completefunc: function (xData,Status) {

                $(xData.responseXML).SPFilterNode("z:row").each(function () {

                    try {
                    //ows_Name1 is a field of type "People or Group" the after adding CAMLQueryOptions this field returns all the fields
                    // propeties of user i.e. Displayname,ID,email id, domain login, sip ID etc all separate by #
                        var title = $(this).attr("ows_Name1"); 
                    // Splitting the resultant string with # give you string array of all the properties. In my case email ID is at 
                    // index 3.
                        var userEmail = userText.split('#')[3];
                    // Below line is added to remove the trailing "," from email id
                        userEmail = userEmail.substring(0,userEmail.indexOf(','));

                    }
                    catch (e) {
                        alert('Exception: ' + e.message);
                    }
                });
            }
        });

申し訳ありませんがポール私はあなたの答えのマークを外し、これを1つの答えにする必要があります:)

于 2012-11-20T16:07:59.577 に答える
1

@ムジャバ、

私は以前、ユーザー名を取得し、PeopleサービスとSearchPrincipalsメソッドを使用してユーザー名を検索することでこれを実行しました...次に例を示します。

var userEmail = '';
var userId    = '43';
$().SPServices({
    operation:      "SearchPrincipals",
    searchText:     "John Doe",
    async:          true,
    completefunc:   function(xData, status){
        $(xData.responseXML).find("PrincipalInfo")
            .each(function(){
                var thisUser = $(this);
                if ($.trim(thisUser.find("UserInfoID").text()) == userId) {
                    userEmail = $.trim(thisUser.find("Email").text());

                    alert("User's email: " + userEmail);

                    return false;
                }
            });
    }
});

ポール。

于 2012-11-14T18:19:02.100 に答える