Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Google sheets API v4 Create sheet and invite users

I am using a service account authentication to create a google sheet using the Google Sheets API. I want to create a spreadsheet and somehow allow my team to open it.

    $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);

The sheet is beeing created, I receive response with

[spreadsheetId] => 34534534

However, I can't open this file through browser, using my google's account, even when Im added as the owner, editor, writer and reader in Google's developer console, in project's permissions. Browser says that I'm unathorized and I can contact administrator for permissions

Any suggestions? Has anyone managed how to create documents and give access to it for any "human"?

like image 298
Mike Avatar asked Jun 22 '16 12:06

Mike


People also ask

Can multiple users access Google Sheets at the same time?

Up to 100: You can let up to 100 people with view, edit, or comment permissions work on a Google Docs, Sheets, or Slides file at the same time.

How do I access a spreadsheet created by Google API?

To access the data stored in Google Sheets, you will need to create a service account and get a set of OAuth2 credentials from the Google API Console. Access the Google APIs Console while logged into your Google account. Create a new project and give it a name. Click on ENABLE APIS AND SERVICES .


1 Answers

A service account is a dummy user. It has its own drive account it owns the file it created on its account. The service account will need to give your personal google drive account access to said file. (Share it with you just like any other user)

Permissions: insert Inserts a permission for a file.

Note: You are currently authenticated to use the Google sheets API you are going to have to add google drive API (scope) to your code and your project on Google developers console. There is no way to change the permissions on a file via the google sheets API.

Yes you are going to have to add permissions for every member of your team who you want to allow to see / edit this file.

Tip: When you add google drive API try and do a files.list look for downloadUrl, alternateLink and embedLink in the results. Sometimes these are filled out and can be used for sharing viewable only to another user.

like image 174
DaImTo Avatar answered Nov 14 '22 20:11

DaImTo