我一直使用 insertText() 函数,但现在我想在我的谷歌文档中编写一个链接。理想的情况是能够用 HTML 编写,但我不知道如何......似乎使用 insertText() 函数是不可能的。
我怎样才能做到这一点?
您应该能够像这样使用 setFormula 和超链接公式:
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()
正在影响整个正文,而不是插入的文本。如果将链接文本放入变量中并使用变量的长度来标记链接区域,它应该可以工作。试试这个:
function insertLink() {
var text = "link text\n";
var url = "www.google.com";
DocumentApp.getActiveDocument()
.getBody()
.editAsText()
.insertText(0, text)
.setLinkUrl(0, text.length, url);
}
要在文档中添加超链接,请使用 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();
上面的代码将创建一个文档,其文本如下所示:
请点击这里。
您还可以使用以下功能使文档中的所有链接都可点击。
function makeLinksClickable(document) {
const URL_PATTERN="http[^\b]+"
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();
const url = foundText.getText().substring(start,end + 1)
//make url clickable
foundText.setLinkUrl(start, end, url)
// Find the next match
foundElement = body.findText(URL_PATTERN, foundElement);
}
}
如果您要查找带有超链接的字符串,则可以使用以下代码。
function insertLink(){
const body = DocumentApp.getActiveDocument().getBody()
const text = body.findText('{{googleLink}}').getElement().asText()
text.setText('Link to google')
text.setLinkUrl('www.google.com')
}
我正在使用这个脚本,这正在工作 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+'")' );
}
}
}