Google 用于创建 sheet 带超链接索引的工作表公式

Google Sheets formula to create sheet index with hyperlinks

我正在尝试在 Appscript 中创建单个 GSheets 公式,它将创建文件中所有工作sheet的输出,包括 hyperlink.

我目前有一个创建所有 sheet 名称的公式,另一个创建 GID 列表的公式,然后我在前端使用 =Hyperlink 函数将它们连接在一起

我希望能够通过使用单个公式来创建一个数组来做到这一点,该数组只包含 C 列作为输出,例如每个作品的名称 sheet 和一个 hyperlink sheet.
这是我尝试使用 sheetlink() 的方法,但是它只是粘贴公式而实际上没有 运行 它们,因此没有 link.

function sheetnames() { 
  var out = new Array()
  var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();

  var indexSheetNames = [];
  var indexSheetIds = [];

   // create array of sheet names and sheet gids
  sheets.forEach(function(sheet){
    
        indexSheetNames.push([sheet.getSheetName() ]);
                        Logger.log(indexSheetNames)                    
  })

  return indexSheetNames;

}

function sheetIDs() { 
  var out = new Array()
  var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();

  var indexSheetNames = [];
  var indexSheetIds = [];

   // create array of sheet names and sheet gids
  sheets.forEach(function(sheet){
    
    indexSheetIds.push([sheet.getSheetId() ]);
                        Logger.log(indexSheetIds)

                       
  })

  return indexSheetIds;

}
function sheetlink() { 
  var out = new Array()
  var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();

  var indexSheetNames = [];
  var indexSheetIds = [];

   // create array of sheet names and sheet gids
  sheets.forEach(function(sheet){
    
    indexSheetIds.push(['=hyperlink("#gid=' 
                        + sheet.getSheetId() 
                        + '","' 
                        + sheet.getSheetName() 
                        + '")']);
                        Logger.log(indexSheetIds)

                       
  })

  return indexSheetIds;

}


你不需要第三个自定义函数,你已经有了。 像这样使用你的两个函数:

=ArrayFormula(HYPERLINK("#gid="&sheetIds(), sheetNames()))