Wednesday, December 23, 2015

SharePoint-hosted apps: Create a Custom List in Host Web using SharePoint REST API



var getQueryStringParameters = function(qsPara) {
    var paramArray = document.URL.split("?")[1].split("&");

    for (var i = 0; i < paramArray.length; i++) {
        var paraName = paramArray[i].split("=");
        if (paraName[0] === qsPara) {
            return paraName[1];
        }
    }
}

var getHostWebUrl = function () {
    var hostWebUrl = decodeURIComponent(getQueryStringParameters("SPHostUrl"));
    return hostWebUrl;
}


var createList = function (listName, baseTemplate, description) {
    var deferred = $.Deferred();
    var appWebUrl = _spPageContextInfo.webAbsoluteUrl;
    var hostWebUrl = getHostWebUrl();
    var executor = new SP.RequestExecutor(appWebUrl);
    var httpRequestUrl = appWebUrl + "/_api/SP.AppContextSite(@target)/web/Lists?@target='" + hostWebUrl + "'";

    executor.executeAsync({
        method: "POST",
        url: httpRequestUrl,
        body: "{ '__metadata': { 'type': 'SP.List' }, 'AllowContentTypes': true, 'BaseTemplate': " + baseTemplate + ", 'ContentTypesEnabled': true, 'Description': '" + description + "', 'Title': '" + listName + "' }",
        headers: {
            "accept": "application/json;odata=verbose",
            "content-type": "application/json;odata=verbose"
        },
        success: function (data, status, jqXHR) {
            deferred.resolve();
        },
        error: function (data) {
            deferred.reject();
        }
    });


    return deferred.promise();
}

// Create a List named as 'Projects' in Host Web 
createList("Projects", "100", "This lists consist of projects used by SharePoint CV App")


No comments:

Post a Comment