2012-05-22 3 views
4

Google 스프레드 시트가 있습니다. 일부 셀에는 개별 하이퍼 링크와 연관시키고 자하는 여러 개의 이름 (문자열)이 있습니다.하나의 셀에 대해 여러 개의 하이퍼 링크 선택을 제공하는 Google 스프레드 시트 용 스크립트

예. "찰스 다윈 (Charles Darwin)"과 같은 셀이있는 경우 =Hyperlink(VLOOKUP("Charles Darwin", People!$A$1:$B$738, 2, false), "Charles Darwin") 과 같은 이름으로 하이퍼 링크를 만드는 것이 쉽습니다 (하이퍼 링크를 가져 오는 "사람"시트가 있습니다)

하지만 그 셀에 여러 항목이 있으면 ";"라고 말하십시오. 또는 개행 문자로 구분됩니다 (예 : "Charles Darwin, George Washington"). 그렇게 할 수 없습니다. 사용자에게 셀을 클릭하고, 셀의 내용을 (어떤 인수로) 스크립트에 보내고, 그 스크립트가 내 "사람"시트의 하이퍼 링크를 찾을 수있게하고 싶습니다. 문자열을 입력 한 다음 사용자에게 원하는 하이퍼 링크를 클릭 할 수있는 작은 "팝업"을 표시 할 수 있습니다.

나는이 포럼에서이 라인들을 따라 뭔가를 찾으려고 노력했지만 비슷한 것은 나오지 않았다. 어떤 사람이 저를 위해 링크 또는 두 개 (또는 기본 예제 코드)를 가지고있을 수 있습니다. (나는 이것이 가능하다고 가정하고있다). 그것은 불가능

감사

답변

2

는 동일한 셀에 두 개의 하이퍼 링크를해야합니다.

Google 스프레드 시트에 스크립트를 작성할 수는 있지만 유스 케이스에 잘 맞지 않을지 잘 모르겠습니다. 내가 보는 해결책은 다음과 같습니다.

  • 사용자가 원하는 셀을 클릭하여 선택합니다.
  • 그런 다음 사용자 정의 메뉴를 클릭하고 거기에서 항목을 선택합니다. 링크보기
  • 링크가 팝업으로 표시됩니다 (셀 외에는 화면 중앙에 위치).

괜찮습니까? 코드는 다음과 같이 스크립트 편집기에 붙여 넣기 한 후

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

안녕하세요, Henrique, 도와 주셔서 감사합니다. 이 코드는 훌륭하게 작동합니다 - 논리가 맞지만 메뉴 항목이 아니어야합니다. 이 스프레드 시트를 웹 사이트에 "목록보기"(메뉴 없음)로 표시하려고합니다. 내가 정말로 필요로하는 것은 각 셀에 대해 "다중 하이퍼 링크"로 사용하여이 스크립트의 링크가되도록하는 것입니다. 아마도 "서비스로"스크립트를 게시해야합니까? (나는 그 차이를 정말로 모른다). 또한 그들은 "exprimental"기능인 "사용자 인터페이스 구축"기능을 도입 한 것을 보았습니다. 추신. 어떤 이유로 "테스트"메뉴가 한 번만 나와서 사라졌습니다. – a1s2d3f4

+0

@ above을 (를) 추가하는 것을 잊어 버렸습니다. 죄송합니다. – a1s2d3f4

+0

하나의 셀을 "다중 하이퍼 링크"로 동작시키지 못하게됩니다. 이는 단지 불가능한 기간입니다. 스프레드 쉬트에서 자유롭게 사용한 셀을 가지고 있다면'ArrayFormula'를 사용하여 원하는 셀의 행에있는 각 셀에 각 필수 링크가 있도록 할 수 있습니다. –