【发布时间】:2013-06-20 21:00:59
【问题描述】:
首先,我要为这个不完全与 GAS 相关的问题道歉,尽管在我看来这显然是 Google Apps 脚本上下文中的“编程”问题。
在recent post about string replacements in Google Docs 中,我找到了一种非常可靠的方法来使用find() 方法替换字符串并在textElements 中删除/附加字符串。
正如我在这篇文章中提到的,这种方法非常有效,不受特殊字符的干扰,而且(非常)易于实现。
所以我很高兴并花了一些时间来处理各种名称和地址,并且在某些时候我发现了一个使搜索/替换过程崩溃并弄乱我的文档的条目。我花了一些时间来找出起源,但我终于明白了:
一个例子:一个叫 John 的人住在一条叫 John Kennedy street 的街道上,当我寻找John 在寻找(并替换为#marker#)之前John Kennedy street我死了! (说话的方式)因为它将 - 根据序列顺序 - 插入 John (实际上它将用对应于 John 的字段标记替换 John)代替对应于 John 的标记肯尼迪街 ...之后它将再也找不到约翰肯尼迪街(地址字段将类似于 #marker# Kennedy street !!!
所以问题是:
- 知道我确切知道将使用的所有字段
- 知道
find()工具始终以相同的方式在文档中以相同方向迭代 - 知道我有一个地方可以记住任何有用的参数以及字段名及其替换值
- 考虑到这个过程可以被逻辑地描述(我已经尽力了),并且我可以使用任何 Gas 特定或 javascript 方法...
了解所有这些,我该如何处理这种情况以防止出现此错误?
我一直在想这件事,但我没有找到任何好主意......
你会如何解决这个问题?
我最好的猜测是,我可以尝试使用 Google 文档的树结构来记住文档中每个项目的位置,并将其用作补充条件)但是因为这会非常复杂(可能有很多不同的本文档中的项目:表格,段落,列表...)我宁愿提前在这里问,因为如果有更简单的事情我没有想到,我会讨厌白白工作。
(感谢您阅读这篇长文。)
【问题讨论】: