删除一段文字 [英] Removing a paragraph of text

查看:85
本文介绍了删除一段文字的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我构建了一个应用程序脚本来复制文档并根据我输入到Google电子表格中的数据进行编辑。



复制并编辑文档后,我想删除某些文本段落。



我正在使用以下内容来查看我是否可以找到正在搜索的
文本的位置,但是我的代码返回了 Range元素。

  var body = DocumentApp.openById(copyID).getBody(); 
var para = body.findText('X1');

Logger.log(para);

我的理想状态是为应用程序脚本在文档中提供两个位置,然后使用Apps脚本删除该范围内的所有文本。



如何生成正确的偏移量并删除文本?

解决方案

< blockquote>

我正在使用以下内容来查看我是否可以找到正在搜索的文本的位置,但是我的代码返回了Range Element。

这是应该发生的,这里是关于范围元素的文档中的一些信息。


Class RangeElement

包含可能的开始和结束偏移量的元素的包装。这些偏移量允许在搜索结果,文档选择和命名范围中表示文本元素中的一系列字符。

https://developers.google.com/apps-script/reference/document/range-element








我的理想状态是为应用脚本提供两个位置然后让Apps脚本删除这些范围内的所有文本。


使用以下命令检索偏移量并删除文本。

  var startOffset = rangeElement.getStartOffset(); 
var endOffset = rangeElement.getEndOffsetInclusive();
rangeElement.getElement()。asText()。deleteText(startOffset,endOffset);




getStartOffset()

获取range元素中部分范围的开始位置。如果元素是Text元素,isPartial()返回true,则偏移量是范围开始之前的字符数(即范围中第一个字符的索引);在任何其他情况下,此方法返回-1。

https://developers.google.com/apps-script/reference/document/range-element#getStartOffset()







getEndOffsetInclusive()

获取范围元素内部分范围的结尾。如果元素是Text元素,isPartial()返回true,则偏移量是范围中最后一个字符(即范围中最后一个字符的索引)之前的字符数;在任何其他情况下,此方法返回-1。

https://developers.google.com/apps-script/reference/document/range-element#getEndOffsetInclusive()







deleteText(startOffset,endOffsetInclusive)

删除一系列文字。

https://developers.google.com/apps-script/reference/document/text#deleteText(Integer,Integer)








如何生成正确的偏移量并删除文本?
blockquote>

以下脚本可以做到这一点。
$ b

  var rangeElement = DocumentApp.open ById(copyID).getBody()FINDTEXT( X1’ )。 
if(rangeElement.isPartial()){
var startOffset = rangeElement.getStartOffset();
var endOffset = rangeElement.getEndOffsetInclusive();
rangeElement.getElement()。asText()。deleteText(startOffset,endOffset);
} else {
rangeElement.getElement()。removeFromParent();
}


I built an app script to copy a doc and edit it based upon the data I have entered into a Google spreadsheet.

Once the doc is copied and edited, I would like to remove certain text paragraphs.

I was using the following to see if I could find the position of the text I was searching for, but my code returned Range Element.

var body = DocumentApp.openById(copyID).getBody();
var para = body.findText('X1');

Logger.log(para);

My ideal state would be to provide apps script with two positions within the document, and then have Apps Script delete all the text within that range.

How can I generate the correct offsets and delete the text?

解决方案

I was using the following to see if I could find the position of the text I was searching for, but my code returned Range Element.

That is supposed to happen, here is some information from the documentation about range elements.

Class RangeElement
A wrapper around an Element with a possible start and end offset. These offsets allow a range of characters within a Text element to be represented in search results, document selections, and named ranges.
https://developers.google.com/apps-script/reference/document/range-element


My ideal state would be to provide apps script with two positions within the document, and then have Apps Script delete all the text within those ranges.

Use the following to retrieve the offsets and delete the text.

var startOffset = rangeElement.getStartOffset();
var endOffset = rangeElement.getEndOffsetInclusive();
rangeElement.getElement().asText().deleteText(startOffset,endOffset);

getStartOffset()
Gets the position of the start of a partial range within the range element. If the element is a Text element and isPartial() returns true, the offset is the number of characters before the start of the range (that is, the index of the first character in the range); in any other case, this method returns -1.
https://developers.google.com/apps-script/reference/document/range-element#getStartOffset()

getEndOffsetInclusive()
Gets the position of the end of a partial range within the range element. If the element is a Text element and isPartial() returns true, the offset is the number of characters before the last character in the range (that is, the index of the last character in the range); in any other case, this method returns -1.
https://developers.google.com/apps-script/reference/document/range-element#getEndOffsetInclusive()

deleteText(startOffset, endOffsetInclusive)
Deletes a range of text.
https://developers.google.com/apps-script/reference/document/text#deleteText(Integer,Integer)


How can I generate the correct offsets and delete the text?

The following script will do that.

var rangeElement = DocumentApp.openById(copyID).getBody().findText('X1');
if (rangeElement.isPartial()) {
     var startOffset = rangeElement.getStartOffset();
     var endOffset = rangeElement.getEndOffsetInclusive();
     rangeElement.getElement().asText().deleteText(startOffset,endOffset);
} else {
     rangeElement.getElement().removeFromParent();
}

这篇关于删除一段文字的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆