it-swarm.dev

Hiperlink de planilha do Google para uma planilha específica

Gostaria de abrir uma folha específica de uma planilha do Google de um hiperlink em outra planilha.

Eu tenho um link diferente na minha planilha mestre, e cada um deve ter um hiperlink para a mesma planilha de escravos, mas para uma planilha diferente.

Eu sei a função de hiperlink, mas não faz para uma folha específica.

Obrigado pela ajuda

10
ulisse

Você pode usar esse script personalizado (Ferramentas> Editor de Script) e conectá-lo a, e. desenho personalizado (Inserir> Desenho ...> Salvar e Fechar, clique com o botão direito em novo desenho> Atribuir Script ...> "goToSheet2")

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

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

Atualização:
Na versão mais recente você pode selecionar célula e adicionar link (Inserir> Link) e selecionar link para uma planilha específica diretamente:
Insert link to sheet.

13
rejthy

A função HYPERLINK pode link para outra planilha na mesma pasta de trabalho; Se você observar a URL da planilha, no final dela há #gid=x onde x é exclusivo para cada planilha.

O problema é que ele abrirá a planilha como uma nova instância da planilha em outra guia, o que provavelmente não é desejável. A solução seria inserir imagens ou desenhos como botões e atribuir um script a eles que ativará folhas específicas.

9
AdamL

Como alternativa, você pode tentar criar uma função personalizada. Com a planilha aberta, clique no menu Tools , e Editor de script .... Cole o código no editor:

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

Salvar, atualizar a planilha e, em seguida, digite sua função personalizada

=SHEETID("Your Custom Sheet Name")

=SHEETID(A1)

E voila! O ID exclusivo da guia (na planilha atual) é gerado. Você pode hiperlink para ele usando a seguinte fórmula:

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

Eu pessoalmente fiz isso com base no que @rejthy disse: Em scripts eu criei esta função:

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

e então na minha planilha onde eu preciso do link eu fiz isso: =HYPERLINK("#gid="&GET_SHEET_ID("Factures - "&$B$1);"Année en cours")

0
Adrien Schaegis

Então, o que eu entendo do OP é que você tem uma planilha principal que você quer ter links para folhas individuais, onde uma ou mais dessas folhas podem estar em arquivos de planilha única ou múltipla.

A função HYPERLINK somente transforma uma URL em um hiperlink e é realmente útil apenas quando você deseja ter hipertexto em vez de apenas um link. Se você inserir o URL bruto como os dados, ele será automaticamente transformado em um hiperlink, portanto não há trabalho adicional.

Como mencionado em outras respostas, a solução é ter o URL da planilha e, em seguida, usar o valor gid para calcular o link para a planilha desejada na planilha. Você pode escrever um aplicativo simples que coleta todos os links das folhas individuais e os grava no master.

Abaixo estão alguns trechos de pseudocódigo (Python) que podem ajudá-lo a começar. Eu estou deixando de fora todo o código de autenticação boilerplate, mas se você precisar, veja este post e este vídeo . O código abaixo supõe que o endpoint do seu serviço de API é SHEETS.

Isso lê uma planilha de destino para criar links para cada uma das suas planilhas:

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

Em vez de imprimir na tela, digamos que você os armazenou em uma matriz (name, URL) 2-Tuple no seu aplicativo, portanto, parece algo como essa lista chamada 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')
]

Você pode então escrevê-los para o mestre (a partir do canto superior esquerdo, célula A1) assim:

SHEET_ID = MASTER_SHEET_DRIVE_FILE_ID
SHEETS.spreadsheets().values().update(
    spreadsheetId=SHEET_ID, range='A1',
    body={'values': sheet_data},
    valueInputOption='USER_ENTERED'
).execute()

Algumas ressalvas ao usar gid:

  • A primeira folha padrão criada para você (Folha1) sempre tem um gid=0.
  • Qualquer folha que você adicionar depois disso terá um gid aleatório.
  • Não inclua gid=0 na primeira planilha nas suas planilhas, pois você ou alguém pode ter excluído a planilha original, como no exemplo acima.

Se você quiser ver mais exemplos de uso da Sheets API, aqui estão mais vídeos que eu fiz (junto com postagens que se aprofundam em cada exemplo de código):

Então, quando você abrir o mestre na interface do usuário do Planilhas, poderá clicar em qualquer uma das planilhas individuais, independentemente de quais arquivos de planilhas eles estão. Se desejar que eles sejam automaticamente abertos por outro aplicativo ou script, a maioria das linguagens de programação maneiras de iniciar um navegador da web, de acordo com o URL de destino. Em Python, seria o módulo webbrowser ( docs ):

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