如何使用 APIv1 将一个 Google 文档附加到另一个文档

How to append one Google Doc to another using APIv1

我正在编写一个合并程序。我不想为每个输入行创建一个文档,而是希望将每个输入行的合并(替换了输入值的模板)输出添加到单个文档中。

并且模板不仅仅是文本。这是另一个 Google 文档,带有独立的 table.

我从邮件合并示例开始,它工作正常,但为每个输入行生成一个单独的文档。我已经为每个输出文档编写了一个辅助函数,将“dest_doc”设置为我的摘要文档。

遗憾的是,这不起作用,因为 API 似乎只允许插入无样式的文本,而不是 contents-from-a-a-Doc。

它在使用 'hello world ' 时工作正常 -- 这已正确复制到输出文件中。但是当我用 bodybody['contents'] 替换它时,它失败了。

有什么办法吗?我不愿编写内容树到 UpdateRequest 的转换器。

def append_contents(dest_doc, source_doc):
    """Copy the contents of the source doc to the end of the destination doc
    """
    document = DOCS.documents().get(documentId=source_doc).execute()
    body = document.get('body')
    
    requests = [
         {
            'insertText': {
                'endOfSegmentLocation': {
                    'segmentId': '',
                },
                'text': 'hello world '
            }
        },
    ]
    
    DOCS.documents().batchUpdate(documentId=dest_doc, body={'requests': requests}).execute()
    return

感谢您的宝贵时间。

遗憾的是,您不能使用 insertText 请求将复杂对象(作为另一个文档的正文)附加到您的文档。此请求只接受文本。

恐怕这里唯一的解决方案是解析文档的元素并为它们的每一种类型创建一个请求转换器。

即使在 Apps 脚本中,如您在 this example 中所见,合并也是根据元素的类型(文本、Table、图像、段落等)按元素完成的。

但是,如果此功能对您来说真的很重要,您绝对应该提交功能请求here