使用 Apps 脚本检索 Google Doc 中特定文本字符串的超链接
Retrieve the hyperlink on a specific text string within Google Doc using Apps Script
我正在尝试使用 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 -
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
}
- 您想检索
||stock||
的文本的 hyperlink。
如果我的理解是正确的,例如,这个示例脚本怎么样?在您的情况下,已经知道具有 link 的文本值。示例脚本使用这种情况。
顺便说一句,根据你的问题,我不确定文档中是否有多个 ||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)
参考文献:
如果我误解了你的问题,请告诉我。我想修改一下。
我正在尝试使用 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 -
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
}
- 您想检索
||stock||
的文本的 hyperlink。
如果我的理解是正确的,例如,这个示例脚本怎么样?在您的情况下,已经知道具有 link 的文本值。示例脚本使用这种情况。
顺便说一句,根据你的问题,我不确定文档中是否有多个 ||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)
参考文献:
如果我误解了你的问题,请告诉我。我想修改一下。