Archive
#PS2013 #MSProject Online CSOM documentation links #ProjectServer #Office365
So as I continue my investigations into the CSOM for Project Server 2013 and Project Online (Office 365), I came across the following articles on MSDN.
Hopefully others will find these articles useful also:
High level project CSOM details
What’s new for developers in Project 2013 – CSOM
Client-side object model (CSOM) for Project Server 2013
Project Server CSOM – Sample Code – JavaScript and .NET
Getting started with the Project Server 2013 JavaScript object model
Getting started with the Project Server CSOM and .NET
How to: Create, retrieve, update, and delete projects by using the Project Server 2013 JavaScript object model
Project Professional 2013 CSOM – Sample Code – JavaScript
Project 2013 client programming
Task pane apps for Project Professional 2013
Task pane apps for Project
How to: Create your first task pane app for Project 2013 by using a text editor
JavaScript API for Office
Understanding the JavaScript API for Office
Schema map (apps for Office)
Retrieving the Project GUID with JavaScript CSOM #PS2013 #PS2010 #MSProject #Office365 #in
So the Microsoft Office preview is out and unfortunately my colleagues and I are still consulting on current and previous versions, so only limited time around client work allows for play. Luckily we have had access to earlier versions for several months now so as a company Corporate Project Solutions is prepared for 2013 and we are even running knowledge sessions and upgrade validation checks.
Moving on… whilst in the hotel, we started playing with Napa and the possibilities around what can and can’t be done.
Although this example is not relevant to Napa (due to the environment the apps run in), we did manage to product some code that would be useful for Sandbox Solutions or Composite solutions using the Content Editor Web Part in Project Online, Project Server 2013 and potentially Project Server 2010.
In this example, we use the SharePoint Client Side Object Model to view the property bag within a Project Site to retrieve the following:
- Internal Project UID
- Project Wep App URL
- Project Web App Site UID.
NB: The Project UID is for the plan associated within to the site in Project Server.
The Result
SharePoint CSOM code running within a Project Site in Project Online (Office 365 Preview)
Closer look at the output
So you may be wondering, why we need this information. Well with the introduction of Project Online / Project Server 2013, the client side object model can interact with the PSI to return Project and Resource data.
In many cases you will need the Project UID as a starting point!
Here are the details of getting things up and running in the IE Development Toolbar and trust me, there is much more CSOM goodness to come.
Final Code Example:
function getWebProperty() { var ctx = new SP.ClientContext.get_current(); this.web = ctx.get_web(); this.props = this.web.get_allProperties(); ctx.executeQueryAsync( Function.createDelegate(this, gotProperty), Function.createDelegate(this, failedGettingProperty) ); } function gotProperty() { alert("Project UID: " + this.props.get_fieldValues()["MSPWAPROJUID"] + "\nPWA URL: " + this.props.get_fieldValues()["PWAURL"] + "\nPWA Site UID: " + this.props.get_fieldValues()["MSPWASITEUID"] ); } function failedGettingProperty() { alert("failed"); } getWebProperty();
Debug Code Example:
To get this detail out, me and my colleague had to do some digging in the object model using debug code to alert out to the console values at the Web and Property object areas:
function getWebProperty() { var ctx = new SP.ClientContext.get_current(); for(var p in ctx) { console.log("T: " + p); } this.web = ctx.get_web(); this.props = this.web.get_allProperties(); ctx.load(this.web); ctx.load(this.props); ctx.executeQueryAsync( Function.createDelegate(this, gotProperty), Function.createDelegate(this, failedGettingProperty) ); } function gotProperty() { //alert(props.isPropertyAvailable('allowdesigner')); for(var itm in this.web){ console.log(itm); } for(var prop in props){ console.log(prop); } for(var fv in this.props.get_fieldValues()) { console.log(fv); } alert(this.props.get_fieldValues()["MSPWAPROJUID"]); } function failedGettingProperty() { alert("failed"); } getWebProperty();
Example References
Just in case you need to add sources for JavaScript frameworks. Here are some references below:
<script type="text/ecmascript" src="/_layouts/SP.Core.js" /> <script type="text/ecmascript" src="/_layouts/SP.Debug.js" /> <script type="text/ecmascript" src="/_layouts/SP.Runtime.Debug.js" /> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" />