Google 驱动器 API 获取文件编辑 URL

Google Drive API get file Edit URL

自 2015 年 4 月 20 日起,Google 文档 API v3.0 已弃用,在此日期及之后将不再起作用。所以任何使用此 API 的人都必须切换到使用 Google 驱动器 API.

我已将 Google 驱动器 API 集成到我的 PHP 应用程序中,但我找不到如何对我创建的文件进行编辑 url或上传。以前在 Google 文档 API 上传文件后,响应将 return 编辑 url 直接 url 编辑文件。

我正在使用一个服务帐户,该帐户使用我在 https://console.developers.google.com 的 google 开发人员帐户生成的密钥。这意味着我的应用程序正在代表开发者帐户为我创建的我的服务帐户进行调用。驱动器 UI 无法访问 google 驱动器服务帐户,因为作为用户,您无法像登录个人 google 帐户那样登录该帐户。

我所做的是共享我用我的个人帐户上传或创建的文档,并且调用中的 url google returns 被命名为 "alternateLink" 它的格式如下: https://docs.google.com/file/d/0B0nkjw07ekP9LUpuZG4tOHcxdkE/edit?usp=drivesdk

然而,当登录到我与之共享上述文件的帐户时,它只会发送给查看者,而不是 "Google Docs Editor"

如何使用 Google 驱动器 API 获取文件的编辑 link?

您使用的 link 是正确的,所以这不是问题所在。

AlternateLink 是编辑 url,我的问题是尝试使用 google 驱动器 [=] 上传或创建文档时文档类型的 uploadType 值和 mime 类型12=].

主要问题是您必须在上传时将 convert 设置为 true。不转换文件 google 会给你 link 查看而不是编辑。

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();
  }

文件编辑 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