我试图创建一个密码保护的方式,将我的签名放在谷歌文档中,并创建一个PDF。我能够完成密码保护,添加签名,并发送到PDF。下面没有显示这一点,但我使用文档中已经使用的术语"{{Sig}}“替换为图像文件。我不希望这张图片留在谷歌文档中。下面的代码删除签名图像。但是,我想重新使用“{{Sig}”一词,以便今后在必要时能够签字。我能够做到这一点,在"{{Sig}}“应该在哪里之前寻找”诚恳“。但是,最后在“{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中结束的。代码删除签名图像,但留下空行(或空段落?)。根据文档的不同,空段落将有不同的索引。有没有办法搜索和替换这段空段落?



发布于 2021-10-25 22:30:33
下面的修改似乎实现了我所追求的目标。您似乎无法搜索空行;但是,我可以使用forEach循环搜索上面的段落,然后将我想要的文本追加到空段落中。段落的forEach循环在使用Google时似乎非常强大。
Ruben的回答效果很好,不过我不得不引入一个新的变量,这个变量是根据底层段落的数量来确定的。我还遇到了一个我以前不知道的问题-甚至把案文改为\n它没有增加一个段落。这导致了“真诚”,被无意中取代了第二次通过,而没有出现在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();
}发布于 2021-10-23 03:19:32
Google文档中的基本内容元素是段落。你可以通过得到相应的段落来得到空白行。
如果你的名字在最后一段,试着把它前面的名字。
function removeParaBeforeLast(){
const body = DocumentApp.getActiveDocument().getBody();
const beforeLast = body.getParagraphs().slice(-2)[0];
beforeLast.removeFromParent();
}相关
https://stackoverflow.com/questions/69668272
复制相似问题