Php 更改已上载图纸的权限

Php 更改已上载图纸的权限,php,google-drive-api,google-sheets-api,Php,Google Drive Api,Google Sheets Api,我遇到了一个问题,我有一个使用Sheets PHP API上传的工作表,现在我需要更改该工作表的权限。权限是在上传时设置的,还是以后更改的,对我来说并不重要。下面是我的上传代码 function createSheet(){ $client = getClient(); $service = new Google_Service_Sheets($client); $spreadsheet = new Google_Service_Sheets_Spreadsheet([

我遇到了一个问题,我有一个使用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 ex中包含任何设置时:

        'properties' => [
            'title' => "test_sheet3",
            'type' => 'group'
        ]
    ]);
我得到了错误

"Invalid JSON payload received. Unknown name \"type\" at 'spreadsheet.properties': Cannot find field."

因此,我不能完全确定我的语法是否不正确,或者是否应该将它们添加到不同的JSON附件中,而该附件不是JSON属性。

我建议进行以下修改

修改点:
  • 您可以使用驱动器API中的“权限:创建”方法授予权限。你的问题中已经提到了这一点。在这种情况下,请求参数不能包含在Sheets API中的“spreadsheets.create”方法中。请使用驱动器API中的“权限:创建”方法进行请求
当上述各点反映到脚本中时,它将变成如下所示

修改脚本: 注:
  • 在本例中,作为测试,我使用了
    https://www.googleapis.com/auth/drive
    。为此,请使用以下脚本。当您修改作用域时,请删除包含刷新令牌的文件并重新授权作用域。这样,修改后的作用域可以反映到访问令牌。请小心这个

      $client->setScopes(array(Google_Service_Sheets::SPREADSHEETS, Google_Service_Drive::DRIVE));
    
  • 当您想使用
    类型
    时,请设置电子邮件地址

  • 如果要将权限授予用户,请修改
    $newPermission->setType('group')
    $newPermission->setType('user')并请使用电子邮件地址

参考:

    • 我想提出以下修改

      修改点:
      • 您可以使用驱动器API中的“权限:创建”方法授予权限。你的问题中已经提到了这一点。在这种情况下,请求参数不能包含在Sheets API中的“spreadsheets.create”方法中。请使用驱动器API中的“权限:创建”方法进行请求
      当上述各点反映到脚本中时,它将变成如下所示

      修改脚本: 注:
      • 在本例中,作为测试,我使用了
        https://www.googleapis.com/auth/drive
        。为此,请使用以下脚本。当您修改作用域时,请删除包含刷新令牌的文件并重新授权作用域。这样,修改后的作用域可以反映到访问令牌。请小心这个

          $client->setScopes(array(Google_Service_Sheets::SPREADSHEETS, Google_Service_Drive::DRIVE));
        
      • 当您想使用
        类型
        时,请设置电子邮件地址

      • 如果要将权限授予用户,请修改
        $newPermission->setType('group')
        $newPermission->setType('user')并请使用电子邮件地址

      参考: