ccc

API Google Excel: Manipular ficheros de excel que tengas en el Drive

composer require google/apiclient:"^2.0"
composer require asimlqt/php-google-spreadsheet-client

1. Ir a https://console.developers.google.com/
2. Crear un nuevo proyecto.
3. Habilitar la API de Google Drive API
4. Crear credenciales (crear una credencial de cuenta de servicio) y LO MAS IMPORTANTE cuando te salga el combo de opciones elegir "EDITAR"
5. Se te descargará un json con las credenciales el cual renombra como "client_secret.json"

Muy importante: en tu google drive tienes que dar permisos de compartir al fichero excel que quieras compartir para ello debes añadir la nueva cuenta de google que se te ha creado (por ejemplo: loquesea@xxxx-191012.iam.gserviceaccount.com)

Nuestro index.php será algo así como:
  require 'vendor/autoload.php';
  use Google\Spreadsheet\DefaultServiceRequest;
  use Google\Spreadsheet\ServiceRequestFactory;

  putenv('GOOGLE_APPLICATION_CREDENTIALS=client_secret.json');
$client = new Google_Client;
$client->useApplicationDefaultCredentials();

$client->setApplicationName("xxxxx");
$client->setScopes(['https://www.googleapis.com/auth/drive','https://spreadsheets.google.com/feeds']);

if ($client->isAccessTokenExpired()) {
    $client->refreshTokenWithAssertion();
}

$accessToken = $client->fetchAccessTokenWithAssertion()["access_token"];
// echo "accessToken:".$accessToken;exit;
ServiceRequestFactory::setInstance(
    new DefaultServiceRequest($accessToken)
);

    $spreadsheetService = new Google\Spreadsheet\SpreadsheetService();
$spreadsheetFeed = $spreadsheetService->getSpreadsheetFeed();


// $spreadsheet = $spreadsheetFeed->getEntries();
$spreadsheet = $spreadsheetFeed->getByTitle('excel_lsg.xlsx');

// Prueba 1
// $spreadsheet->addWorksheet('Tres', 50, 20);

// Prueba 2
    /*
$worksheetFeed = $spreadsheet->getWorksheetFeed();
    $worksheet = $worksheetFeed->getByTitle('Tres');
    $worksheet->delete();
    */
    // Prueba 3
    /*
    $worksheetFeed = $spreadsheet->getWorksheetFeed();
    $worksheet = $worksheetFeed->getByTitle('En un lugar de la mancha');
    $listFeed = $worksheet->getListFeed();

    foreach ($listFeed->getEntries() as $entry) {
        $values = $entry->getValues();
        print_r($values);
        echo "<br>";
    }
    */

    // Prueba 4
    $worksheetFeed = $spreadsheet->getWorksheetFeed();
    $worksheet = $worksheetFeed->getByTitle('En un lugar de la mancha');
    $listFeed = $worksheet->getListFeed();

    $row = array('nombre'=>'John', 'edad'=>25); // nombre y edad es el nombre de la columna en la Fila 1
    $listFeed->insert($row);

Más información en:
https://www.twilio.com/blog/2017/03/google-spreadsheets-and-php.html
https://packagist.org/packages/donhq/php-google-spreadsheet-client

No hay comentarios:

Publicar un comentario