Each night I run a scheduled task which takes the Google Analytics data for this Google Sites and matches it up to the site pages. At the time of writing I have 1000 different pages in analytics to match to 500 pages on this site.
The code is pretty straightforward, and will clean up the result of an analytics query and place it in a nicely formatted object. As usual I'm using exponential backoff to avoid rate limiting problems.
I call this for each time period in my report - I'm going for the past month, the past year, and all time - and then match up the analytics with the each page on the site.
This returns an array of objects like this - notice how the urls have spelling mistakes to deal with in the matching process.
See more like this in Displaying analytics data on site pages
Services > Desktop Liberation - the definitive resource for Google Apps Script and Microsoft Office automation > Fancy gadgets on Sites >