Google Drive API获取文件编辑网址

时间:2015-04-11 04:01:51

标签: google-drive-api google-docs google-docs-api google-api-php-client

自2015年4月20日起,Google Documents API v3.0已弃用,并且在此日期之后将不再运行功能。因此,使用此API的任何人都必须切换为使用Google Drive API。

我已将Google Drive API集成到我的PHP应用程序中,但我无法找到如何为我创建或上传的文件获取EDIT网址。以前在上传文件后的Google Documents API中,响应会返回一个编辑网址,该编辑网址将是编辑该文件的直接网址。

我正在使用一个服务帐户,该帐户使用https://console.developers.google.com处的Google开发者帐户生成的密钥。这意味着我的应用程序代表开发人员帐户为我创建的服务帐户拨打电话。无法通过云端硬盘用户界面访问Google云端硬盘服务帐户,因为您无法像使用个人Google帐户一样登录该帐户。

我所做的是与我的个人帐户共享我上传或创建的文档,并且通话中的网址google返回名为" alternateLink"它的格式如下: https://docs.google.com/file/d/0B0nkjw07ekP9LUpuZG4tOHcxdkE/edit?usp=drivesdk

但是,当我登录帐户时,我分享了上述文件,它只是发送给观众,而不是" Google文档编辑器"

如何使用Google Drive API获取文件的编辑链接?

4 个答案:

答案 0 :(得分:1)

您使用的链接是正确的,所以这不是问题。

答案 1 :(得分:1)

AlternateLink是编辑网址,在尝试使用google drive api上传或创建文档时,我的问题是uploadType值和文档类型的mime类型。

答案 2 :(得分:1)

主要问题是你必须在上传时设置转换为true。如果不转换文件,谷歌会为您提供查看不要编辑的链接。

Here您将获得文件上传详细信息。请检查以下代码我只添加了转换字段: -

$file = new Google_Service_Drive_DriveFile();
  $file->setTitle($title);
  $file->setDescription($description);
  $file->setMimeType($mimeType);

  // Set the parent folder.
  if ($parentId != null) {
    $parent = new Google_Service_Drive_ParentReference();
    $parent->setId($parentId);
    $file->setParents(array($parent));
  }

  try {
    $data = file_get_contents($filename);

    $createdFile = $service->files->insert($file, array(
      'data' => $data,
      'mimeType' => $mimeType,
      'convert' => true // To convert you file
    ));
    return $createdFile;
  } catch (Exception $e) {
    print "An error occurred: " . $e->getMessage();
  }

答案 3 :(得分:0)

文件编辑URL可以在 WebViewLink 文件属性下找到。您可以通过执行以下操作来检索它:

$sheetsList = $drive_service->files->listFiles([
  'fields' => 'files(id, name, webViewLink, webContentLink)',
]);

// You could be using $seetList->getFiles() to loop through the files.
// Here we're just picking the current one (any file) to get the WebViewLink for.
print $sheetsList->current()->getWebViewLink();

要调整文件权限,您可以使用:

$permissions = new \Google_Service_Drive_Permission();
$permissions->setRole('writer');
$permissions->setType('anyone');

$drive_service->permissions->create($file_id, $permissions);

setRole()setType()的可能值可在此处找到:https://developers.google.com/drive/api/v3/reference/permissions/create