Ich stehe vor der Herausforderung, eine HTML-Vorlage mithilfe von Python programmgesteuert in ein Google-Dokument einzufügen. Ich weiß, dass es im Google Docs-Editor oder in der Google Docs-API keine native/integrierte Funktionalität gibt, die mein Problem lösen kann, aber ich habe einige Tricks ausprobiert, um mein Ziel zu erreichen. Hier ignorieren wir „wo“ im Dokument, das wir einfügen sollen, denn jetzt reicht nur das erfolgreiche Einfügen.
Meine Methode ist:
application/vnd.google-apps.document
in Google Drive hoch, da Google Docs HTML automatisch in Doc konvertiert. (Nicht perfekt, aber effektiv) def insert_template_to_file(target_file_id, content): media = MediaIoBaseUpload(BytesIO(content.encode('utf-8')), mimetype='text/html', resumable=True) body = { 'name': 'document_test_html', 'mimeType': 'application/vnd.google-apps.document', 'parents': [DOC_FOLDER_ID] } try: # Create HTML as docs because it automatically convert html to docs content_file = driver_service.files().create(body=body, media_body=media).execute() content_file_id = content_file.get('id') # Collect html content from Google Docs after created doc = docs_service.documents().get(documentId=content_file_id, fields='body').execute() request_content = doc.get('body').get('content') # Insert the content from html to target file result = docs_service.documents().batchUpdate(documentId=target_file_id, body={'requests': request_content}).execute() print(result) # Delete html docs driver_service.files().delete(fileId=content_file_id).execute() print("Content inserted successfuly") except HttpError as error: # Delete html docs even if failed driver_service.files().delete(fileId=content_file_id).execute() print(f"An error occurred: {error}")
Das Problem ist: Was ich aus Schritt 2 erfahre, stimmt nicht mit den Anforderungen von batchupdate() überein. Ich versuche, die Dinge in Schritt 2 an Schritt 3 anzupassen, aber es ist mir noch nicht gelungen.
Ziellösung: Erhalten Sie die Zeichenfolge mit dem HTML-Code, Fügen Sie den gerenderten HTML-Code in die Zieldatei in Google Docs ein. Das Ziel besteht darin, den vorhandenen Inhalt der Zieldatei an den HTML-Code anzuhängen und ihn nicht zu überschreiben.
Ist mein Ansatz sinnvoll? Habt ihr noch weitere Ideen, um mein Ziel zu erreichen?
Wenn Sie jedoch HTML an ein vorhandenes Google-Dokument anhängen möchten, können Sie dies meiner Meinung nach nur mit der Laufwerks-API tun. Wie wäre es mit dem folgenden Beispielskript, wenn dies im Beispielskript widergespiegelt wird?
Beispielskript:
def insert_template_to_file(target_file_id, content): request = drive_service.files().export(fileId=target_file_id, mimeType="text/html") file = BytesIO() downloader = MediaIoBaseDownload(file, request) done = False while done is False: status, done = downloader.next_chunk() print("Download %d%%" % int(status.progress() * 100)) file.seek(0) current_html = file.read() media = MediaIoBaseUpload(BytesIO(current_html + content.encode('utf-8')), mimetype='text/html', resumable=True) body = {'mimeType': 'application/vnd.google-apps.document'} try: result = drive_service.files().update(fileId=target_file_id, body=body, media_body=media).execute() print(result) print("Content inserted successfuly") except HttpError as error: print(f"An error occurred: {error}")
target_file_id
Das obige ist der detaillierte Inhalt vonSo fügen Sie mit Python eine gerenderte HTML-Vorlage in ein Google-Dokument ein. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!