Google电子表格超链接到特定工作表

时间:2012-11-15 04:55:55

标签: google-sheets google-api spreadsheet google-spreadsheet-api google-sheets-api

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

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

我知道超链接功能,但它不适用于特定的工作表。

感谢您的帮助

6 个答案:

答案 0 :(得分:13)

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

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

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

<强>更新
在最新版本中,您可以选择单元格并添加链接(插入&gt;链接)并直接选择指向特定工作表的链接:
Insert link to sheet.

答案 1 :(得分:9)

HYPERLINK函数可以链接到同一工作簿中的另一个工作表;如果您观察到电子表格的网址,则会在#gid=x处显示x,其中{{1}}对于每个工作表都是唯一的。

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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

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

正如其他答案所述,解决方案是让电子表格的网址使用gid值来计算电子表格中所需图纸的链接。您可以编写一个简单的应用程序来收集所有单个工作表的链接并将其写入主文档。

以下是一些可以帮助您入门的伪代码(Python)片段。我将遗漏所有样板代码验证码,但如果您需要,请参阅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的示例,以下是我制作的更多视频(以及深入研究每个代码示例的帖子):

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

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

答案 4 :(得分: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")

答案 5 :(得分:0)

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

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