7

(明確にするために、この投稿は Python を使用した Google App Engine でのGoogle Documents List APIGoogle Drive APIの違いに関連しています)

[現在非推奨の] Documents list API を使用すると、HTML としてエクスポートし、HTML を変更してから、新しいドキュメントまたは元のドキュメントの変更として再アップロードすることで、Google ドキュメントを編集できました。これは、テンプレートから 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 ドキュメントにレンダリングするのではなく、HTML ファイルをファイルとして Google ドライブにアップロードします。なるほど、これは理にかなっています。しかし、Documents List API でできたように、Google ドキュメントとしてレンダリングするにはどうすればよいでしょうか?

もう 1 つ - resumable=True を設定すると、App Engine で次のエラーがスローされます - '_StreamSlice' has no len()。resumable=True を機能させる方法がわかりませんか?

最後にもう 1 つ - ドキュメントのサンプル コードはMediaInMemoryUpload オブジェクトを使用していますが、ソースを見ると、 MediaIoBaseUpload が優先され、現在は非推奨になっています。サンプルコードを更新する必要がありますか?!

4

1 に答える 1

7

問題は、変換のデフォルトが true から false に変更されたことだと思います。アップロード時に convert=true を明示的に設定する必要があります。https://developers.google.com/drive/v2/reference/files/insertを参照してください

于 2012-09-18T10:16:32.280 に答える