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 关注
- 108 浏览
添加回答
举报