2012-05-22 60 views
4

我有一個谷歌電子表格。在某些單元格中,它有多個我想與單個超鏈接關聯的名稱(字符串)。谷歌電子表格的腳本,爲一個單元格提供多個超鏈接選擇

E.g.如果我有一個像「查爾斯達爾文」這樣的單元格,我很容易通過做類似 =Hyperlink(VLOOKUP("Charles Darwin", People!$A$1:$B$738, 2, false), "Charles Darwin") (請注意,我有一個「人物」表單從中獲取超鏈接)來創建超鏈接。

但是,如果我碰巧在該單元格中有多個條目,請說「;」或換行符分開,例如「Charles Darwin; George Washington」,我不能那樣做。我想讓用戶能夠點擊單元格,將單元格的內容作爲參數發送給某種腳本,並讓該腳本在我的「人員」表格中查找這些超鏈接字符串,然後向用戶顯示緊鄰該單元格的一點點「彈出」,其中可以點擊期望的超鏈接。

我試圖找到這個論壇上的這些行的東西,但似乎沒有出現類似的東西。可能有人對我有一個或兩個鏈接(或基本示例代碼),我可以嘗試解決這個問題? (我認爲這是可能的)。

謝謝

回答

2

在同一個單元上不可能有兩個超鏈接。

可以將腳本寫入Google Spreadsheets,但我不確定它會很好地滿足您的用例。我看到的解決方案是這樣的:

  • 用戶單擊所需的單元格,選擇它。
  • 然後他點擊一個自定義菜單並在那裏選擇一個入口,例如,顯示鏈接
  • 彈出窗口將顯示(不包括單元格,但集中在屏幕上)與鏈接。

您認爲這樣很好嗎?該代碼是這樣的後您將其粘貼在腳本編輯器(打開菜單工具>腳本編輯器)

function onOpen() { 
    SpreadsheetApp.getActive(). 
    addMenu("Test", [{name: 'Show Links', functionName:'showLinks'}]); 
} 

function showLinks() { 
    var values = SpreadsheetApp.getActiveRange().getValue().split(';'); 

    var app = UiApp.createApplication().setTitle('Links'); 
    var grid = app.createGrid(values.length, 2); 

    for(var i = 0; i < values.length; ++i) { 
    var url = findLink(values[i]); 
    grid.setWidget(
     i, 0, app.createLabel(values[i])).setWidget(
     i, 1, url ? app.createAnchor(url, url) : app.createLabel('Not Found')); 
    } 

    app.add(grid); 
    SpreadsheetApp.getActive().show(app); 
} 

var mapName2Url = null; 
function findLink(name) { 
    if(mapName2Url == null) { //lazy load 
    mapName2Url = {}; 
    var data = SpreadsheetApp.getActive().getSheetByName('People').getDataRange().getValues(); 
    for(var i = 1; i < data.length; ++i) //skipping the header 
     mapName2Url[data[i][0]] = data[i][1]; 
    } 
    return mapName2Url[name]; 
} 

,運行的OnOpen功能進行二次授權,併爲您創建的菜單。下次打開電子表格時,應自動創建菜單。

順便說一句,我沒有測試過這個代碼,所以它可能包含愚蠢的錯誤。

+0

嘿,恩裏克,謝謝你的幫助。這段代碼很好用 - 它的邏輯是正確的,但我確實需要它不是一個菜單項。我打算將此電子表格作爲「列表視圖」(無菜單)顯示在網站中。我想我真的需要的是爲每個單元格,我想作爲「多個超鏈接」本身鏈接到此腳本。也許我需要發佈腳本「作爲服務」? (我真的不知道區別)。我還看到他們已經推出了「構建用戶界面」的「exprimental」功能。附:由於某種原因,「測試」菜單僅出現一次,然後消失。 – a1s2d3f4

+0

忘了添加@上面,對不起。 – a1s2d3f4

+0

您將無法讓一個單元格表現爲「多個超鏈接」,這是不可能的。如果您的電子表格後面有單元格,您可以使用'ArrayFormula'來讓所需單元格的行中的每個單元格都具有所需的每個鏈接。 –

相關問題