首页 > 解决方案 > 如何使用 APIv1 将一个 Google Doc 附加到另一个

问题描述

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

模板不仅仅是文本。这是另一个带有独立表格的 Google 文档。

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

遗憾的是,这不起作用,因为 API 似乎只允许插入无样式的文本,而不是 content-from-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

谢谢你的时间。

标签: google-docs-api

解决方案


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

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

即使在本示例中您可以看到的 Apps 脚本中,合并也是根据元素的类型(文本、表格、图像、段落等)对每个元素完成的。

但是,如果此功能对您真的很重要,您绝对应该在这里提交功能请求


推荐阅读