Google apps script 谷歌应用程序脚本-如何从段落中获取文本?
尝试编写一个函数,该函数在文档中的Google apps script 谷歌应用程序脚本-如何从段落中获取文本?,google-apps-script,google-docs,Google Apps Script,Google Docs,尝试编写一个函数,该函数在文档中的括号之间提取文本,写入html,并允许用户使用用户输入字段替换括号中的文本(通过查找和替换函数)。无法从google文档中获取实际括号内的文本。我得到的最接近的结果是返回括号内文本所在的段落,但这不起作用,因为这样会替换整个段落,而不仅仅是括号内的文本 这是最近的错误: TypeError:在对象文本中找不到函数getStartOffset。(行 文件“代码”,项目“查找和替换脚本”) 函数doGet(){ var docURL=DocumentApp.open
括号之间提取文本,写入html,并允许用户使用用户输入字段替换括号中的文本(通过查找和替换函数)。无法从google文档中获取实际括号内的文本。我得到的最接近的结果是返回括号内文本所在的段落,但这不起作用,因为这样会替换整个段落,而不仅仅是括号内的文本
这是最近的错误:
TypeError:在对象文本中找不到函数getStartOffset。(行
文件“代码”,项目“查找和替换脚本”)
函数doGet(){
var docURL=DocumentApp.openByUrl('XXXX')
var body=docURL.getBody();
var fel0=body.findText(“”)
var el0=fel0.getElement();
var startOffset=el0.getStartOffset();
var endOffset=el0.getEndOffsetInclusive();
var text=el0.asText().getText()
if(元素[0].isPartial())
text=el0.子字符串(startOffset,endOffset+1);
var template=HtmlService.createTemplateFromFile('urlinput.html');
template.el0=el0;
返回模板evaluate();
}
函数findreplace(表单){
var docURL=DocumentApp.openByUrl('XXXX')
var body=docURL.getBody();
body.replaceText(body.findText(“”,fel0.getElement().asText().getText())
}
如何从
body.findText(“”)
对象获取实际找到的文本?使这一点变得困难的一大部分是*
括号之间的通配符。试试这个:
function findAndReplace(){
DocumentApp.getActiveDocument().getBody().replaceText('<.*>', 'You\'ve been replaced.');
}
这只是一个快速的小例子,可以帮助您克服当前的问题
function findAndReplace(){
var doc=DocumentApp.getActiveDocument();
var body=doc.getBody();
var rel1=body.findText('<.*>');
var el1=rel1.getElement();
var t=el1.asText().getText();
var x=rel1.getStartOffset();
var y=rel1.getEndOffsetInclusive();
var p=rel1.isPartial();
el1.asText().replaceText('<.*>', 'You\'ve been replaced.');
//Logger.log('\nt:%s\nx:%s\ny:%s\np:%s',t,x,y,p?'true':'false');
//var end="is near";
}
函数findandplace(){
var doc=DocumentApp.getActiveDocument();
var body=doc.getBody();
var rel1=body.findText(“”);
var el1=rel1.getElement();
var t=el1.asText().getText();
var x=rel1.getStartOffset();
变量y=rel1.getEndOffsetInclusive();
var p=rel1.isPartial();
el1.asText().replaceText(“‘您已被替换’”);
//Logger.log('\nt:%s\nx:%s\ny:%s\np:%s',t,x,y,p?'true':'false');
//var end=“已接近”;
}
这同样有效:
function findAndReplace(){
DocumentApp.getActiveDocument().getBody().replaceText('<.*>', 'You\'ve been replaced.');
}
函数findandplace(){
DocumentApp.getActiveDocument().getBody().replaceText(“”,“您已被替换”);
}
这是您实际要求的:
function findAndReplace(){
DocumentApp.getActiveDocument().getBody().replaceText('<.*>', 'You\'ve been replaced.');
}
像往常一样,我读了一些问题,然后开始做我想做的事情。我猜你想得到文本。下面是另一个简短的例子
function findMyText(){
var body=DocumentApp.getActiveDocument().getBody();
var rel=body.findText('<.*>');
var el=rel.getElement();
var eltxt=el.asText().getText();
var txt=eltxt.slice(rel.getStartOffset()+1,rel.getEndOffsetInclusive())
DocumentApp.getUi().alert(txt);
}
函数findMyText(){
var body=DocumentApp.getActiveDocument().getBody();
var rel=body.findText(“”);
var el=rel.getElement();
var eltxt=el.asText().getText();
var txt=eltext.slice(rel.getStartOffset()+1,rel.getEndOffsetInclusive())
DocumentApp.getUi().alert(txt);
}
我认为您唯一的问题是您需要*
,这意味着任何字符的零个或多个。搜索模式是一个用引号括起来的正则表达式。我希望这有帮助