<?php function get_goodle_drive_spreadsheet($url) { try { // We are going to use temporary file: $fh = fopen("php://temp", "w+"); if (!$fh) { throw new Exception("Can't open temporary file"); } $ch = curl_init($url); if (!$ch) { throw new Exception("Can't open cURL session"); } curl_setopt_array($ch, array( // Skip SSL havoc CURLOPT_SSL_VERIFYPEER => false, // Allow redirects (there will be loads!) CURLOPT_FOLLOWLOCATION => true, // Enable cookies (but use memory as storage) CURLOPT_COOKIEFILE => "", // Download to our temporary file CURLOPT_FILE => $fh, )); $r = curl_exec($ch); if ($r === false) { throw new Exception( "Failed downloading spreadsheet: " . curl_error($ch) ); } // Check if MIME is something CSV-related (to handle wrong document // key, invalid permissions, invalid sheet index) $mime_type = curl_getinfo($ch, CURLINFO_CONTENT_TYPE); if (!preg_match("/\bcsv\b/", $mime_type)) { throw new Exception("Invalid MIME type: $mime_type"); } curl_close($ch); // Now parse downloaded content as CSV rewind($fh); $result = array(); while (($row = fgetcsv($fh)) !== false) { $result[] = $row; } fclose($fh); return $result; } catch (Exception $e) { // Free resources in case of exception $ch && curl_close($ch); $fh && fclose($fh); throw $e; } } try { $url = "https://docs.google.com/..."; $data = get_goodle_drive_spreadsheet($url); print_r($data); } catch (Exception $e) { echo get_class($e) . ": " . $e->getMessage() . "\n"; } ?>