2017-11-11 23 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

相关问题