it-swarm.com.de

Google-Hyperlink zu einer Tabellenkalkulation

Ich möchte ein bestimmtes Blatt einer Google-Tabelle von einem Hyperlink in einer anderen Tabelle öffnen.

Ich habe einen anderen Link in meiner Master-Tabelle, und jeder sollte einen Hyperlink auf dieselbe Slave-Tabelle, aber auf eine andere Tabelle haben.

Ich kenne die Hyperlink-Funktion, aber es gilt nicht für ein bestimmtes Blatt.

Danke für die Hilfe

10
ulisse

Sie können diese benutzerdefinierte Skriptfunktion (Extras> Skript-Editor) verwenden und sie mit z. Benutzerdefinierte Zeichnung (Einfügen> Zeichnung ...> Speichern und Schließen, dann mit der rechten Maustaste auf neue Zeichnung> Skript zuweisen ...> "goToSheet2")

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

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

Update:
In der neuesten Version können Sie eine Zelle auswählen und einen Link hinzufügen (Einfügen> Link) und den Link zu einem bestimmten Blatt direkt auswählen:
 Insert link to sheet.

13
rejthy

Die HYPERLINK-Funktion kann verlinkt zu einem anderen Arbeitsblatt in derselben Arbeitsmappe. Wenn Sie die URL des Arbeitsblatts beobachten, steht am Ende #gid=x, wobei x für jedes Arbeitsblatt eindeutig ist.

Das Problem ist, dass das Arbeitsblatt als neue Instanz der Kalkulationstabelle in einem anderen Tab geöffnet wird, was wahrscheinlich nicht wünschenswert ist. Sie können Bilder oder Zeichnungen als Schaltflächen einfügen und ihnen ein Skript zuweisen, mit dem bestimmte Blätter aktiviert werden.

9
AdamL

Alternativ können Sie versuchen, eine benutzerdefinierte Funktion zu erstellen. Klicken Sie bei geöffneter Kalkulationstabelle auf das Menü Tools , dann auf Script editor .... Fügen Sie den Code in den Editor ein:

/**
 * 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();
}

Speichern Sie die Tabelle, aktualisieren Sie sie und geben Sie Ihre benutzerdefinierte Funktion ein

=SHEETID("Your Custom Sheet Name")

=SHEETID(A1)

Und voila! Die eindeutige ID für die Registerkarte (in der aktuellen Tabelle) wird ausgegeben. Sie können mit der folgenden Formel einen Hyperlink darauf setzen:

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

Ich persönlich habe dies auf der Grundlage dessen gemacht, was @rejthy sagte: In Skripten habe ich diese Funktion erstellt:

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

und dann in meinem Blatt, wo ich den Link brauche, tat ich folgendes: =HYPERLINK("#gid="&GET_SHEET_ID("Factures - "&$B$1);"Année en cours")

0
Adrien Schaegis

Was ich aus dem OP verstehe, ist also, dass Sie eine Master-Kalkulationstabelle haben, die Links zu einzelnen Tabellenblättern enthalten soll, wobei sich eine oder mehrere dieser Tabellenblättern in einer oder mehreren Tabellenkalkulationsdateien befinden können.

Die HYPERLINK-Funktion wandelt eine URL nur in einen Hyperlink um und ist wirklich nur nützlich, wenn Sie Hypertext anstelle eines Links verwenden möchten. Wenn Sie die unformatierte URL als Daten eingeben, wird diese automatisch in einen Hyperlink umgewandelt, sodass keine zusätzlichen Arbeiten erforderlich sind.

Wie in anderen Antworten erwähnt, besteht die Lösung darin, die URL der Tabelle zu verwenden und dann den Wert gid zu verwenden, um den Link zur gewünschten Tabelle in der Tabelle zu berechnen. Sie können eine einfache App schreiben, die alle Links der einzelnen Arbeitsblätter sammelt und in den Master schreibt.

Nachfolgend finden Sie einige Ausschnitte aus Pseudocode (Python), die Ihnen den Einstieg erleichtern können. Ich lasse den gesamten Boilerplate-Auth-Code aus, aber wenn Sie es brauchen, lesen Sie diesen Blogbeitrag und dieses Video . Der folgende Code setzt voraus, dass Ihr API-Service-Endpunkt SHEETS ist.

Dies liest eine Zieltabelle, um Links für jedes seiner Tabellen zu erstellen:

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

Anstatt auf dem Bildschirm zu drucken, nehmen Sie an, Sie haben sie in einem (name, URL) 2-Tuple-Array in Ihrer App gespeichert. In der unteren Zeile sieht die Liste also sheet_data aus:

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

Sie können sie dann wie folgt in den Master schreiben (ausgehend von der oberen linken Ecke, Zelle 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()

Einige Vorsichtsmaßnahmen bei der Verwendung von gid:

  • Das erste für Sie erstellte Standardblatt (Sheet1) hat immer einen gid=0.
  • Alle Blätter, die Sie danach hinzufügen, werden zufällig gid erhalten.
  • Verlassen Sie sich nicht auf einen gid=0 für das 1. Blatt Ihrer Kalkulationstabelle, da Sie oder eine andere Person möglicherweise das ursprüngliche Standardblatt gelöscht haben, wie in meinem obigen Beispiel.

Wenn Sie weitere Beispiele für die Verwendung der Sheets-API anzeigen möchten, finden Sie hier weitere Videos, die ich erstellt habe (zusammen mit Beiträgen, die sich in jedes Codebeispiel vertiefen):

Wenn Sie den Master dann in der Benutzeroberfläche von Sheets öffnen, können Sie zu jedem der einzelnen Arbeitsblätter wechseln, unabhängig davon, in welchen Arbeitsblattdateien er sich befindet. Wenn Sie möchten, dass sie automatisch von einer anderen App oder einem anderen Skript geöffnet werden, bieten die meisten Programmiersprachen Entwicklern eine Möglichkeiten, einen Webbrowser mit der Ziel-URL zu starten. In Python wäre dies das webbrowser-Modul ( docs ):

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