【问题标题】:Hyperlink to a specific sheet指向特定工作表的超链接
【发布时间】:2012-11-15 04:55:55
【问题描述】:

我想从另一个电子表格中的超链接打开 Google 表格的特定工作表。

我的主电子表格中有不同的链接,每个链接都应该有一个指向同一个从电子表格但指向不同工作表的超链接。

我知道超链接功能,但它不会转到特定的工作表。

【问题讨论】:

    标签: google-sheets hyperlink google-api google-sheets-api


    【解决方案1】:

    您可以使用此自定义脚本(工具 > 脚本编辑器)功能并将其与例如自定义绘图(插入>绘图...>保存并关闭,然后右键单击新绘图>分配脚本...>“goToSheet2”)

    function goToSheet2() {
      goToSheet("Sheet2");
    }
    
    function goToSheet(sheetName) {
      var sheet = SpreadsheetApp.getActive().getSheetByName(sheetName);
      SpreadsheetApp.setActiveSheet(sheet);
    }
    

    更新:
    在最新版本中,您可以选择单元格并添加链接(插入>链接)并直接选择指向特定工作表的链接:

    【讨论】:

    • 这里给出了最佳答案和选项,更新:之一。
    【解决方案2】:

    HYPERLINK 函数可以链接到同一工作簿中的另一个工作表;如果您观察电子表格的 URL,在其末尾有 #gid=x,其中 x 对于每张工作表都是唯一的。

    问题是,它会在另一个选项卡中将工作表作为电子表格的新实例打开,这可能是不可取的。解决方法是将图像或绘图作为按钮插入,并为其分配脚本以激活特定工作表。

    【讨论】:

    • 难以置信,这不是标准功能。感谢您的解决方法
    • 我发现这个答案很有帮助。只需添加评论:如果您从同一个电子表格文档中链接该工作表,“在另一个 [浏览器] 选项卡中打开”实际上只是一个问题。如果您的示例与我的示例一样,您将 HTML 或 wiki 页面链接到特定的工作表,那么不用担心.... #gid 技巧有效(只要没有人删除任何工作表选项卡...注意非常重要#gid 是一个 FIXED POSITION 编号,因此左侧的第四个工作表将是 #gid=3)。
    【解决方案3】:

    我个人是根据@rejthy 所说的: 在脚本中我创建了这个函数:

    /**
     * Return the id of the sheet. (by name)
     *
     * @return The ID of the sheet
     * @customfunction
     */
    function GET_SHEET_ID(sheetName) {
        var sheetId = SpreadsheetApp.getActive().getSheetByName(sheetName).getSheetId();
        return sheetId;
    }
    

    然后在我需要链接的工作表中,我这样做了:=HYPERLINK("#gid="&GET_SHEET_ID("Factures - "&$B$1);"Année en cours")

    【讨论】:

      【解决方案4】:

      所以我从 OP 了解到的是,您有一个主电子表格,您希望拥有指向各个工作表的链接,其中一个或多个工作表可能位于单个或多个电子表格文件中。

      HYPERLINK 函数仅将 URL 转换为超链接,并且仅当您希望拥有超文本而不仅仅是链接时才真正有用。如果您输入原始 URL 作为数据,它会自动变成超链接,因此无需额外工作。

      如其他答案中所述,解决方案是让电子表格的 URL 然后使用 gid 值来计算指向电子表格中所需工作表的链接。您可以编写一个简单的应用程序来收集所有单个工作表的链接并将它们写入主文件。

      以下是一些可以帮助您入门的伪代码 (Python) 的 sn-ps。我省略了所有样板身份验证代码,但如果您需要它,请参阅 this blog postthis video。下面的代码假设您的 API 服务端点是 SHEETS

      这会读取一个目标电子表格,为其每个工作表建立链接:

      # open target Sheet, get all sheets & Sheet URL
      SHEET_ID = TARGET_SHEET_DRIVE_FILE_ID
      res = SHEETS.spreadsheets().get(spreadsheetId=SHEET_ID,
              fields='sheets,spreadsheetUrl').execute()
      sheets = res.get('sheets', [])
      url = res['spreadsheetUrl']
      
      # for each sheet, dump out its name & full URL
      for sheet in sheets:
          data = sheet['properties']
          print('** Sheet title: %r' % data['title'])
          print(' - Link: %s#gid=%s' % (url, data['sheetId']))
      

      假设您将它们存储在应用程序中的 (name, URL) 2 元组数组中,而不是打印到屏幕上,所以最重要的是,它看起来类似于名为 sheet_data 的列表:

      sheet_data = [
          ('Intro', 'https://docs.google.com/spreadsheets/d/SHEET_ID/edit#gid=5'),
          ('XData', 'https://docs.google.com/spreadsheets/d/SHEET_ID/edit#gid=3'),
          ('YData', 'https://docs.google.com/spreadsheets/d/SHEET_ID/edit#gid=7')
      ]
      

      然后您可以像这样将它们写入主节点(从左上角开始,单元格A1):

      SHEET_ID = MASTER_SHEET_DRIVE_FILE_ID
      SHEETS.spreadsheets().values().update(
          spreadsheetId=SHEET_ID, range='A1',
          body={'values': sheet_data},
          valueInputOption='USER_ENTERED'
      ).execute()
      

      使用gid时的一些注意事项:

      • 为您创建的第一个默认工作表 (Sheet1) 始终具有 gid=0
      • 之后添加的任何工作表都会有一个随机的gid
      • 不要将gid=0 用于电子表格中的第一个工作表,因为您或其他人可能已经删除了原始默认工作表,就像我上面的示例一样。

      如果您想查看更多使用 Sheets API 的示例,请观看我制作的更多视频(以及深入研究每个代码示例的帖子):

      然后,当您在表格 UI 中打开主表格时,您可以点击进入任何单独的表格,无论它们位于哪个电子表格文件中。如果您希望它们由另一个应用程序或脚本自动打开,大多数编程语言为开发人员提供一种在给定目标 URL 的情况下启动 Web 浏览器的方法。在 Python 中,它将是 webbrowser 模块 (docs):

      import webbrowser
      webbrowser.open_new(url) # or webbrowser.open_new_tab(url)
      

      【讨论】:

        【解决方案5】:

        或者,您可以尝试创建自定义函数。打开电子表格,点击工具菜单,然后点击脚本编辑器....将代码粘贴到编辑器中:

        /**
         * Gets the Sheet ID from Sheet Name
         *
         * @param {string} input The Sheet Name
         * @return The Sheet ID
         * @customfunction
         */
        function SHEETID(input) {
          var ss = SpreadsheetApp.getActiveSpreadsheet();
          var tab = ss.getSheetByName(input);
          return tab.getSheetId();
        }
        

        保存、刷新电子表格,然后输入您的自定义函数

        =SHEETID("Your Custom Sheet Name")
        
        =SHEETID(A1)
        

        瞧!输出选项卡的唯一 ID(在当前电子表格中)。您可以使用以下公式超链接到它:

        =HYPERLINK("#gid="&SHEETID(A1),"Link")
        

        【讨论】:

          【解决方案6】:

          如果您想创建指向另一个工作表的链接,该工作表将在相同浏览器选项卡中打开该工作表,您可以执行以下操作: 1.获取sheet的id。检查浏览器中的链接,您将看到#gid=x 其中x 是工作表ID 2. 然后你想将公式(超链接)设置到单元格并使其显示为超链接 SpreadsheetApp.getActiveSheet().getRange("A1").setFormula('=HYPERLINK("#gid=X","test")').setShowHyperlink(true); 如果您不使用setShowHyperlink(true),它将显示为常规文本。

          这基本上是上面@rejthy 提供的更新的代码版本

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2019-01-16
            • 1970-01-01
            • 1970-01-01
            • 2017-08-03
            • 2013-07-15
            • 2017-07-31
            • 2016-09-18
            • 2017-12-12
            相关资源
            最近更新 更多