查找并删除空行
Find and remove blank line
我正在尝试创建一个受密码保护的方式来将我的签名放在 google 文档中并创建一个 PDF。我能够完成密码保护,添加签名,并发送到 PDF。这在下面没有显示,但我使用文档中已有的术语“{{Sig}}”来替换为图像文件。我不希望图像保留在 google 文档中。下面的代码删除了签名图像。但是,如果需要,我想把“{{Sig}}”术语放回去以允许将来签名。我可以通过在“{{Sig}}”应该出现的位置之前搜索“Sincerely”来做到这一点。但是,在“{{Sig}}”和我的名字之间最终多了一个空行。有没有找到并删除该行的方法?
function DelSig(fileID) {
var docTarget = DocumentApp.openById(fileID);
var docBody = docTarget.getBody();
var docImages = docBody.getImages();
var docText = docBody.getText();
var docImage = docImages[0];
docImage.removeFromParent();
myFunction = docReplace(docTarget, "Sincerely,", "Sincerely,\n{{Sig}}");
docTarget.saveAndClose();
docTarget = DocumentApp.openById(fileID);
docBody = docTarget.getBody();
}
此外,这是我的 docReplace 函数:
function docReplace(docTarget,oldStr,newStr) {
var docBody = docTarget.getBody();
docBody.replaceText(oldStr,newStr);
}
下面的三张图片显示了正在发生的事情。左图显示了我是如何在 Google 文档中开始的。中心图像是 PDF 的屏幕截图,矩形代表签名。右边的图像是它如何在 Google 文档中结束。该代码删除了签名图像,但留下了一个空行(或空段落?)。根据文档的不同,那个空段落会有不同的索引。有什么方法可以搜索并替换那个空段落吗?
Google 文档中的基本内容元素是段落。有可能你通过获取相应的段落就可以得到空行
如果您的名字在最后一段中,请尝试获取它之前的那个。
function removeParaBeforeLast(){
const body = DocumentApp.getActiveDocument().getBody();
const beforeLast = body.getParagraphs().slice(-2)[0];
beforeLast.removeFromParent();
}
相关
下面的修改似乎完成了我所追求的。您似乎无法搜索空行;但是,我能够使用 forEach 循环搜索上面的段落,然后将我想要的文本附加到空段落上。段落的 forEach 循环在处理 Google Docs 时似乎非常强大。
Ruben 的回答相当有效,尽管我不得不根据从底部开始的段落数引入一个新变量。我还 运行 遇到了一个我以前没有意识到的问题 - 即使用 \n 替换文本也没有添加段落。这导致“Sincerely”在第二次通过时无意中被替换,并且没有出现在 PDF 中。
function DelSig(fileID) {
var docTarget = DocumentApp.openById(fileID);
var docBody = docTarget.getBody();
var docImages = docBody.getImages();
var docImage = docImages[0];
docImage.removeFromParent();
var docPars = docBody.getParagraphs();
var fndTxt = false;
docPars.forEach(function (curPar) {
if(fndTxt == true) {
curPar.appendText("{{Sig}}");
fndTxt = false;
}
if(curPar.findText("Sincerely,") !== null) {
fndTxt = true;
}
});
docTarget.saveAndClose();
}
我正在尝试创建一个受密码保护的方式来将我的签名放在 google 文档中并创建一个 PDF。我能够完成密码保护,添加签名,并发送到 PDF。这在下面没有显示,但我使用文档中已有的术语“{{Sig}}”来替换为图像文件。我不希望图像保留在 google 文档中。下面的代码删除了签名图像。但是,如果需要,我想把“{{Sig}}”术语放回去以允许将来签名。我可以通过在“{{Sig}}”应该出现的位置之前搜索“Sincerely”来做到这一点。但是,在“{{Sig}}”和我的名字之间最终多了一个空行。有没有找到并删除该行的方法?
function DelSig(fileID) {
var docTarget = DocumentApp.openById(fileID);
var docBody = docTarget.getBody();
var docImages = docBody.getImages();
var docText = docBody.getText();
var docImage = docImages[0];
docImage.removeFromParent();
myFunction = docReplace(docTarget, "Sincerely,", "Sincerely,\n{{Sig}}");
docTarget.saveAndClose();
docTarget = DocumentApp.openById(fileID);
docBody = docTarget.getBody();
}
此外,这是我的 docReplace 函数:
function docReplace(docTarget,oldStr,newStr) {
var docBody = docTarget.getBody();
docBody.replaceText(oldStr,newStr);
}
下面的三张图片显示了正在发生的事情。左图显示了我是如何在 Google 文档中开始的。中心图像是 PDF 的屏幕截图,矩形代表签名。右边的图像是它如何在 Google 文档中结束。该代码删除了签名图像,但留下了一个空行(或空段落?)。根据文档的不同,那个空段落会有不同的索引。有什么方法可以搜索并替换那个空段落吗?
Google 文档中的基本内容元素是段落。有可能你通过获取相应的段落就可以得到空行
如果您的名字在最后一段中,请尝试获取它之前的那个。
function removeParaBeforeLast(){
const body = DocumentApp.getActiveDocument().getBody();
const beforeLast = body.getParagraphs().slice(-2)[0];
beforeLast.removeFromParent();
}
相关
下面的修改似乎完成了我所追求的。您似乎无法搜索空行;但是,我能够使用 forEach 循环搜索上面的段落,然后将我想要的文本附加到空段落上。段落的 forEach 循环在处理 Google Docs 时似乎非常强大。
Ruben 的回答相当有效,尽管我不得不根据从底部开始的段落数引入一个新变量。我还 运行 遇到了一个我以前没有意识到的问题 - 即使用 \n 替换文本也没有添加段落。这导致“Sincerely”在第二次通过时无意中被替换,并且没有出现在 PDF 中。
function DelSig(fileID) {
var docTarget = DocumentApp.openById(fileID);
var docBody = docTarget.getBody();
var docImages = docBody.getImages();
var docImage = docImages[0];
docImage.removeFromParent();
var docPars = docBody.getParagraphs();
var fndTxt = false;
docPars.forEach(function (curPar) {
if(fndTxt == true) {
curPar.appendText("{{Sig}}");
fndTxt = false;
}
if(curPar.findText("Sincerely,") !== null) {
fndTxt = true;
}
});
docTarget.saveAndClose();
}