1 回答

TA貢獻1818條經驗 獲得超8個贊
我想提出以下修改建議。
修改要點:
您可以使用Drive API中“權限:創建”的方法授予權限。這一點在你的問題中已經提到過。在這種情況下,請求參數不能包含在Sheets API的“spreadsheets.create”方法中。請使用Drive API中的“權限:創建”方法請求。
當以上幾點反映到您的腳本中時,它會變成如下所示。
修改后的腳本:
$client = getClient();
$service = new Google_Service_Sheets($client);
$spreadsheet = new Google_Service_Sheets_Spreadsheet([
'properties' => [
'title' => "test_sheet3",
]
]);
$spreadsheet = $service->spreadsheets->create($spreadsheet, [
'fields' => 'spreadsheetId'
]);
printf("Spreadsheet ID: %s\n", $spreadsheet->spreadsheetId);
// I added below script
$drive = new Google_Service_Drive($client);
$newPermission = new Google_Service_Drive_Permission();
$newPermission->setEmailAddress('###@gmail.com');
$newPermission->setType('group');
$newPermission->setRole('writer');
$res = $drive->permissions->create($spreadsheet->spreadsheetId, $newPermission);
// print_r($res);
return $spreadsheet->spreadsheetID;
筆記:
在本例中,作為測試,我使用了https://www.googleapis.com/auth/drive. 為此,請使用以下腳本。當您修改范圍時,請包含刷新令牌的文件并重新授權范圍。這樣,修改的范圍就可以反映到訪問令牌中。請小心這一點。
$client->setScopes(array(Google_Service_Sheets::SPREADSHEETS, Google_Service_Drive::DRIVE));
當您想使用時group,type請設置電子郵件地址。
如果您想授予用戶權限,請修改$newPermission->setType('group');為$newPermission->setType('user');并請使用電子郵件地址。
- 1 回答
- 0 關注
- 140 瀏覽
添加回答
舉報