kinlane
11/12/2013 - 10:08 PM

Deploy - Public Google Spreadsheet to API - Method

Deploy - Public Google Spreadsheet to API - Method

<?php

$fieldname = '$t';
$ShowWorksheet = 'product-private';

require_once 'config.php';
require_once 'google-api-php-client/src/Google_Client.php';
require_once 'google-api-php-client/src/contrib/Google_DriveService.php';

$client = new Google_Client();
// Get your credentials from the console
$client->setClientId($CLIENTID);
$client->setClientSecret($CLIENTSECRET);
$client->setRedirectUri($REDIRECTURL);
$client->setScopes(array('https://www.googleapis.com/auth/drive','https://spreadsheets.google.com/feeds'));

$service = new Google_DriveService($client);

$authUrl = $client->createAuthUrl();

$client->setAccessToken($TOKEN);

$pageToken = NULL;

$parameters = array();
if ($pageToken) {
    $parameters['pageToken'] = $pageToken;
}
$files = $service->files->listFiles($parameters);

//print_r($files);

$NumberOfSheets = 3;
$SheetCount = 1;

foreach($files['items'] as $file)
	{
		
	$mimeType = $file['mimeType'];
	$displayName = $file['title'];
	$methodName = strtolower($displayName);
	$methodName = str_replace(chr(32),"",$methodName);
	$fileId = $file['id'];
	
	//	print_r($file);
	// echo $displayName . "<br />";
	
	if($mimeType=='application/vnd.google-apps.spreadsheet' && $displayName == $ShowWorksheet)
		{
			
		//echo "(" . $mimeType . ") " . $displayName . " - " . $fileId . "<br />";

		$SpreadsheetURL = 'https://spreadsheets.google.com/feeds/worksheets/' . $fileId . '/private/full/?v=3.0&access_token=' . $ACCESSTOKEN . "&alt=json";		
		//echo '<a href="' . $SpreadsheetURL . '">' . $SpreadsheetURL . '</a><br />';		
		
		$SpreadsheetResults = file_get_contents($SpreadsheetURL);			
		$SpreadsheetResults = json_decode($SpreadsheetResults);
		//var_dump($SpreadsheetResults);
		
		$Sheet_Count = 1;
		
		// Each Sheet
		foreach($SpreadsheetResults as $Sheet)
			{
			
			// BEGIN REST			
			
			// Set the URL Path
			$route = '/' . $methodName . '/';
			$app->get($route, function () use ($app,$fileId,$Sheet_Count,$ACCESSTOKEN,$fieldname){
							
				$SpreadsheetContentURL = 'https://spreadsheets.google.com/feeds/list/' . $fileId . '/' . $Sheet_Count . '/private/full?v=3.0&access_token=' . $ACCESSTOKEN . "&alt=json";		
				//echo '<a href="' . $SpreadsheetContentURL . '">' . $SpreadsheetContentURL . '</a><br />';		
				
				$SpreadsheetContent = file_get_contents($SpreadsheetContentURL);			
				$SpreadsheetContent = str_replace('gsx$','',$SpreadsheetContent);
				$SpreadsheetContent = json_decode($SpreadsheetContent);
				$SpreadsheetRows = $SpreadsheetContent->{'feed'}->{'entry'};
			
				$ReturnData = array();
				  
				foreach($SpreadsheetRows as $SpreadsheetRow) 
					{

						// Build Product Array
						$P = array();											
						
						// For Each Spreadsheet Row in Service Worksheet
						$FieldCount = 1;
						foreach($SpreadsheetRow as $key => $value) 
							{
							
							// The first eight are default sheet, everything after are columns
							if($FieldCount > 8){		
					  			$P["$key"] = $SpreadsheetRow->$key->$fieldname;
								}
							$FieldCount++;
							}												
						
						array_push($ReturnData, $P);	
		
					}	
					
				// Return JSON
				$app->response()->header("Content-Type", "application/json");
				echo format_json(json_encode($ReturnData));	
			
			});
			
			
			// End REST
			$Sheet_Count++;
			}
		
		$SheetCount++;			
		}
	}			

?>