Javascript 计算Google文档中的行数
问题: 我希望能够计算谷歌文档中的行数。例如,对于以下文本,脚本必须返回6 但是,似乎没有任何可靠的方法从文本中提取'\n'或'\r'字符Javascript 计算Google文档中的行数,javascript,google-apps-script,google-docs,Javascript,Google Apps Script,Google Docs,问题: 我希望能够计算谷歌文档中的行数。例如,对于以下文本,脚本必须返回6 但是,似乎没有任何可靠的方法从文本中提取'\n'或'\r'字符 text.findText(/\r/g) //OR text.findText(/\n/g) 第二行代码无论如何都不应该工作,因为根据GAS文档,“新行字符会自动转换为/r”如果您仍在寻找解决方案,这个答案如何?不幸的是,我找不到准备好的方法来检索Google文档中的行数。为了做到这一点,这个变通方法怎么样 如果可以检测到每行的末尾,则可以检索行数。因
text.findText(/\r/g) //OR
text.findText(/\n/g)
第二行代码无论如何都不应该工作,因为根据GAS文档,“新行字符会自动转换为/r”如果您仍在寻找解决方案,这个答案如何?不幸的是,我找不到准备好的方法来检索Google文档中的行数。为了做到这一点,这个变通方法怎么样 如果可以检测到每行的末尾,则可以检索行数。因此,我尝试使用OCR添加每行的结束标记。我认为可能有几个变通办法来解决您的问题。所以,请把这看作是其中之一 在谷歌文档中,当一个句子超过页面宽度时,该句子会自动换行。但是换行符没有
\r\n
或\n
。当用户按enter键给出换行符时,换行符具有\r\n
或\n
。这样,从文档检索到的文本数据只有用户给出的换行符。在您的情况下,您的文档似乎在incidedunt
和consequat.
之后有换行符。因此,行数不会变成6
我认为OCR可以用于这种情况。流程如下
- 我选择了OCR。
- 如果您已经知道OCR的API,可以尝试这样做
- 当我使用驱动器API的OCR时,
或\r\n
的换行符未添加到转换的文本数据中。所以我使用了ocr.space。ocr.space可以添加换行符\n
\n
。
- 这个数字表示行数
- 即使文档的最后一行没有
或\r\n
,转换后的文本数据在所有行的末尾都有\n
\r\n
- 在这种情况下,OCR的精度并不重要。重要的一点是检索换行符
我在几个文档中测试了这个脚本。在我的环境中,可以检索正确的行数。但是我不确定这个脚本是否适合您的环境。如果此脚本不能用于您的环境,我很抱歉。正如您在评论中所指出的,没有API可以检索Google文档中的行数。这是因为文档是在客户端动态呈现的,所以服务器不知道这个数字
一个可能的解决方案是删除Google文档的HTML,因为每一行都用自己的
div
和“kix lineview”类重新绘制,但是,您需要在iframe或无头浏览器中实际打开页面,然后逐页滚动以使其呈现,然后在使用«文件»菜单中的«发布到web»发布您的Google文档后,可以计算div,使用以下脚本中的URL:
var url = "https://docs.google.com/document/d/e/2PACX-1vSElK...iwUhaFo/pub";
var text = UrlFetchApp.fetch(url).getContentText();
var count = (text.match(/<\/br>/g) || []).length;
Logger.log(count.toString());
var url=”https://docs.google.com/document/d/e/2PACX-1vSElK...iwUhaFo/pub";
var text=UrlFetchApp.fetch(url.getContentText();
变量计数=(text.match(//g)| |[]).length;
Logger.log(count.toString());
这只有在所有文档行都以
结尾时才有用,但也可以添加任何其他变体:
var url = "https://docs.google.com/document/d/e/2PACX-1vSElK...iwUhaFo/pub";
var text = UrlFetchApp.fetch(url).getContentText();
var count1 = (text.match(/<\/br>/g) || []).length;
var count2 = (text.match(/<\/p>/g) || []).length;
var count3 = (text.match(/<hr>/g) || []).length;
var count = coun1 + coung2 + count3;
Logger.log(count);
var url=”https://docs.google.com/document/d/e/2PACX-1vSElK...iwUhaFo/pub";
var text=UrlFetchApp.fetch(url.getContentText();
var count1=(text.match(//g)| |[]).length;
var count2=(text.match(//g)| |[]).length;
var count3=(text.match(/
/g)| |[]).length;
变量计数=CONT1+CONG2+count3;
Logger.log(计数);
可能类似于text.split(/\r\n |\r |\n/).length
?对于占据多行的句子呢?如果你只是想要一段时间,那么计数\n
或\r
似乎是不必要的。@SimeonNakov谢谢,它可以工作,但它会返回我预期的段落数。因此,谷歌文档中似乎没有办法计算行数:(@tehhowch我的意图是按说明计算单个行数(而不是段落)。您可以通过调用body.getPages()计算段落数。然而,我对文档中的语句感到困惑,大意是“所有新行字符都转换为\r\n",似乎确实如此,所以问题还没有解决。我认为这里的问题很清楚。提问者想知道是否有一种简单的方法来获得行数。也许他们正在写文件,要求所有文件都放在一页上,而被发送给他们的人更喜欢较小的字体只是把文档放在一页上。不幸的是,我认为这个简单的答案是不,没有一个函数可以提供我所知道的行数。现代的它是疯狂的。
var url = "https://docs.google.com/document/d/e/2PACX-1vSElK...iwUhaFo/pub";
var text = UrlFetchApp.fetch(url).getContentText();
var count1 = (text.match(/<\/br>/g) || []).length;
var count2 = (text.match(/<\/p>/g) || []).length;
var count3 = (text.match(/<hr>/g) || []).length;
var count = coun1 + coung2 + count3;
Logger.log(count);