使用Apps脚本检索Google Doc中特定文本字符串上的超链接

时间:2018-12-27 22:17:40

标签: javascript google-apps-script google-docs

我正在尝试使用Google Apps脚本从this Google Doc中找到的特定字符串中获取超链接。

字符串为 || stock ||

超链接为 https://www.cnbc.com/quotes/?symbol=aapl&qsearchterm=aapl

任何帮助将不胜感激。

我当前正在使用的代码

function docReport() {
  var doc = DocumentApp.openByUrl('https://docs.google.com/document/d/1XNiqgJ_hM2SWjoR-OTsq1w-ZFKvTIERDIs_NOWJpckY/edit');
  var body = doc.getBody();
  Logger.log(body.getParagraphs().length);//get the number of paragraphs
  //https://www.udemy.com/apps-script-course/learn/v4/t/lecture/10208226?start=0
  for (var x=0;x<body.getParagraphs();X++) {
   var el = body.getChild(x);
    Logger.log(el.getText());
  }


  var bodyText = body.getText();
  var words = bodyText.match(/\S+/g); // get word count for body - https://stackoverflow.com/questions/33338667/function-for-word-count-in-google-docs-apps-script
  Logger.log(words.length); // retruns # of words

  var paragraphAll = body.getParagraphs(); // gets all paragraph objects in a document
  Logger.log(paragraphAll); 

  var paragraphText = paragraphAll[1].getText().match(/\S+/g);
  Logger.log(paragraphText.length); // retruns # of words in a paragraph




}

1 个答案:

答案 0 :(得分:1)

  • 您要检索||stock||文本的超链接。

例如,如果我的理解正确,那么此示例脚本如何?在您的情况下,具有链接的文本值是已知的。示例脚本使用这种情况。

顺便说一句,从您的问题来看,我不确定文档中是否有||stock||的多个值。因此,此示例脚本假设文档中有||stock||个值。

我认为您的情况有几个答案。因此,请将此视为其中之一。

示例脚本:

var searchValue = "\\|\\|stock\\|\\|"; // Search value
var body = DocumentApp.openByUrl('https://docs.google.com/document/d/1XNiqgJ_hM2SWjoR-OTsq1w-ZFKvTIERDIs_NOWJpckY/edit').getBody();
var searchedText = body.findText(searchValue);
var urls = [];
while (searchedText) {
  var url = searchedText.getElement().asText().getLinkUrl(searchedText.getStartOffset());
  urls.push(url);
  searchedText = body.findText(searchValue, searchedText);
}
Logger.log(urls) // Results

注意:

如果文档中只有一个搜索值,则还可以使用以下脚本。

var searchValue = "\\|\\|stock\\|\\|";
var body = DocumentApp.openByUrl('https://docs.google.com/document/d/1XNiqgJ_hM2SWjoR-OTsq1w-ZFKvTIERDIs_NOWJpckY/edit').getBody();
var searchedText = body.findText(searchValue);
var url = searchedText.getElement().asText().getLinkUrl(searchedText.getStartOffset());
Logger.log(url)

参考文献:

如果我误解了您的问题,请告诉我。我想修改它。