Generated Structured Data Files (SDFs) are stored in a ZIP
file. Download this
file using the value in the response.resourceName
field of the successful Operation
using media.download
.
Here's how to download a SDF ZIP
file:
Java
// Provide the name of the finished sdfdownloadtask operation. String operationName = operation - name ; // Provide the path for the output file. String outputFile = output - file ; // Retrieve the resource location from the finished operation. Operation operation = service . sdfdownloadtasks (). operations (). get ( operationName ). execute (); String fileLocation = operation . getResponse (). get ( "resourceName" ). toString (); // Configure the Media.download request. Media . Download downloadRequest = service . media (). download ( fileLocation ); // Create output stream for downloaded file. FileOutputStream outStream = new FileOutputStream ( outputFile ); // Download file. downloadRequest . executeMediaAndDownloadTo ( outStream ); System . out . printf ( "File downloaded at %s" , outputFile );
Python
# Import the object used for media download. from googleapiclient import http as googleHttp # Provide the name of the successfully completed sdfdownloadtask operation. operation_name = operation - name # Provide the path for the output file. output_path = output - path # Retrieve the completed operation. operation = ( service . sdfdownloadtasks () . operations () . get ( name = operation_name ) . execute () ) # Retrieve the file location from the operation. file_location = operation [ "response" ][ "resourceName" ] # Configure the media.download request. download_request = service . media () . download_media ( resourceName = file_location ) # Create output stream for downloaded file. out_stream = io . FileIO ( output_path , mode = "wb" ) # Build downloader object. downloader = googleHttp . MediaIoBaseDownload ( out_stream , download_request ) # Download file in chunks until finished. download_finished = False while download_finished is False : _ , download_finished = downloader . next_chunk () print ( f "File downloaded at { output_path } ." )
PHP
// Provide the name of the finished sdfdownloadtask operation. $operationName = operation-name ; // Provide the path for the output file. $outputFile = output-file ; try { // Call the API, retrieving the SDF Download Task. $operation = $this->service->sdfdownloadtasks_operations->get( $operationName ); $fileLocation = $operation->getResponse()['resourceName']; $client = $this->service->getClient(); $client->setDefer(true); $request = $this->service->media->download( $fileLocation, array('alt' => 'media') ); // Call the API, getting the generated SDF. $response = $client->execute($request); $responseBody = $response->getBody(); // Writes the downloaded file. If the file already exists, it is // overwritten. file_put_contents($outputFile, $responseBody); $client->setDefer(false); } catch (\Exception $e) { $this->renderError($e); return; } printf('<p>File downloaded at %s</p>', $outputFile);
Extract files
Extract generated SDFs from the ZIP
file. SDFs use generic file names
identifying their type. A line item SDF is named SDF-LineItems.csv
.
The ZIP
file may include "Skipped" files for each file type. "Skipped" files
identify resources not included in the SDF. They are named with a -Skipped
suffix. These files have a two column structure. The first column identifies the
skipped resource. The second column explains their exclusion.

