如何创建一个 Google 文档,将常规文本作为 body?

How to create a Google Doc with regular text as the body?

我正在获取存储在 Google Sheet 中的信息,并尝试在 Google 文档中将其整齐地格式化。我正在使用 Google 文档 API here,但我没有遵循如何正确使用 JSON 表示的 'body:' 部分。

为了简单起见,您将如何创建一个标题为“Test”并且 body 只是说“Hello world!”的新文档。如果需要,我正在使用 Python 3.7.

感谢您的帮助!

我相信你的目标如下。

  • 来自 how would you create a new document with the title "Test" and the body just saying "Hello world!".,我了解到您想使用 python.
  • Hello world! 的文本作为新的 Google 文档上传

问题和解决方法:

我觉得在这种情况下,我想建议使用DriveAPI。因为现阶段使用Google Docs API时,需要调用2个API如下,因为documents.create的方法不能包含正文.

  1. 使用 documents.create 的方法创建新的 Google 文档。 Ref
  2. 使用documents.batchUpdate的方法上传文字。 Ref

所以,在这个回答中,我想建议在Drive API中使用Files: create的方法。 Ref使用此方法,一次API调用即可达到目的。

python 使用 googleapis 的示例脚本如下。

示例脚本:

这种情况下,请使用Quickstart的授权脚本。在这种情况下,请使用 https://www.googleapis.com/auth/drive 作为范围。

drive = build('drive', 'v3', credentials=creds)
text = 'Hello world!'
media = MediaIoBaseUpload(io.BytesIO(text.encode('utf-8')), mimetype='text/plain', resumable=True)
file_metadata = {"name": "Test", "mimeType": "application/vnd.google-apps.document"}
file = drive.files().create(body=file_metadata, media_body=media).execute()
print(file)
  • 当上述脚本为运行时,将创建文件名为Test的新Google文档,正文为Hello world!.
  • 在这种情况下,也使用from googleapiclient.http import MediaIoBaseUpload

注:

  • 如果需要使用Google文档API,也可以使用下面的脚本。在这种情况下,结果与上面的示例脚本相同。

      docs = build('docs', 'v1', credentials=creds)
      text = 'Hello world!'
      res1 = docs.documents().create(body={"title": "Test"}).execute()
      requests = [{"insertText": {"location": {"index": 1}, "text": text}}]
      res2 = docs.documents().batchUpdate(documentId=res1.get('documentId'), body={"requests": requests}).execute()
      print(res2)
    

参考文献: