我的代码目前在google文档中搜索预定义的开始标记,并找到相应的结束标记。标签的位置保留在变量中。
接下来,代码会运行并将标记之间的所有元素复制到第二个Google文档中。这按预期工作。
但是,源文档中保存的数据已经增长到100页。因此,搜索标记的脚本需要几秒钟的时间。这会增加查找标记并在它们之间复制元素所需的时间。
我的解决方案是使用一个主脚本来获取元素一次并将它们存储在Firebase或Firestore之类的内容中。然后我可以直接从DB访问元素。我尝试了几种存储Google文档元素的方法。
这就是我获取元素的方式。
var element = sourceDoc.getChild(j).copy(); // Gets Paragraph etc.
我的尝试包括。
是否有人尝试保存Google文档元素以供日后使用?
答案 0 :(得分:0)
似乎Google文档元素没有可以在Apps脚本环境之外使用的表示形式。我建议使用其他较小的文档来存储以后需要的元素。脚本可以根据需要创建文档(up to 250 per day)并稍后通过其ID访问它们。 ID是字符串;它们可以与您定位这些元素的某些键相关联,并且此信息可以通过JSON字符串化并存储在脚本属性中。
由于没有appendElement
方法,似乎必须首先按类型标识元素,然后追加到目标(而不是每个类型都由append方法支持)。
function storeElements() {
var elements = ... // your array of elements
var storage = DocumentApp.create("storage"); // if new is needed
var body = storage.getBody();
for (var i in elements) {
switch (selected[i].getType()) {
case DocumentApp.ElementType.INLINE_IMAGE:
body.appendImage(elements[i]); break;
case DocumentApp.ElementType.LIST_ITEM:
body.appendListItem(elements[i]); break;
case DocumentApp.ElementType.PARAGRAPH:
body.appendParagraph(elements[i]); break;
case DocumentApp.ElementType.TABLE:
body.appendTable(elements[i]); break;
case DocumentApp.ElementType.HORIZONTAL_RULE:
body.appendHorizontalRule(); break;
case DocumentApp.ElementType.PAGE_BREAK:
body.appendPageBreak(); break;
}
}
// store storage.getId(); in ScriptProperties
}