【发布时间】:2015-06-10 00:57:49
【问题描述】:
我在 Google 电子表格上有两张表格。一个有很多信息和引用,另一个在列的第一个单元格中具有相同的引用,下面有链接名称和链接。我试图通过让用户输入他们想要搜索的引用然后搜索第二张表以找到引用并有一个带有链接的弹出框来解决“一个单元格中没有多重超链接”的限制。
到目前为止,我能够从第二个电子表格列中获取链接,并使用以下代码在弹出框中显示它们:
function main(){
var column = SearchAndFind()
showURL(getLinks(column))
}
function getLinks(col){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = ss.setActiveSheet(ss.getSheets()[1]);
var cell = ss.getActiveCell();
var values = sh.getDataRange().getValues();
var myArray = []
for(n=1;n<values.length;++n){
var cell = values[n][col] ;
myArray.push(cell);
}
return myArray;
}
function showURL(data){
var app = UiApp.createApplication().setHeight(40+8*data.length).setWidth(200);
app.setTitle("Show URLs");
var panel = app.createVerticalPanel();
app.add(panel);
for(var d=0 ; d<data.length;d=d+2){
var link = app.createAnchor(data[d],data[(d+1)]);
panel.add(link);
}
var doc = SpreadsheetApp.getActiveSpreadsheet();
doc.show(app);
return;
}
当我将随机列号硬编码到 getLinks 函数并且它工作正常时,我需要能够从用户搜索第二张表中每列中的第一个单元格中获取列号。
这是我现在无法使用的代码:
//I know that it will always be the second sheet on the spreadsheet
//Search the column headers on the second sheet
//When one matches, return the index
function SearchAndFind(){
//Make the 2nd sheet active
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = ss.setActiveSheet(ss.getSheets()[1]);
var range = sh.getRange(1, 1, sh.getMaxRows(), 1);
var values = range.getValues();
//Get the user input for the text they want to search
var ui = SpreadsheetApp.getUi();
var search = ui.prompt('Enter the ID: ');
var searchString = search.getResponseText()
//for loop to iterate through the first row and find the matching cell
//return the index of that column
for (n = 0; n < values[0].length; n++){
var cell = values[0][n]
if (cell === searchString){
return n;
}
}
}
当我运行所有代码(包括不起作用的函数SearchAndFind)时,弹出框出现undefined,无处链接。诚然,我对 Javascript 没有太多经验,所以我认为我对它的理解还不够好,无法在这里找到错误。
【问题讨论】:
标签: google-apps-script google-sheets