2

Google drive api 确实提供了一些示例来创建和更新电子表格。

但是,由于我们有不同的 csv,我们将设计更多。我正在寻找的是一个通用的解决方案,它将获取存储在 blobstore 中的 csv 的 url 并将这些文件保存在 Google 驱动器上。

4

2 回答 2

2

我的解决方案是这样的,借助 drEdit 示例:

  def get_data(self):
    blob_reader = blobstore.BlobReader(self.__blob_key__)
    data = blob_reader.read()
    fh = io.BytesIO(data)
    return fh

  def save_file(self, dest_filename, description, mime_type):
    service = self.create_drive()
    resource = {
      'title': dest_filename,
      'description': description,
      'mimeType': mime_type,
    }
    try:
      file_data = self.get_file_data()
      resource = service.files().insert(
          body=resource,
          media_body=MediaIoBaseUpload(
              file_data,
              mime_type,
              resumable=False)
      ).execute()
    except AccessTokenRefreshError:
      pass

调用 save_file:

  drive.save_file('testing_drive', 'testing....', 'text/csv')

或者

drive.save_file('testing_drive.csv', 'testing....', 'text/csv')

但是,此代码存在一个小问题。Google drive API 在上传时不会将此文件转换为电子表格,因此预览不起作用。要查看文件,我必须在电子表格中打开此文档,将文件转换为谷歌电子表格。我在API 文档中看到了有关转换选项的信息。但是,在使用 RPC 调用时,我找不到任何转换文件的方法。请建议我怎样才能做到这一点。

于 2013-01-22T10:52:36.623 回答
0

我知道没有通用的解决方案,但我们实际上是在谈论 4 或 5 行 Python 来实现这一点。

DrEdit Python示例将文件从 App Engine Python 保存到云端硬盘,使用 blobstore 将是一个简单的补充。

于 2013-01-22T02:49:29.947 回答