2017-11-11 24 views
0

我有一個非常大的谷歌表格文檔,我創造的工作。我寫了一個簡短的腳本來從單獨的HTML文件創建一個側欄。該腳本如下:如何鏈接到側邊欄中谷歌表格中的特定行

function onOpen() { 
    SpreadsheetApp.getUi() 
    .createMenu('MaintainRegistry') 
    .addItem('GenerateContractTemplate', 'generateContractTemplate') 
    .addToUi(); 
    SpreadsheetApp.getUi() 
.createMenu('Sidebar').addItem('Open', 'openSidebar').addToUi(); 
    SpreadsheetApp.getUi() 
.createMenu('Sidebar').addItem('Open', 'openSidebar').addToUi(); 
} 

功能是:

function openSidebar() { 
var html = HtmlService.createHtmlOutputFromFile('index'); 
SpreadsheetApp.getUi().showSidebar(html); 
} 

而且簡單的HTML是:

<!DOCTYPE html> 

<head> 
<link rel="stylesheet" 
href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0- 
alpha.6/css/bootstrap.min.css" integrity="sha384- 
rwoIResjU2yc3z8GV/NPeZWAv56rSmLldC3R/AZzGRnGxQQKnKkoFVhFQhNUwEyJ" 
crossorigin="anonymous"> 


<style type = "text/css"> 

button { 
width: 150px; 
margin: 0 auto; 
} 

#header { 
background-color: rgb(47,129,183); 
margin-bottom: 20px; 
padding: 5px; 
color: white; 
text-align: center; 
} 



</style> 

</head> 



<body> 

<div id="header"> 
<h1> Index </h1> 
</div> 

<div class="text-center"> 

<p> 
<button type="button" class="btn btn-primary">Hotel name</button> 
</p> 


<p> 
<button type="button" class="btn btn-primary">Periods</button> 
</p> 

<p> 
<button type="button" class="btn btn-primary">Contract template</button> 
</p> 

<p> 
<button type="button" class="btn btn-primary">Non renewals</button> 
</p> 

</div> 

</body> 

</html> 

本質上講,這只是一個簡單的側邊欄,我想按鈕將用戶帶到電子表格中的特定位置。有超過60列,所以如果用戶點擊'酒店名稱',我希望它引導他們,例如列AE等...

這是怎麼做到的?我不知道要在鏈接中引用什麼,顯然不希望它打開新的頁面 - 只是跳到右側的列...

回答

0

將這些添加到您的gs文件。更改您想定位到的每個喲的工作表名稱和行和列。

function hotel(){ 
var ss=SpreadsheetApp.getActiveSpreadsheet() 
var s=ss.getSheetByName("Sheet1") 
var row=s.getActiveCell().getRow() 
var column=12 
s.getRange(row, column).activate() 
} 
function periods(){ 
var ss=SpreadsheetApp.getActiveSpreadsheet() 
var s=ss.getSheetByName("Sheet1") 
var row=s.getActiveCell().getRow() 
var column=13 
s.getRange(row, column).activate() 
} 
function contracttemplate(){ 
var ss=SpreadsheetApp.getActiveSpreadsheet() 
var s=ss.getSheetByName("Sheet1") 
var row=s.getActiveCell().getRow() 
var column=14 
s.getRange(row, column).activate() 
} 
function nonrenewals(){ 
var ss=SpreadsheetApp.getActiveSpreadsheet() 
var s=ss.getSheetByName("Sheet1") 
var row=s.getActiveCell().getRow() 
var column=15 
s.getRange(row, column).activate() 
} 

在HTML文件中,我添加了對jquery的引用。我改變了按鈕,使其具有唯一的ID和添加的腳本來處理按鈕點擊並調用新的功能。

<!DOCTYPE html> 
<html> 
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"> 
</script> 
<head> 
<link rel="stylesheet" 
href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0- 
alpha.6/css/bootstrap.min.css" integrity="sha384- 
rwoIResjU2yc3z8GV/NPeZWAv56rSmLldC3R/AZzGRnGxQQKnKkoFVhFQhNUwEyJ" 
crossorigin="anonymous"> 

<style type = "text/css"> 
button { 
width: 150px; 
margin: 0 auto; 
} 
#header { 
background-color: rgb(47,129,183); 
margin-bottom: 20px; 
padding: 5px; 
color: white; 
text-align: center; 
} 
</style> 
</head> 
<body> 
<div id="header"> 
<h1> Index </h1> 
</div> 
<div class="text-center"> 
<p> 
<input id="Button1" button type="button" class="btn btn-primary" 
value="Hotel name"> 
</p> 
<p> 
<input id="Button2" button type="button" class="btn btn-primary" 
value="Periods"> 
</p> 
<p> 
<input id="Button3" button type="button" class="btn btn-primary" 
value="Contract template"> 
</p> 
<p> 
<input id="Button4" button type="button" class="btn btn-primary" value="Non 
renewals"> 
</p> 
</div> 
</body> 
    <script> 
$("#Button1").on('click',function(){ 
    google.script.run.hotel() 
    google.script.host.editor.focus() 
}); 
    $("#Button2").on('click',function(){ 
    google.script.run.periods() 
    google.script.host.editor.focus() 
}); 
$("#Button3").on('click',function(){ 
    google.script.run.contracttemplate() 
    google.script.host.editor.focus() 
}); 
    $("#Button4").on('click',function(){ 
    google.script.run. nonrenewals() 
    google.script.host.editor.focus() 
}); 
    </script> 
</html> 
+0

太棒了!非常感謝:)只是我想做的小修改 - 是否有一種方法可以引用用戶所在的行?例如,用戶在第450行,當他們點擊一個按鈕時,它應該將它們發送到相關的列。但我真的不想將它們發回電子表格的頂部,因爲這似乎有點反作用。再次感謝你的幫助! – DaveB1

+0

我改變了上面的腳本去活動行。如果這解決了您的問題,請點擊答案左側的複選標記以批准答案。謝謝。 –

+0

真棒!乾杯這麼多 – DaveB1

相關問題