谷歌电子表格的超链接到一个特定的表(Google spreadsheet hyperlink to

2019-08-02 18:43发布

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

我在我的主电子表格的不同环节,每一个应该有一个超链接到同一个电子表格奴隶,但不同的表。

我知道超级链接功能,但它并没有尽到一个特定的表。

谢谢您的帮助

Answer 1:

你可以使用这个自定义脚本(工具>脚本编辑器)功能,并将其与连接如自定义绘制(插入>绘图...>保存并关闭,然后右击新图形>指定脚本...>“goToSheet2”)

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

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

更新:
在最新版本中,你可以选择单元格,并添加链接(插入>链接),然后选择链接直接特定表:



Answer 2:

HYPERLINK功能可以链接到另一片在同一工作簿; 如果你观察到电子表格中的URL,在它的尽头有#gid=x ,其中x是每个片唯一的。

问题是,它会打开该纸张,作为在另一个选项卡,这可能不是理想的电子表格的新实例。 的解决方法是插入图片或绘图按钮,并分配一个脚本将它们将激活特定片材。



Answer 3:

我personnaly这样做是基于什么@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")



Answer 4:

因此,我从OP不解的是,你有你想有链接到个体板,其中一个或多个这些片可在单个或多个电子表格文件一个主电子表格。

HYPERLINK函数只打开一个URL为超链接,当你想拥有超文本,而不是只是一个链接是真正唯一有用的。 如果输入的原始URL的数据,它会自动变成一个超链接,所以没有额外的工作。

在其他的答案所提到的,解决的办法是具有电子表格的URL然后使用gid值,计算链接到电子表格内的期望片。 你可以写一个简单的应用程序,收集所有的各个工作表链接,并将其写入到主。

下面是伪代码的一些片段(蟒蛇),可以帮助您开始。 我要离开了所有的样板授权码,但如果你需要它,看到这个博客帖子和视频 。 下面的代码假定您的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

  • 你(Sheet 1中)产生的第一默认片总是具有gid=0
  • 之后你添加的任何表将有一个随机的gid
  • 上不要银行gid=0在电子表格中的第1张然而,你或者其他人可能已经删除了原来的默认表,就像我上面的例子。

如果你想看到使用表API的更多的例子,这里有更多的我做了(与深入到每一个代码示例帖子一起)视频:

  • SQL数据迁移到表以及代码深潜后
  • 使用表API设置文本格式以及代码深潜后
  • 从生成电子表格数据幻灯片以及代码深潜后

然后,当你在表UI开拓大师,您可以点击任何个体板,无论他们在哪个电子表格文件。如果你希望他们被其他应用程序或脚本自动打开,大多数编程语言开发人员提供给出的目标URL的方式来推出一个网页浏览器。 在Python,这将是webbrowser模块( 文档 ):

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


Answer 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")


文章来源: Google spreadsheet hyperlink to a specific sheet