用于设置SharePoint任务分配的JavaScript

时间:2017-04-12 20:36:20

标签: javascript sharepoint

我在这上面撞墙了。我从这里尝试过MS代码,代码 Set "Assigned To" on SharePoint task using Javascript object model

https://social.msdn.microsoft.com/Forums/SqlServer/en-US/2d9775ad-459c-46bc-989b-5d04d40a2f2f/javascript-how-to-reset-task-list-assigned-to-peoplepicker-field?forum=sharepointdevelopment

https://sharepoint.stackexchange.com/questions/137252/add-task-to-tasks-list-through-javascript-in-sharepoint-2013

https://msdn.microsoft.com/en-us/library/office/jj163201.aspx

和其他网站。

我有100%正常工作的代码,可以在我的sharepoint上创建一个新任务。唯一的问题是我似乎无法设置Assigned To字段。

这是我的......

// Start creating of new Tasks

    function createListItem(siteUrl) {
        var clientContext = new SP.ClientContext(siteUrl);
        var oList = clientContext.get_web().get_lists().getByTitle('Tasks');

        var itemCreateInfo = new SP.ListItemCreationInformation();
        this.oListItem = oList.addItem(itemCreateInfo);
        oListItem.set_item('Title', 'My New Item!');
        //oListItem.set_item('AssignedTo', "SID");
        oListItem.update();

        clientContext.load(oListItem);
        clientContext.executeQueryAsync(
            Function.createDelegate(this, this.onQuerySucceededCreate), 
            Function.createDelegate(this, this.onQueryFailedCreate)
        );
    }

    function onQuerySucceededCreate() {
        alert('Item created: ' + oListItem.get_id());
        retrieveListItems(site);
    }

    function onQueryFailedCreate(sender, args) {
        alert('Request failed. ' + args.get_message() + 
            '\n' + args.get_stackTrace());
    }
    createListItem(site);
    //End Create Task

我把所有内容都推回到这一点,只需创建没有分配给的任务。所以我尝试的一切都列在上面的链接中。我完全难以理解,因为它将任务分配给公司中的一些随机人员,而不是一件好事。

1 个答案:

答案 0 :(得分:0)

首先使用web.ensureUser()函数获取对用户对象的引用。 ensureUser()接受用户的别名,例如他们的登录名或电子邮件地址(可以在SharePoint用户个人资料服务中定义其他别名字段)。

然后,您可以获取用户的id属性,并使用该属性设置人员选择器字段的查找值。

下面是一个演示如何完成此任务的示例:

(function(siteUrl){

    var clientContext = new SP.ClientContext(siteUrl);

    getUser("contoso/JIMBO", // any valid user alias
        assignTask, // function to call on success
        alert // function to call on error
     );

    function getUser(username, onSuccess, onError){
        var user = clientContext.get_web().ensureUser(username);
        clientContext.load(user);
        clientContext.executeQueryAsync(
            function(){
                onSuccess(user);
            },
            function(sender, args){ onError(args.get_message()); }
        );
    }

    function assignTask(user){
        var oList = clientContext.get_web().get_lists().getByTitle('Tasks');
        var itemCreateInfo = new SP.ListItemCreationInformation();
        var oListItem = oList.addItem(itemCreateInfo);
        oListItem.set_item('Title', 'My New Item!');
        var assignedToValue = new SP.FieldUserValue();
        assignedToValue.set_lookupId(user.get_id());
        oListItem.set_item('AssignedTo',assignedToValue);
        oListItem.update();
        clientContext.load(oListItem);
        clientContext.executeQueryAsync(
            function(){
                onQuerySucceededCreate(oListItem);
            },
            function(sender, args){ 
                alert(args.get_message()); 
            }
        );
    }

    function onQuerySucceededCreate(oListItem) {
        alert('Item created: ' + oListItem.get_id());
        //retrieveListItems(site);
    }

})("http://contoso.com"); // site URL