10

別のスプレッドシートのハイパーリンクからGoogleスプレッドシートの特定のシートを開きたいとします。Googleスプレッドシートの特定のシートへのハイパーリンク

私は自分のマスタースプレッドシートに異なるリンクを持ち、すべて同じスレーブスプレッドシートへのハイパーリンクが異なるシートにあるはずです。

ハイパーリンク機能はわかりますが、特定のシートには適用されません。助けのための

おかげ

答えて

9

HYPERLINK機能ことができ、同じブック内の別のシートへリンク。スプレッドシートのURLを確認すると、最後に#gid=xが表示されます。ここで、xは各シートに固有です。

問題は、別のタブでスプレッドシートの新しいインスタンスとしてシートを開きますが、これはおそらく望ましくないことです。回避策は、画像や図をボタンとして挿入し、特定のシートをアクティブにするスクリプトを割り当てることです。

+4

信じられない、これは標準の機能ではありません。回避策ありがとうございました – Brandon

+1

私はこの回答に役立ちました。コメントを追加するだけで、同じ[スプレッドシート]ドキュメント内からそのワークシートをリンクしている場合、[別の[ブラウザ]タブで開きます。あなたの例が私のようなものであれば、HTMLまたはwikiページを特定のワークシートにリンクしているので、心配はありません。#gidトリックは機能しません(ワークシートのタブを削除する人はいません...) #gidはFIXED POSITIONの番号なので、左から4番目のワークシートは#gid = 3となります)。 –

11

このカスタムスクリプト([ツール]> [スクリプトエディタ])を使用して、たとえば次のように接続できます。カスタム描画(挿入>図面...>>保存して閉じる、右新しい図面をクリックして割り当てスクリプト...>「goToSheet2」)

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

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

更新:あなたができる最新のバージョンで
セルを選択し、リンク([挿入]> [リンク)を追加し、直接特定のシートへのリンクを選択します。
Insert link to sheet.

+0

ベストアンサーとオプションは、**アップデート:** 1つです。 –

0

それでは、私はOPから理解することは、あなたが個々のシートへのリンクを持つようにしたい一つのマスタースプレッドシートを持っているということです、それらのシートのうちの1つ以上が単一であってもよく、または複数であってもよいeスプレッドシートファイル。

HYPERLINK関数はURLをハイパーリンクに変換するだけで、リンクの代わりにハイパーテキストを使用する場合にのみ便利です。データとして生の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組の配列にそれらを保存しましょう、そう下このような(左上隅のセルA1から始まる)あなたは、マスターに書き込むことができ

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') 
] 

:-line、それがこのリストのようなものがsheet_dataと呼ば見えます

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を使用している場合:

  • を、あなたのために作成した最初のデフォルトのシート(シート1)は常にgid=0を持っています。
  • その後に追加するシートには、ランダムgidが含まれます。
  • スプレッドシートの1枚目のシートにはgid=0を記入しないでください。ただし、私の例のように、あなたや他の人が元のデフォルトシートを削除している可能性があります。

あなたはシートのAPIを使用してのより多くの例を見たい場合は、ここで私は(各コードサンプルを掘り下げ記事と一緒に)行った他の動画です:

スプレッドシートファイルに関係なく、スプレッドシートのUIにマスターを開くと、個々のスプレッドシートファイルに関係なく、個々のスプレッドシートにリンクすることができます。他のアプリやスクリプトで自動的に開きたい場合は、開発者にターゲットURLを指定してWebブラウザを起動する方法を提供します。スクリプトで 私はこの関数を作成:

私の中
/** 
* 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; 
} 

、その後、私はpersonnalyこれが言っ@rejthyに基づいた

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

:Pythonでは、それはwebbrowserモジュール(docs)になります私がこれをしたリンクが必要な場所:=HYPERLINK("#gid="&GET_SHEET_ID("Factures - "&$B$1);"Année en cours")

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) 

そしてvoila!現在のスプレッドシート内のタブの一意のIDが出力されます。あなたは、次の式を使用して、それにハイパーリンクすることができます

=HYPERLINK("#gid="&SHEETID(A1),"Link") 
関連する問題