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.
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.
It is possible to give permissions for domain accounts:
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 user@myCompany.com
]);
$this->driveService->permissions->insert($fileId, $domainPermission);
return $response;
}