Ser*_*sas 1 google-apps-script
我需要在文本文档中替换一个唯一的字符串(实际上很多字符串,但每个字符串都是唯一的)所以我尝试doc.editAsText().replaceText(old$,new$);
但没有运气...这是我使用的代码,它复制一个包含字符串的模板被循环替换.
var doc = DocumentApp.openById(docId);;
var lib=["$titre","$nom","$prénom","$rue","$code","$ville","$pays"]
for(nn=1;nn<=selrange.length;++nn){
for(ll=0;ll<lib.length;++ll){
var old$ = (lib[ll]+nn).toString();
var new$ = selrange[nn-1][ll].toString();
var test = old$.replace(old$,new$);
Logger.log(new$+" = "+test);// this is indeed the new value
doc.editAsText().replaceText(old$,new$);
}
}
Logger.log(doc.getText())
}
Run Code Online (Sandbox Code Playgroud)
记录器显示文档的内容不变.我错过了什么?
编辑:有关信息,在此之后Henrique的答案是工作代码:
for(page=0;page<feuilles;++page){
var today=Utilities.formatDate(new Date(),FUS1,"dd-MM-yyyy")+"__"+Utilities.formatDate(new Date(),FUS1,"HH:mm")
var docname="IMPRESSION_page_"+Number(page+1)+"_"+today;
var docId=DocsList.copy(doctemplate,docname).getId();
var doc = DocumentApp.openById(docId);;
var lib=["titre","nom","prénom","rue","code","ville","pays"]
for(nn=1;nn<=16;++nn){
for(ll=0;ll<lib.length;++ll){
var olditem = ("#"+lib[ll]+nn+"#");
var newitem = selrange[nn-1+page*16][ll];
if(newitem==""){newitem=" "}
//Logger.log(olditem + " *"+newitem+"*")
doc.replaceText(olditem,newitem);
}
}
Utilities.sleep(300); // wait a bit between each doc creation
}
Run Code Online (Sandbox Code Playgroud)
问题是该Document.replaceText
函数将创建一个正则表达式,即使你传递一个字符串(实际上在文档示例:).并且String.replace
测试中的功能不会.这是区别:
var doc = DocumentApp.openById(docID);
var old$ = '$sample';
var new$ = '$replaced';
var test = 'foo $sample bar';
Logger.log(test.replace(old$, new$)); //old is treated as literal
Logger.log(test.replace(new RegExp(old$), new$)); //this is what replaceText does
doc.replaceText(old$,new$);
Logger.log(doc.getText());
Run Code Online (Sandbox Code Playgroud)
而且因为$
正则表达式中的特殊字符,它会使您的替换变得混乱.顺便说一下,它意味着文本的结尾,并且尝试在结束后匹配任何文本将永远不会工作,所以基本上你的搜索和替换什么都不做.
要解决这个问题,你要么逃避$
所有的字符串,例如"\ $ sample",要么不要将这个字符用作字段分隔符,这是一个糟糕的选择!使用#或在regex中没有特殊含义的任何其他char.
顺便说一句,即使你old$
和new$
变量看起来很难看.但那可能只是我:)
归档时间: |
|
查看次数: |
11474 次 |
最近记录: |