2

I have one requirement to show the aggregated task list as a webpart in any page of SP 2013 on premise, where user will see the assigned task list directly without going onto my site. After some research I found a good article here , and from that I am just trying to read the task using Work management API of SharePoint Client Object Model.

I have simply copied and pasted the code in site page and tried to console the task items but it is giving me an error in sp.workmanagement.js as below:

TypeError: this.get_context is not a function

enter image description here

I am stuck since two days, still finding no solution. If anyone can help that would be very helpful.

I have also noticed that this code does work when I put the below script code in publishing page and the page is in edit mode.

<script type="text/javascript" src="/_layouts/15/sp.workmanagement.js"></script>
<script type="text/javascript">
var context, userSessionManager ,userSession , query , myTasks ;
$(document).ready(function () {
   ExecuteOrDelayUntilScriptLoaded(function () {
       context = new SP.ClientContext.get_current();
       ExecuteOrDelayUntilScriptLoaded(function () {
           userSessionManager = new SP.WorkManagement.OM.UserOrderedSessionManager(context);
           userSession = userSessionManager.createSession();
           query = new SP.WorkManagement.OM.TaskQuery(context);
           myTasks = userSession.readTasks(query);
       }, "sp.workmanagement.js");
       getMyTasks();
   }, "sp.js");
});

function getMyTasks() {
    context.load(myTasks);
    context.executeQueryAsync(onGetMyTasksSuccess, onGetMyTasksFail);
}

// This function is executed if the above call is successful
function onGetMyTasksSuccess() {
    console.log("Successfully retrieved tasks...");
    var taskEnumerator = myTasks.getEnumerator();
    while (taskEnumerator.moveNext()) {
        var task = taskEnumerator.current;
        console.log("Task: " + task.get_id() + " - " + task.get_name());
    }
}

// This function is executed if the above call fails
function onGetMyTasksFail(sender, args) {
    console.log('Failed to get tasks. Error:' + args.get_message());
}
</script>

So far I figured out that something of order or library reference is missing, but I am unable to get what's wrong with this.

1 Answer 1

2

Sorry to bother !

Found that, runtime reference of sp.js : sp.runtime.js was missing in code.

<script type="text/javascript" src="/_layouts/15/sp.runtime.js"></script>

So after I added the reference before sp.workmanagement.js, it worked ! ☺

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.