Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 谷歌应用程序脚本-如何从段落中获取文本?_Google Apps Script_Google Docs - Fatal编程技术网

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); } 我认为您唯一的问题是您需要
*
,这意味着任何字符的零个或多个。搜索模式是一个用引号括起来的正则表达式。我希望这有帮助