12

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

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

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

4

6 回答 6

17

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

function goToSheet2() {
  goToSheet("Sheet2");
}

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

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

于 2013-08-29T18:45:42.913 回答
11

HYPERLINK功能可以链接到同一工作簿中的另一张工作表;如果您观察电子表格的 URL,在它的末尾会有#gid=x每个x工作表的唯一位置。

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

于 2012-11-15T05:05:19.730 回答
4

我个人根据@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")

于 2017-08-15T12:37:28.780 回答
0

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

/**
 * 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")
于 2017-09-20T00:12:20.113 回答
0

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

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

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

下面是一些可以帮助您入门的伪代码 (Python) 片段。我省略了所有样板身份验证代码,但如果您需要它,请参阅此博客文章此视频。下面的代码假设您的 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')
]

然后你可以像这样将它们写到master(从左上角开始, cell 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)
于 2017-03-06T02:19:16.637 回答
0

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

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

于 2020-06-17T01:31:41.747 回答