How to add a hyperlink in a Google Docs using a Google Script

qcha picture qcha · Sep 16, 2015 · Viewed 29.9k times · Source

I have always used the insertText() function, but now I want to write a link in my google docs. The ideal would be to be able to write in HTML, but I don't know how.. it seems that it is not possible with the insertText() function.

How can I do that ?

Answer

SBmore picture SBmore · Sep 21, 2015

You should be able to use setFormula and the Hyperlink formula like so:

var value = '=HYPERLINK("www.google.com", "Google")';

SpreadsheetApp.getActiveSpreadsheet()
   .getSheetByName("Sheet1")
   .getRange("A1")
   .setFormula(value);

Edit: Looks like I misread the question. Try this instead:

DocumentApp.getActiveDocument()
  .getBody()
  .editAsText()
  .insertText(0, "link text")
  .setLinkUrl("www.google.com");

Edit 2: Looks like .setLinkUrl() is effecting the whole body, not the text inserted. If you put the link text into a variable and use the length of the variable to mark the link area, it should work. Try this instead:

function insertLink() {
  var text = "link text\n";
  var url = "www.google.com";
  DocumentApp.getActiveDocument()
    .getBody()
    .editAsText()
    .insertText(0, text)
    .setLinkUrl(0, text.length, url);
}