How to create hyperlink to range in Google Sheets App Script?

后端 未结 4 709
忘了有多久
忘了有多久 2020-12-10 09:39

I\'m trying to fill cells with hyperlinks to ranges in Google Sheets app script with the same desired outcome I would get had I done it in GUI. I managed to create hyperlink

4条回答
  •  有刺的猬
    2020-12-10 09:58

    Custom functions

    Use in a formula.

    Simple range:

    =HYPERLINK(getLinkByRange("Sheet1","A1"), "Link to A1")

    Named range:

    =HYPERLINK(getLinkByNamedRange("NamedRange"), "Link to named range")

    The code, insert into the script editor (Tools > Script Editor):

    function getLinkByRange(sheetName, rangeA1, fileId)
    {
      // file + sheet
      var file = getDafaultFile_(fileId);  
      var sheet = file.getSheetByName(sheetName);
      
      return getCombinedLink_(rangeA1, sheet.getSheetId(), fileId, file)    
    }
    
    function getLinkByNamedRange(name, fileId)
    {
      // file + range + sheet
      var file = getDafaultFile_(fileId);    
      var range = file.getRangeByName(name);  
      var sheet = range.getSheet();
      
      return getCombinedLink_(range.getA1Notation(), sheet.getSheetId(), fileId, file)
          
    }
    
    
    function getDafaultFile_(fileId)
    {
      // get file
      var file;
      if (fileId) { file = SpreadsheetApp.openById(fileId); }
      else file = SpreadsheetApp.getActive();      
      return file;      
    }
    
    function getCombinedLink_(rangeA1, sheetId, fileId, file)
    {
      var externalPart = '';
      if (fileId) { externalPart = file.getUrl(); }    
      return externalPart + '#gid=' + sheetId + 'range=' + rangeA1;   
    }
    

提交回复
热议问题