trucos spreadsheets sheets script hoja google funcion ejemplos calculo apps php google-api google-spreadsheet google-api-php-client service-accounts

php - spreadsheets - Hojas de Google API v4 Crear hoja e invitar usuarios



google spreadsheets integration (2)

Estoy usando una autenticación de cuenta de servicio para crear una hoja de google utilizando la API de Hojas de cálculo de Google. Quiero crear una hoja de cálculo y de alguna manera permitir que mi equipo la abra.

$private_key = file_get_contents($rootDir . ''/config/googleApiCredentials.p12''); $client_email = ''[email protected]''; $scopes = implode('' '', ["https://www.googleapis.com/auth/drive"]); $credentials = new /Google_Auth_AssertionCredentials( $client_email, $scopes, $private_key ); // tried once with additional constructor params: // $privateKeyPassword = ''notasecret'', // $assertionType = ''http://oauth.net/grant_type/jwt/1.0/bearer'', // $sub = ''[email protected] $this->googleClient = new /Google_Client(); $this->googleClient->setAssertionCredentials($credentials); if ($this->googleClient->getAuth()->isAccessTokenExpired()) { $this->googleClient->getAuth()->refreshTokenWithAssertion(); } $service = new /Google_Service_Sheets($this->googleClient); $newSheet = new /Google_Service_Sheets_Spreadsheet(); $newSheet->setSpreadsheetId(''34534534''); // <- hardcoded for test $response = $service->spreadsheets->create($newSheet); print_r($response);

La hoja está siendo creada, recibo respuesta con

[spreadsheetId] => 1opxZmOf5dEPSLoKD1miMgwJRn643cXip6yCquPYxxx

Sin embargo, no puedo abrir este archivo a través del navegador, usando mi cuenta de Google, incluso cuando soy agregado como propietario, editor, escritor y lector en la consola de desarrollador de Google, en los permisos del proyecto. El navegador dice que no estoy atormentado y que puedo contactar al administrador para obtener los permisos

¿Alguna sugerencia? ¿Alguien ha logrado cómo crear documentos y dar acceso a él para cualquier "humano"?


Una cuenta de servicio es un usuario ficticio. Tiene su propia cuenta de unidad propietaria del archivo que creó en su cuenta. La cuenta de servicio deberá dar acceso a su cuenta personal de Google Drive a dicho archivo. (Compártalo con usted como cualquier otro usuario)

Permisos: inserte Inserta un permiso para un archivo.

Nota: actualmente está autenticado para usar la API de hojas de Google, tendrá que agregar la API de Google Drive (alcance) a su código y su proyecto en la consola de desarrolladores de Google. No hay forma de cambiar los permisos en un archivo a través de la API de hojas de google.

Sí, tendrá que agregar permisos para cada miembro de su equipo al que quiera permitir ver o editar este archivo.

Consejo: Cuando agregue la API de Google Drive, intente hacer una lista de archivos. Busque downloadUrl, alternateLink e incrusta en los resultados. A veces, estos se completan y se pueden usar para compartir solo para otro usuario.


Es posible dar permisos para cuentas de dominio:

private function createNewSheet($title) { $properties = new /Google_Service_Sheets_SpreadsheetProperties(); $properties->setTitle($title); $newSheet = new /Google_Service_Sheets_Spreadsheet(); $newSheet->setProperties($properties); $response = $this->sheetService->spreadsheets->create($newSheet); $fileId = $response[''spreadsheetId'']; $domainPermission = new /Google_Service_Drive_Permission([ ''type'' => ''domain'', ''role'' => ''writer'', ''value'' => ''myCompany.com'' //eg [email protected] ]); $this->driveService->permissions->insert($fileId, $domainPermission); return $response; }