2015-06-10 55 views
0

我在Google電子表格中有兩張表。一個有很多信息和參考,另一個在一個列的第一個單元格中有相同的參考,其中包含下面的鏈接名稱和鏈接。我試圖通過讓用戶輸入他們想要搜索的引用,然後搜索第二張表來找到引用,並且有一個帶有鏈接的彈出框來解決「在一個單元中沒有多個超鏈接」的限制。Google表格中的Javascript - 從提示輸入中獲取列號

到目前爲止,我能夠得到第二電子表格列中的鏈接,並在彈出框中使用此代碼顯示出來:

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的經驗,所以我覺得我對這裏的錯誤不夠了解。

回答

0

您只拖動一列,然後檢查列中的匹配。

var range = sh.getRange(1, 1, sh.getMaxRows(), 1); 

僅給出第一列。並且

for (n = 0; n < values[0].length; n++){ 

查看那些列。所以你的值[0] .length是,你的循環只運行一次。

你想遍歷所有行形成第一列,或通過所有列的第一行。

你也應該將循環改爲

for (var n = 0; n < values[0].length; n++){