我正在使用下面的代碼在 Google Doc 中搜索 URL 并將它們轉換為活動鏈接。它作業得很好,除了鏈接切斷了 URL 的最后一個字符(例如,“https://link.com/123”被鏈接為“https://link.com/12”)。
function updateLinks() {
var linkRegex = "https?:\/\/[^\\s]*";
//Open active doc
var body = DocumentApp.getActiveDocument().getBody();
//Find URLs
var link = body.findText(linkRegex);
//Loop through the body finding texts matching the search pattern
while (link != null) {
// Get the link as an object
var linkElement = link.getElement().asText();
// Get the positions of start and end
var start = link.getStartOffset();
var end = link.getEndOffsetInclusive();
//slice only the link out of it
var correctLink = linkElement.getText().slice(start, end);
// Format link
linkElement.setLinkUrl(start, end, correctLink);
// Find next
link = body.findText(linkRegex, link);
}
}
我敢肯定這很簡單,但我是一個完全的新手,并希望得到任何建議。提前致謝!
uj5u.com熱心網友回復:
我認為您的問題的原因是slice(start, end)由于linkElement.getText().slice(start, end). 在這種情況下,它必須是slice(start, end 1)。所以,請按如下方式修改并再次測驗。
從:
var correctLink = linkElement.getText().slice(start, end);
到:
var correctLink = linkElement.getText().slice(start, end 1);
或者,當你想使用時linkRegex,下面的修改怎么樣?
var correctLink = linkElement.getText().match(new RegExp(linkRegex))[0];
筆記:
作為附加資訊,當一個段落中包含多個 URL 時,我認為以下修改可能有用。當然,在此修改中,即使段落中包含單個 URL,腳本也可以作業。
從
var start = link.getStartOffset(); var end = link.getEndOffsetInclusive(); //slice only the link out of it var correctLink = linkElement.getText().slice(start, end); // Format link linkElement.setLinkUrl(start, end, correctLink);到
var text = linkElement.getText(); var correctLinks = [...text.matchAll(new RegExp(linkRegex, "g"))]; correctLinks.forEach(obj => linkElement.setLinkUrl(obj.index, obj.index obj[0].length - 1, obj[0]));
參考:
- 片()
uj5u.com熱心網友回復:
你的代碼對我有用
你的原始檔案是什么樣的?
function updateLinks() {
var linkRegex = "https?:\/\/[^\\s]*";
var body = DocumentApp.getActiveDocument().getBody();
var link = body.findText(linkRegex);
while (link != null) {
var linkElement = link.getElement().asText();
var start = link.getStartOffset();
var end = link.getEndOffsetInclusive();
var correctLink = linkElement.getText().slice(start, end);
linkElement.setLinkUrl(start, end, correctLink);
link = body.findText(linkRegex, link);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/481067.html
