3

我制作了一个简单的 PHP 脚本,可以将文件上传到 Google Drive。然后我运行以下函数:

function PublishToWeb($service, $fileId, $revisionId) {
  $patchedRevision = new Google_Revision();
  $patchedRevision->setPublished(true);
  $patchedRevision->setPublishAuto(true);
  $patchedRevision->setPublishedOutsideDomain(true);
  try {
    return $service->revisions->patch($fileId, $revisionId, $patchedRevision);
  } catch (Exception $e) {
    print "An error occurred: " . $e->getMessage();
  }
  return NULL;
}

我没有收到错误消息,但没有发布 word 文档。

当我尝试使用 Google API 资源管理器设置标志时,它不会返回任何错误,但也无法将已发布标志设置为 true。我错过了一些明显的东西吗?

为清楚起见,我尝试上传文件,然后立即模拟按下“发布到网络”。我也尝试使用 revisions.update

更新:

好的,我发现文档必须上传并转换为 google doc 格式才能发布。但是,当文档保存为谷歌文档时,它没有设置 headrevisionid,所以我不能使用 revisions.update 或 revisions.patch

有人知道如何发布 google doc 文件吗?

4

1 回答 1

4

好吧,我想通了。

上传文件时转换为谷歌文档

$createdFile = $service->files->insert($file, array(
  'data' => $data,
  'convert' => 'true',
));

然后将发布的标志更新为真

$revisionId = 1; //The revisionId for a newly created google doc will = 1
function updateRevision($service, $fileId, $revisionId) {
      $patchedRevision = new Google_Revision();
      $patchedRevision->setPublished(true);
      $patchedRevision->setPublishAuto(true);
      $patchedRevision->setPublishedOutsideDomain(true);
      try {
        return $service->revisions->patch($fileId, $revisionId, $patchedRevision);
      } catch (Exception $e) {
        print "An error occurred: " . $e->getMessage();
      }
      return NULL;
    }

然后构建发布的链接,因为这不是为您完成的

$PublishURL = 'https://docs.google.com/document/d/'.$fileId.'/pub';
于 2013-10-29T23:55:08.937 回答