查找并删除空行

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();
}