(为了更清晰,本文涉及谷歌文档列表API和Google Drive API在Google App Engine上的差异)
使用[现已停用的]文档列表API,我可以通过将其导出为HTML来编辑谷歌文档,修改HTML然后重新上传,作为新文档或对原始文档进行修改。这对于生成模板PDF文档等事情非常有用。我一直在尝试使用新的Drive API(V2)复制此功能,但似乎无法做到。
已经想出了以下解决方案...
上述代码将HTML文件上传为文件到Google Drive,而不是将HTML渲染为Google文档。这是有道理的。但是,我该如何让它呈现为Google文档,就像我使用Documents List API时所能做的那样?
另外一件事-如果我设置resumable=True,它会在App Engine上抛出以下错误-'_StreamSlice'没有len()。无法弄清楚如何使resumable=True工作?
最后一件事-文档中的示例代码使用MediaInMemoryUpload对象,然而如果您查看源代码,它现在已经被弃用,而推荐使用MediaIoBaseUpload。示例代码应该更新吗?!
使用[现已停用的]文档列表API,我可以通过将其导出为HTML来编辑谷歌文档,修改HTML然后重新上传,作为新文档或对原始文档进行修改。这对于生成模板PDF文档等事情非常有用。我一直在尝试使用新的Drive API(V2)复制此功能,但似乎无法做到。
已经想出了以下解决方案...
http = # authenticated http client
drive_service = build('drive', 'v2', http=http)
# get the file ...
file = drive_service.files().get(fileId=FILE_ID).execute()
# download the html ...
url = file['exportLinks']['text/html']
response, content = http.request(url)
# edit html
html = content.replace('foo', 'bar')
# create new file with modified html ...
body = {'title':'Modified Doc',
'description':'Some description',
'mimeType':'text/html'}
media_body = MediaIoBaseUpload(StringIO.StringIO(html), 'text/html', resumable=False)
drive_service.files().insert(body=body, media_body=media_body)
上述代码将HTML文件上传为文件到Google Drive,而不是将HTML渲染为Google文档。这是有道理的。但是,我该如何让它呈现为Google文档,就像我使用Documents List API时所能做的那样?
另外一件事-如果我设置resumable=True,它会在App Engine上抛出以下错误-'_StreamSlice'没有len()。无法弄清楚如何使resumable=True工作?
最后一件事-文档中的示例代码使用MediaInMemoryUpload对象,然而如果您查看源代码,它现在已经被弃用,而推荐使用MediaIoBaseUpload。示例代码应该更新吗?!
service.files().insert(body=resource, media_body=media, convert=True).execute()
- Sethish