Импорт данных из Google SpreadSheets таблиц

← разместить еще код

import data from google docs spreadsheets tables excel api v3 php. Реализация импорта данных из таблиц гугл докс по апи на пхп. Для этого требуется создание приложения в console.google, авторизация приложения по oauth2 и запросы по апи. А также библиотека google-api-php-client для работы с апи гугл докс.

Расшаренный код:

<?
set_include_path(get_include_path() . PATH_SEPARATOR . __DIR__ . '/google-api-php-client/src');
require_once 'Google/autoload.php';

define('APPLICATION_NAME', 'sheet2'); //название приложенис в консоли разработчика
define('CREDENTIALS_PATH', __DIR__ . '/.credentials/sheets.googleapis.com-php-quickstart.json'); //токены, которые получаем при первом запросе приложения
define('CLIENT_SECRET_PATH', __DIR__ . '/client_id.json');	//данные приложения, json-файл можно получить в консоли
define('SCOPES', implode(' ', array(
  Google_Service_Sheets::SPREADSHEETS_READONLY,Google_Service_Drive::DRIVE)
)); //права на приложения (для таблиц и документов)

// if (php_sapi_name() != 'cli') {
//   throw new Exception('This application must be run on the command line.');
// }	//чтобы не запускать через консоль

/**
 * Returns an authorized API client.
 * @return Google_Client the authorized client object
 */
function getClient() {
  $client = new Google_Client();
  $client->setApplicationName(APPLICATION_NAME);
  $client->setScopes(SCOPES);
  $client->setAuthConfigFile(CLIENT_SECRET_PATH);
  $client->setAccessType('offline');

  // Load previously authorized credentials from a file.
  $credentialsPath = CREDENTIALS_PATH;
  if (file_exists($credentialsPath)) {
    $accessToken = file_get_contents($credentialsPath);
  } else {
    // Request authorization from the user.
    $authUrl = $client->createAuthUrl();
    printf("Open the following link in your browser:\n%s\n", $authUrl);
    print 'Enter verification code: ';
    $authCode = '4/nTF53sT6aIPHpkqA7a8nX8CSFY8W3sRrUQ7k'; //код, который получаем после "Open the following link in your browser"

    // Exchange authorization code for an access token.
    $accessToken = $client->authenticate($authCode);

    // Store the credentials to disk.
    if(!file_exists(dirname($credentialsPath))) {
      mkdir(dirname($credentialsPath), 0700, true);
    }
    file_put_contents($credentialsPath, $accessToken);
    printf("Credentials saved to %s\n", $credentialsPath);
  }
  $client->setAccessToken($accessToken);

  // Refresh the token if it's expired.
  if ($client->isAccessTokenExpired()) {
    $client->refreshToken($client->getRefreshToken());
    file_put_contents($credentialsPath, $client->getAccessToken());
  }
  return $client;
}

function getSpreadSheet($spreadsheetId, $range) {
  // Get the API client and construct the service object.
  $client = getClient();
  $service = new Google_Service_Sheets($client);

  // $spreadsheetId = "1sGyOxb-clbxKxYHK-RD-eQ6vM7va9Gld5kAqkjgg";
  // $range = "Лист1!A1:B";
  $response = $service->spreadsheets_values->get($spreadsheetId, $range);
  $values = $response->getValues();
  if (count($values) == 0) {
    return "No data found";
  } else {
    return $values;
  }
}


//google docs spreadsheets
define('SHEET_ID', '12NYJq3aDhPijh1vLmGdANYTFw-OZGUWTG2kOZVs'); //id документа-таблицы
define('TAB_NAME', 'Sheet1'); //название вкладки
define('RANGE', 'A1:J');
$sheet = getSpreadSheet($spreadsheetId=SHEET_ID, $range=TAB_NAME.'!'.RANGE);
print_r($sheet); //массив ячеек