We have a requirement for a right hand pane set-of-links, which is essentially a set of shortcuts to the “APPS” that are within the SITE CONTENTS page. This will be shown on the home page of a SharePoint SPWeb, in a short list, rather than the user viewing all the big tiles, etc.
The basic steps are :
- Get the current SPContext for the web
- Get the AppTiles for the current web
- Cycle through, and get the TITLE and TARGET (URL) for each tile
- Inject the HTML in using jQuery
I simply saved this as a file called “allApps.htm” and then added a Content Editor WebPart. There are only a few lines of HTML – just a placeholder :
And then, there’s a stack of JavaScript – yay !
Here’s what it looks like when displayed in the CEWP, inside a Page – needs some CSS magic – but it works !
And – if you want to use the above technique – here’s the code :
var ctxCurrent; var ctxWeb; //get the SharePoint context SP.SOD.executeFunc('sp.js', 'SP.ClientContext', loadContext); function loadContext() { ctxCurrent = new SP.ClientContext.get_current(); ctxWeb = ctxCurrent.get_web(); loadAppTiles(); } function loadAppTiles() { //get the appTiles var appTiles = ctxWeb.get_appTiles(); ctxCurrent.load(appTiles); //go through them all - and find the app for 'class workspace provisioning'; ctxCurrent.executeQueryAsync( function onQuerySucceeded(sender, args) { if (appTiles.get_count() > 0) { //go through the appTiles - get the TITLE and TARGET - and jQuery them into the UL for (var i = 0; i < appTiles.get_count() ; i++) { //get the tile at the "i" number appTile = appTiles.getItemAtIndex(i); //grab the title and url appTitle = appTile.get_title(); appUrl = appTile.get_target(); //append to the UL - using jQuery var newLi = "<li><a href='" + appUrl + "' >" + appTitle + "</a></li>"; $jq('#currentApps ul').append(newLi); } } }, function onQueryFailed(sender, args) { console.error('getAppTile. Request failed. ' + args.get_message() + '\n' + args.get_stackTrace()); } ); }
Let me know if this was helpful – cheers !
🙂
8 thoughts on “Get SharePoint Apps for current web using JavaScript CSOM (Office 365)”