Google e-tabloda belirli bir sayfaya bağlantı


47

Çok sayıda sayfa ve bir içindekiler içeren karmaşık bir Google e-tablom var. Sayfa adlarına bağlantı oluşturmanın bir yolu var, böylece bir tıklamayla doğrudan sayfaya gidebilirsiniz? Yani: "sheet5" hücresine tıklandığında sheet5'e mi geçilir?


1
Artık Google e-tablolarında böyle bir seçenek var - bu e-tablodaki Ekle -> bağlantısını ve Sayfaları seçebilirsiniz. Ne yazık ki, bunu bir cevap olarak göndermek için gereken itibara sahip değilim.
Boris Strandjev

Yanıtlar:


59

Google Spreadsheets’te farklı bir sayfaya geçtiğinizde, tarayıcınızın adres çubuğundaki URL’ye dikkat edin. URL’nin sonunda şöyle bir şey görmelisiniz:

#gid=0

Sayfa değiştirdiğinizde bu sayı değişir ve hangi sayfanın gösterileceğini belirtir. URL'nin tamamını kopyalayın ve bu formüle bir köprü oluşturun:

=hyperlink("https://docs.google.com/spreadsheet/ccc?key=0AsaQpHJE_LShcDJ0dWNudHFZWVJqS1dvb3FLWkVrS0E#gid=0", "LINK TEXT")

Bir komut dosyası ile

Bu cevabı ilk yazdığımdan beri bu soruyu çok düşündüm ve bir senaryo içeren bir çözüm buldum.

Elektronik tablo açıkken, Araçlar menüsünü ve ardından Komut Dosyası düzenleyicisini ... tıklayın . Tüm bu kodu düzenleyiciye yapıştırın:

function onOpen(event) {
  var ss = event.source;
  var menuEntries = [];
  menuEntries.push({name: "Go to sheet...", functionName: "showGoToSheet"});
  ss.addMenu("Tasks", menuEntries);
}

function showGoToSheet() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var allsheets = ss.getSheets();
  var app = UiApp.createApplication();
  app.setTitle("Go to sheet...").setWidth(800).setHeight(600);
  var table = app.createFlexTable();
  table.setCellPadding(5).setCellSpacing(0);
  var goToSheetClick = app.createServerHandler('handleGoToSheetClick');
  var widgets = [];
  for (var i = 0; i < allsheets.length; i++) {
    var sheet_name = allsheets[i].getName();
    widgets[i] = app.createHTML(sheet_name).setId(sheet_name).addClickHandler(goToSheetClick);
    table.setWidget(i, 1, widgets[i])
  }
  var panel = app.createSimplePanel();
  panel.add(table);
  app.add(panel);
  ss.show(app);
}

function handleGoToSheetClick(e) {
  var sheet_name = e.parameter.source;
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName(sheet_name);
  sheet.activate();
  var app = UiApp.getActiveApplication();
  app.close();
  return app;
}

Komut dosyasını kaydedin, sonra elektronik tabloyu yenileyin. Bir veya iki saniye sonra, Yardım'dan sonra yeni bir menü Görevler görünecektir . Bu menüde bir madde var: Sayfaya git ...

Görevler> Sayfaya git ...

Bu menü öğesi, geçerli elektronik tablodaki tüm sayfaların adlarının listesini içeren bir panel açar. Öyle görünmüyor, ancak sayfa adlarından birine tıklarsanız, o sayfa öne çıkacaktır.


Başka bir sorunun cevabı olarak, bu senaryo kaydırılabilir bir görünüm ve düğmeler içerecek şekilde geliştirilmiştir .


Evet, şu anda bu tek uygulanabilir çözüm. Maalesef, "Sayfa 5" adı ile arasında çeviri yapmanın bir yolunu bulamadım gid=7.
Simon East

Ne demek istediğini tam olarak anlamadım. Sayfalar, soldan başlayarak 0'dan başlayarak numaralandırılır. Yani, "Sayfa5" adında bir sayfa varsa gid=7, soldan sekizinci sayfa olmalıdır.
William Jackson

1
Demek istediğim, Sayfa5’in ne olduğunu, yalnızca manuel olarak programlayamazsınızgid . Eğer pozisyon değişirse, giddeğişir ve artık ona güvenilir bir şekilde bağlanamazsınız.
Simon East

Ada göre bağlamanın bir yolunu bulursanız, lütfen gönderin!
Joe Casadonte

1
Daha İyi Seçenek Burada bulunabilir: stackoverflow.com/a/18518779/1814867
Mandar Pandit

7

Bunu deneyimlerime göre yapmanın en iyi yolu, bir işlevi bir düğmeye / resme bağlamaktır. Tek dezavantajı, bir düğmeye atanmış bir komut dosyası ile birlikte parametreleri geçemezsiniz. Bu nedenle, her bir navigasyona özel bir işlev yapmanız gerekecektir, ancak tek bir komut dosyasında çağırılabilirler.

Adımlar:

Bir resim oluşturun (Ekle -> resim) ve tercihinize göre stillendirin

Aşağıdakilerle özel bir işlev oluşturun:

function showSheetByName(Name) {
   var ss = SpreadsheetApp.getActiveSpreadsheet();
   var sheet = ss.getSheetByName(Name);
   SpreadsheetApp.setActiveSheet(sheet);
}

ve sonra düğmenize özgü bir işlev

function showSheet5() {
   showSheetByName("Sheet5");
}

Sonunda bu işlevi düğmenize atayın

Assign Script...
showSheet5

Artık düğmenize tıklayıp "Sayfa5" e gidebilirsiniz. Bu, ayrıca sayfanın belirli bir bölgesine gitmek için de değiştirilebilir.


Her düğmeye özel bir işlev eklemek yerine, onu "geçerli hücre" adlı sayfaya atlamak için kodlayabilirsiniz, örn. Okunacak 2. satırı değiştirin var sheet = ss.getSheetByName(ss.getActiveCell().getValue()); - daha sonra "düğmeyi" ekranın sabit bir yerine koyabilirsiniz ve onu "Geçerli hücrede sayfaya atla" olarak etiketleyin ve "showSheetByName" (şimdi bir parametreye ihtiyaç duymaz) olarak atayın. Kullanmak için hücreyi bir sayfa adıyla vurgulayın (örn. Sayfa 5) ve düğmesine tıklayın. Biraz dolaylıdır ancak çalışır, çünkü bir düğmeye tıklanması odağı vurgulanan hücreden kaldırmaz.
Motti Strom,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.