为了账号安全,请及时绑定邮箱和手机立即绑定

更改上传工作表的权限

更改上传工作表的权限

PHP
牧羊人nacy 2023-09-08 10:20:02
我遇到了一个问题,我有一张已使用 Sheets PHP API 上传的工作表,现在我需要更改该工作表的权限。权限是在上传时设置还是稍后更改对我来说并不重要。这是我的上传代码的样子function createSheet(){    $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);    return $spreadsheet->spreadsheetID;}我一直在研究这个谷歌文档,但每次我尝试在属性 JSON 中包含任何设置时,例如:        'properties' => [            'title' => "test_sheet3",            'type' => 'group'        ]    ]);我收到错误"Invalid JSON payload received. Unknown name \"type\" at 'spreadsheet.properties': Cannot find field."所以我不完全确定我的语法是否不正确,或者它们应该添加到不是属性 JSON 的不同 JSON 附件中。
查看完整描述

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');并请使用电子邮件地址。


查看完整回答
反对 回复 2023-09-08
  • 1 回答
  • 0 关注
  • 108 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信