6

ड्राइव एपीआई के साथ संपादन गूगल डॉक्स

[अब पदावनत] दस्तावेज़ सूची API मैं Google दस्तावेज़ों को संपादित करने में सक्षम था के साथ

(स्पष्टता के लिए, इस पोस्ट Google App Engine पर अजगर के साथ गूगल Documents List API और Google Drive API के बीच अंतर से संबंधित है) एचटीएमएल के रूप में निर्यात करके, एचटीएमएल को संशोधित करना और फिर फिर से अपलोड करना, या तो एक नया दस्तावेज़ या मूल में संशोधन के रूप में। यह टेम्पलेट से पीडीएफ दस्तावेजों को उत्पन्न करने जैसी चीजों के लिए उपयोगी था। मैं इस कार्यक्षमता को नए ड्राइव एपीआई (वी 2) के साथ दोहराने की कोशिश कर रहा हूं, हालांकि इसमें असमर्थ लगता है।

इस के साथ आए हैं ...

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) 

ऊपर कोड Google डिस्क में एक फ़ाइल के रूप में एक HTML फ़ाइल अपलोड करता है, बल्कि उसके बाद आप एक Google दस्तावेज़ में HTML प्रतिपादन। काफी उचित, यह समझ में आता है। लेकिन मैं इसे Google डॉक के रूप में कैसे प्रस्तुत करूं, क्योंकि मैं दस्तावेज़ सूची API के साथ क्या करने में सक्षम था?

एक और बात - अगर मैं resumable = True सेट करता हूं तो यह ऐप इंजन पर निम्न त्रुटि फेंकता है - '_StreamSlice' में कोई लेन() नहीं है। यह पता नहीं लगाया जा सकता है कि कैसे शुरू किया जा सकता है = काम करने के लिए सच है?

और एक आखिरी बात - sample code in the docs MediaInMemoryUpload ऑब्जेक्ट का उपयोग करती है, हालांकि if you look at the source इसे MediaIoBaseUpload के पक्ष में अब हटा दिया गया है। नमूना कोड अद्यतन किया जाना चाहिए ?!

उत्तर

7

मुझे संदेह है कि समस्या यह है कि रूपांतरण के लिए डिफ़ॉल्ट सही से गलत हो गया है। आपको अपलोड पर कन्वर्ट = सत्य को स्पष्ट रूप से सेट करना होगा। https://developers.google.com/drive/v2/reference/files/insert

+0

पूरी तरह से सही देखें। विश्वास नहीं कर सकता कि मुझे याद आया। धन्यवाद! –

+0

लेकिन आप कन्वर्ट = सत्य कहां सेट करते हैं? उदाहरणों में से कोई भी वर्णन नहीं करता कि पैरामीटर कहां सेट हैं। पैचिंग service.files()। डालें()। Execute.uri त्रुटियों को फेंकता है, और न तो फाइलें और न ही डालने का सही तर्क लेने लगता है। Apiclient का रूबी संस्करण .execute() के लिए पैरामीटर तर्क लेता है। – Sethish

+2

सम्मिलित विधि के पैरामीटर के रूप में पास करें। इस drive_service.files() डालें। (बॉडी = बॉडी, media_body = media_body, कन्वर्ट = ट्रू) .execute()। यह यहां लिखा गया है https://developers.google.com/drive/v2/reference/files/insert –

संबंधित मुद्दे