/**
  * 
  * @param Google_Spreadsheet_CellEntry $cellEntry
  * @param string                        $index
  * @param Google_Spreadsheet_CellFeed  $cellFeed
  * 
  * @return string
  */
 protected function createEntry(Google_Spreadsheet_CellEntry $cellEntry, $index, Google_Spreadsheet_CellFeed $cellFeed)
 {
     return sprintf('<entry>
             <batch:id>%s</batch:id>
             <batch:operation type="update"/>
             <id>%s</id>
             <link rel="edit" type="application/atom+xml"
               href="%s"/>
             <gs:cell row="%s" col="%s" inputValue="%s"/>
         </entry>', 'A' . $index, $cellFeed->getPostUrl() . "/" . $cellEntry->getCellIdString(), $cellEntry->getEditUrl(), $cellEntry->getRow(), $cellEntry->getColumn(), $cellEntry->getContent());
 }
 /**
  * 
  * @param Google_Spreadsheet_CellFeed $cellFeed
  * 
  * @return string|null
  */
 public function createRequestXml(Google_Spreadsheet_CellFeed $cellFeed)
 {
     if (count($this->entries) === 0) {
         return null;
     }
     $xml = '<?xml version="1.0" encoding="UTF-8" ?>
         <feed xmlns="http://www.w3.org/2005/Atom"
         xmlns:batch="http://schemas.google.com/gdata/batch"
         xmlns:gs="http://schemas.google.com/spreadsheets/2006">';
     $xml .= '<id>' . $cellFeed->getPostUrl() . '/batch</id>';
     $i = 1;
     foreach ($this->entries as $cellEntry) {
         $xml .= $this->createEntry($cellEntry, $i++, $cellFeed);
     }
     $xml .= '</feed>';
     return $xml;
 }