【问题标题】:How to add a hyperlink in a Google Docs using a Google Script如何使用谷歌脚本在谷歌文档中添加超链接
【发布时间】:2015-09-16 07:39:32
【问题描述】:

我一直使用 insertText() 函数,但现在我想在我的 google 文档中写一个链接。理想的情况是能够用 HTML 编写,但我不知道如何.. 似乎使用 insertText() 函数是不可能的。

我该怎么做?

【问题讨论】:

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


【解决方案1】:

您应该能够像这样使用 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);
}

【讨论】:

  • 谢谢,但我正在寻找一种在 Google Docs 中实现此目的的方法,而不是在 Google Spreadsheat 中
  • 对不起,你是对的。尝试在.insertText() 之后添加.setLinkUrl("www.google.com");,并使用您的链接文本而不是google.com。例如。 DocumentApp.getActiveDocument().getBody().editAsText().insertText(0, "link text").setLinkUrl("www.google.com");
  • 非常感谢您的回答。我试过这个,但不幸的是,整个文档(开头的新行 + 文档的其余部分已经存在)变成了这个方法的链接......我该怎么做才能解决这个问题?
  • @qcha 查看我的最新编辑,我认为应该可以解决它。
【解决方案2】:

要在文档中添加超链接,请使用 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

【讨论】:

【解决方案3】:

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

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

【讨论】:

    【解决方案4】:

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

    【讨论】:

    • 这个问题是关于谷歌文档,而不是谷歌表格。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多