如何使用 Google 脚本在 Google 文档中添加超链接
How to add a hyperlink in a Google Docs using a Google Script
我一直使用 insertText() 函数,但现在我想在我的 google 文档中写一个 link。理想的是能够在 HTML 中写入,但我不知道如何.. insertText() 函数似乎是不可能的。
我该怎么做?
您应该能够像这样使用 setFormula 和 Hyperlink 公式:
var value = '=HYPERLINK("www.google.com", "Google")';
SpreadsheetApp.getActiveSpreadsheet()
.getSheetByName("Sheet1")
.getRange("A1")
.setFormula(value);
编辑:
看起来我误读了这个问题。试试这个:
DocumentApp.getActiveDocument()
.getBody()
.editAsText()
.insertText(0, "link text")
.setLinkUrl("www.google.com");
编辑 2: 看起来 .setLinkUrl()
正在影响整个正文,而不是插入的文本。如果把link文本放到一个变量中,用变量的长度来标记link区域,应该可以。试试这个:
function insertLink() {
var text = "link text\n";
var url = "www.google.com";
DocumentApp.getActiveDocument()
.getBody()
.editAsText()
.insertText(0, text)
.setLinkUrl(0, text.length, url);
}
我正在使用这个脚本,它正在运行 Calomun 1 Row > 2。
function InsertLink(e)
{
var actSht = e.source.getActiveSheet();
if (actSht.getName() == ['SheetName']){
var activeCell = actSht.getActiveCell(); //Detec the ActiveCell
//var activeCell = event.range;
var activeCellValue = e.value;
var column = activeCell.getColumn();
var colNums = [1]; //Columns, whose edit is considered
if(colNums.indexOf(column) == -1) return; //If column other than considered then return
var row = activeCell.getRow();
if(row < 2) return; //If header row then return
var length = String(activeCellValue).length;
if (!e.value)
{
activeCell.setValue()
}
else if(length > 4)
{
activeCell.setValue('=HYPERLINK' + '("http://otrs/otrs/index.pl?Action=AgentTicketZoom;TicketNumber='+activeCellValue+'";"'+activeCellValue+'")' );
}
}
}
要在文档中添加超链接,请使用 Body.appendParagraph 和 setLinkUrl,然后合并。
let doc = DocumentApp.create("My Document");
let body = doc.getBody();
body.appendParagraph("Please click ");
let link = body.appendParagraph("here").setLinkUrl("http://www.google.com");
link.merge();
let closing = body.appendParagraph(".");
closing.merge();
上面的代码将创建一个文档,其文本如下所示:
请点击here。
您还可以使用以下功能使文档中的所有链接都可以点击。
function makeLinksClickable(document) {
const URL_PATTERN="http[^\s]+"
const URL_PATTER_LENGTH_CORECTION = "http ".length
const body = document.getBody()
var foundElement = body.findText(URL_PATTERN);
while (foundElement != null) {
// Get the text object from the element
var foundText = foundElement.getElement().asText();
// Where in the element is the found text?
const start = foundElement.getStartOffset();
const end = foundElement.getEndOffsetInclusive() - URL_PATTER_LENGTH_CORECTION;
const url = foundText.getText().substring(start,end)
//make url clickable
foundText.setLinkUrl(start, end, url)
// Find the next match
foundElement = body.findText(URL_PATTERN, foundElement);
}
}
我一直使用 insertText() 函数,但现在我想在我的 google 文档中写一个 link。理想的是能够在 HTML 中写入,但我不知道如何.. insertText() 函数似乎是不可能的。
我该怎么做?
您应该能够像这样使用 setFormula 和 Hyperlink 公式:
var value = '=HYPERLINK("www.google.com", "Google")';
SpreadsheetApp.getActiveSpreadsheet()
.getSheetByName("Sheet1")
.getRange("A1")
.setFormula(value);
编辑: 看起来我误读了这个问题。试试这个:
DocumentApp.getActiveDocument()
.getBody()
.editAsText()
.insertText(0, "link text")
.setLinkUrl("www.google.com");
编辑 2: 看起来 .setLinkUrl()
正在影响整个正文,而不是插入的文本。如果把link文本放到一个变量中,用变量的长度来标记link区域,应该可以。试试这个:
function insertLink() {
var text = "link text\n";
var url = "www.google.com";
DocumentApp.getActiveDocument()
.getBody()
.editAsText()
.insertText(0, text)
.setLinkUrl(0, text.length, url);
}
我正在使用这个脚本,它正在运行 Calomun 1 Row > 2。
function InsertLink(e)
{
var actSht = e.source.getActiveSheet();
if (actSht.getName() == ['SheetName']){
var activeCell = actSht.getActiveCell(); //Detec the ActiveCell
//var activeCell = event.range;
var activeCellValue = e.value;
var column = activeCell.getColumn();
var colNums = [1]; //Columns, whose edit is considered
if(colNums.indexOf(column) == -1) return; //If column other than considered then return
var row = activeCell.getRow();
if(row < 2) return; //If header row then return
var length = String(activeCellValue).length;
if (!e.value)
{
activeCell.setValue()
}
else if(length > 4)
{
activeCell.setValue('=HYPERLINK' + '("http://otrs/otrs/index.pl?Action=AgentTicketZoom;TicketNumber='+activeCellValue+'";"'+activeCellValue+'")' );
}
}
}
要在文档中添加超链接,请使用 Body.appendParagraph 和 setLinkUrl,然后合并。
let doc = DocumentApp.create("My Document");
let body = doc.getBody();
body.appendParagraph("Please click ");
let link = body.appendParagraph("here").setLinkUrl("http://www.google.com");
link.merge();
let closing = body.appendParagraph(".");
closing.merge();
上面的代码将创建一个文档,其文本如下所示:
请点击here。
您还可以使用以下功能使文档中的所有链接都可以点击。
function makeLinksClickable(document) {
const URL_PATTERN="http[^\s]+"
const URL_PATTER_LENGTH_CORECTION = "http ".length
const body = document.getBody()
var foundElement = body.findText(URL_PATTERN);
while (foundElement != null) {
// Get the text object from the element
var foundText = foundElement.getElement().asText();
// Where in the element is the found text?
const start = foundElement.getStartOffset();
const end = foundElement.getEndOffsetInclusive() - URL_PATTER_LENGTH_CORECTION;
const url = foundText.getText().substring(start,end)
//make url clickable
foundText.setLinkUrl(start, end, url)
// Find the next match
foundElement = body.findText(URL_PATTERN, foundElement);
}
}