(Để rõ ràng, bài này liên quan đến sự khác biệt giữa Google Documents List API và Google Drive API trên Google App Engine với Python)docs Chỉnh sửa Google với ổ API
Với [bây giờ bị phản] Danh sách tài liệu API tôi đã có thể chỉnh sửa Google Documents bằng cách xuất dưới dạng HTML, sửa đổi HTML và sau đó tải lên lại, dưới dạng tài liệu mới hoặc dưới dạng sửa đổi đối với tài liệu gốc. Điều này rất hữu ích cho những thứ như tạo tài liệu PDF từ một mẫu. Tôi đã cố gắng để nhân rộng chức năng này với API Drive mới (V2), tuy nhiên dường như không thể.
đã đưa ra với điều này ...
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)
Đoạn mã trên tải lên một tập tin html dưới dạng tệp vào Google Drive, thay vì sau đó render HTML vào một tài liệu Google. Đủ công bằng, điều này có ý nghĩa. Nhưng làm cách nào để làm cho nó hiển thị dưới dạng Google Tài liệu, vì tôi có thể thực hiện với API danh sách tài liệu?
Một điều khác - nếu tôi đặt tiếp tục = Đúng, nó sẽ ném lỗi sau trên App Engine - '_StreamSlice' không có len(). Không thể tìm ra cách để có thể tiếp tục = True để làm việc?
Và một điều cuối cùng - sample code in the docs sử dụng đối tượng MediaInMemoryUpload, tuy nhiên if you look at the source hiện không được dùng nữa, ủng hộ MediaIoBaseUpload. Mã mẫu có nên được cập nhật không ?!
Hoàn toàn đúng. Không thể tin rằng tôi đã bỏ lỡ điều đó. Cảm ơn! –
Nhưng bạn đặt chuyển đổi = true ở đâu? Không có ví dụ nào mô tả các tham số được đặt ở đâu. Patching service.files() chèn(). Execute.uri ném lỗi, và không phải tập tin cũng như chèn dường như có tham số đúng. Phiên bản ruby của apiclient có tham số tham số là .execute(). – Sethish
Chuyển làm tham số cho phương thức chèn. Giống như drive_service.files(). Insert (body = body, media_body = media_body, convert = True) .execute(). Nó được ghi lại ở đây https://developers.google.com/drive/v2/reference/files/insert –