多くのシートと目次を含む複雑なGoogleスプレッドシートがあります。クリックしてシート名に直接移動できるように、シート名へのリンクを作成する方法はありますか?つまり、セル「sheet5」をクリックすると、sheet5に切り替わりますか?
Googleスプレッドシートで別のシートに切り替えるときは、ブラウザのアドレスバーのURLに注意してください。 URLの最後に次のようなものが表示されます。
#gid=0
この番号は、シートを切り替えると変わり、表示するシートを指定します。 URL全体をコピーし、次の式を使用してハイパーリンクを作成します。
=hyperlink("https://docs.google.com/spreadsheet/ccc?key=0AsaQpHJE_LShcDJ0dWNudHFZWVJqS1dvb3FLWkVrS0E#gid=0", "LINK TEXT")
この質問を最初に書いて以来、この質問についてよく考えてきました。スクリプトを使用したソリューションを思いつきました。
スプレッドシートを開いた状態で、Toolsメニューをクリックしてから、Script editor ...をクリックします。このすべてのコードをエディターに貼り付けます。
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;
}
スクリプトを保存してから、スプレッドシートを更新します。 1、2秒後、新しいメニューTasksがHelpの後に表示されます。このメニューには1つの項目があります:Go to sheet ...
このメニュー項目は、現在のスプレッドシート内のすべてのシートの名前のリストを含むパネルを開きます。見た目は似ていませんが、シート名のいずれかをクリックすると、そのシートが前面に表示されます。
別の質問への回答として、 このスクリプトは改善されました スクロール可能なビューとボタンを含めます。
私の経験からこれを行う最良の方法は、機能をボタン/画像に結び付けることです。唯一の欠点は、ボタンに割り当てられたスクリプトとともにパラメーターを渡すことができないことです。このため、各ナビゲーションに固有の関数を作成する必要がありますが、単一のスクリプトファイルで呼び出すことができます。
手順:
画像を作成し(挿入->画像)、好みに合わせてスタイルを設定します
次を使用してカスタム関数を作成します。
function showSheetByName(Name) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName(Name);
SpreadsheetApp.setActiveSheet(sheet);
}
次に、ボタンに固有の機能
function showSheet5() {
showSheetByName("Sheet5");
}
最後に、この機能をボタンに割り当てます
Assign Script...
showSheet5
これで、ボタンをクリックして「Sheet5」に移動できるようになります。これは、シートの特定の領域に移動するように変更することもできます。