Ç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?
Ç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?
Yanıtlar:
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")
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 ...
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 .
gid=7
.
gid=7
, soldan sekizinci sayfa olmalıdır.
gid
. Eğer pozisyon değişirse, gid
değişir ve artık ona güvenilir bir şekilde bağlanamazsınız.
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.
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.