如何使用Google Script在Google文档中添加超链接

时间:2015-09-16 07:39:33

标签: google-apps-script hyperlink google-docs

我一直使用insertText()函数,但现在我想在google docs中编写一个链接。理想的是能够用HTML编写,但我不知道如何使用insertText()函数似乎无法实现。

我该怎么做?

4 个答案:

答案 0 :(得分:14)

您应该可以像这样使用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()正在影响整个身体,而不是插入的文字。如果将链接文本放入变量并使用变量的长度来标记链接区域,它应该可以工作。试试这个:

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

答案 1 :(得分:1)

要在文档中添加超链接,请使用带有setLinkUrl的Body.appendParagraph,然后合并。

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

答案 2 :(得分:0)

您还可以使用以下功能使文档中的所有链接都可点击。

    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);
        }    
      }

答案 3 :(得分:-1)

我正在使用这个脚本,这是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+'")'        );
      }
    }
    }