在我正在处理的mailMerge脚本中,我用它.replaceText()来替换数据库中相应值的字段.
界面允许在文档中测试以查看结果是否按预期显示,并且我需要有一个'UNDO'函数来将我的字段放在原始位置,以便我可以将其与其他值一起使用.(此脚本有界到侧栏中的文档,请参阅此帖子以进行说明)
下面的脚本通过在内存中保留字段名称作为替换值来做得非常好.困扰我的唯一细节是我必须为当前测试数据中没有值的字段定义一个特殊的"空"标签,以防止在文档中丢失它们的轨道.(我使用了编号标识符,如°vide12°).
这是完美的工作,但它并不理想,因为测试模式下的文档并不完全代表最终文档,因为我使用了这些°videXX°...
问题是:当没有数据以不太明显的方式显示时,是否有人有更好的想法或其他方法来"本地化"替换数据?(我知道这听起来很奇怪......这就是我解释整个情况的原因:-)
考虑到Google Docs的构建方式,我认为我可以获得完整的元素结构并从该信息重建文档,但我担心这是不可能的,因为最小的元素是一个段落,而字段主要只是单个单词. ..
这是我使用的代码的相关部分,我添加了一些注释以使其(希望)清楚.
function valuesInDoc(e){ // this function replaces the fields with database values
var app = UiApp.getActiveApplication();
var listVal = UserProperties.getProperty('listSel').split(',');
var replacements = [];
var doc = DocumentApp.getActiveDocument();
var body = doc.getBody();
var find = body.findText('#ch');
if(find == null){var ui = DocumentApp.getUi() ; ui.alert("Aucun champ (#chX#) trouvé dans le document... Veuillez insérer des identifiants aux endroits souhaités");return app};
var curData = UserProperties.getProperty('selItem').split('|');
var Headers = [];
var OriHeaders …Run Code Online (Sandbox Code Playgroud)