更改上传工作表的权限

我遇到了一个问题,我有一张已使用 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 附件中。


牧羊人nacy
浏览 119回答 1
1回答

弑天下

我想提出以下修改建议。修改要点:您可以使用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');并请使用电子邮件地址。
打开App,查看更多内容
随时随地看视频慕课网APP