使用python客户端从blobstore上传csv到google驱动器

时间:2013-01-21 06:19:40

标签: python-2.7 google-drive-api

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

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

2 个答案:

答案 0 :(得分: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')

但是,此代码存在一个小问题。谷歌驱动器API在上传时不会将此文件转换为电子表格,因此预览不起作用。要查看该文件,我必须在电子表格中打开此文档,将文件转换为Google电子表格。 我在API documentation中看到过转换选项。 但是,在使用RPC调用时,我找不到任何转换文件的方法。 请建议我如何实现这一目标。

答案 1 :(得分:0)

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

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