【问题标题】:How to append one Google Doc to another using APIv1如何使用 APIv1 将一个 Google Doc 附加到另一个
【发布时间】:2020-10-06 04:25:17
【问题描述】:

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

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

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

遗憾的是,这不起作用,因为 API 似乎只允许插入无样式的文本,而不是来自文档的内容。

使用'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


    【解决方案1】:

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

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

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

    但是,如果这个功能对你来说真的很重要,你绝对应该提交一个功能请求here

    【讨论】:

      猜你喜欢
      • 2012-06-06
      • 2014-03-04
      • 2020-04-25
      • 1970-01-01
      • 1970-01-01
      • 2020-08-17
      • 1970-01-01
      • 1970-01-01
      • 2012-03-02
      相关资源
      最近更新 更多