【问题标题】:Is there a custom function or script that returns gid of a specific sheet in Google Sheets?是否有自定义函数或脚本可以返回 Google 表格中特定表格的 gid?
【发布时间】:2019-11-05 12:33:36
【问题描述】:

我一直在互联网上的浩瀚知识海洋中钻研以获得我需要的东西,但无济于事。

上下文

在单个 Google 表格文件中,我有一个主表格和以人的姓氏命名的其他各种表格。

在主表中,我创建了一个单元格,我可以在其中键入任何人的姓名。我想查找多个人的工作表,所以我的搜索是动态的。无论如何,让我们将此单元格称为搜索单元格。

在搜索单元格旁边,我有另一个单元格,我想在其中添加一个超链接到另一个工作表,该工作表带有在搜索单元格中输入的姓氏。让我们将此带有超链接的单元格称为 HYPERLINK CELL。因此,当我单击此单元格中的超链接时,我想跳转到与在搜索单元格中输入的个人姓氏相匹配的工作表。

我需要这个 HYPERLINK CELL 的帮助。

=hyperlink("#gid=               ")

如何提取每张表的gid并在上面代码的空白处输入?

有人告诉我,没有谷歌表格功能,所以需要自定义函数或脚本。任何人都可以提供一个在脚本编辑器中输入时有效(即运行时没有错误)吗?

【问题讨论】:

    标签: google-apps-script google-sheets hyperlink google-sheets-formula array-formulas


    【解决方案1】:

    脚本:

    function SHEETLIST() {
    try {
      var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets()
      var out = new Array( sheets.length+1 ) ;
      out[0] = [ "NAME" , "#GID" ];
      for (var i = 1 ; i < sheets.length+1 ; i++ ) out[i] = 
      [sheets[i-1].getName() , sheets[i-1].getSheetId() ];
      return out
    }
    catch( err ) {
      return "#ERROR!" }}
    

    公式:

    =SHEETLIST()
    

    将工作表名称转换为活动超链接:

    =ARRAYFORMULA(HYPERLINK("#gid="&
     QUERY(INDEX(SHEETLIST();;2); "offset 1"); 
     QUERY(INDEX(SHEETLIST();;1); "offset 1")))
    

    如果你想将其绑定到手动输入,你可以使用VLOOKUP like

    =ARRAYFORMULA(IFNA(VLOOKUP(A1, HYPERLINK("#gid="&
     QUERY(INDEX(SHEETLIST();;2); "offset 1"); 
     QUERY(INDEX(SHEETLIST();;1); "offset 1")); 1; 0)))
    

    其中 A1 是您的“搜索单元格”

    【讨论】:

    • 感谢您的帮助。您的代码确实产生了我预想的结果。但是当我创建一个新工作表时遇到了一个问题。问题是代码不会返回指向新创建的工作表的超链接。你知道我可能做错了什么吗?
    • 哄我。请忽略我上面的问题。不过,我还有一个问题。每次创建新工作表时都必须运行脚本吗?
    • 你可以试试:=SHEETLIST(TODAY()) - 理论上,这应该每天重新计算(写脚本的家伙说)
    猜你喜欢
    • 2022-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多