2014-01-20 5 views
0

15 개의 열과 3 개의 헤더 행이있는 Google 스프레드 시트가 있습니다. 데이터를 포함하는 수백 개의 행이 있고 새 행이 계속 추가됩니다.Google 스프레드 시트 : 특정 열의 셀 값을 셀 값이 포함 된 하이퍼 링크로 변환하는 방법?

열 C와 H의 셀 값이 링크 내의 셀 값과 하이퍼 링크 텍스트의 셀 값을 포함하는 하이퍼 링크로 자동 변환되도록하려고합니다.

예 : 열 C, 행 300에는 v74k39ch 값이 포함됩니다. =HYPERLINK("http://www.example.com/v74k39ch","v74k39ch")

위의 작업을 수행하는 Google Apps Script는 데이터를 수동으로 입력하거나 C 또는 H 열에 복사/붙여 넣을 때마다 실행되어야합니다. 데이터 집합 (예 : 여러 행 복사/붙여 넣기)과 함께 작동해야합니다. 다른 시트의 단일 열에서 스크립트의 시트에있는 열 C 또는 H까지의 데이터).

function onEdit(event) { 
    var rng = event.source.getActiveRange(); 
    var val = rng.getValues(); 
    var col = rng.getColumn(); 
    if(col == 3) { 
    for(var i = 0; i < val.length; i++) { 
     rng.setValues('=HYPERLINK("http://www.example.com/'+val+'","'+val+'")'); 
    } 
    } 
    if(col == 8) { 
    for(var i = 0; i < val.length; i++) { 
     rng.setValues('=HYPERLINK("http://www.website.com/'+val+'","'+val+'")'); 
    } 
    } 
} 

내가 뭘 : URL이 열 H. 여기

에 사용되는 것보다 열 C에 사용하는 URL이 다릅니다은 내가 시작 왔 그것이 작동하지 않는거야 잘못된? 필자는 JavaScript 기본 사항에 대해 더 자세히 배우려고했지만 경험이 많은 프로그래머는 아니며이 스크립트를 작성하는 것이 혼란스러운 작업임이 입증되었습니다. 모든 지침을 크게 주시면 감사하겠습니다.

답변

0

나는 당신이 여기서 무엇을하려고하는지 정확히 모르겠다. 그러나 나는 너를 조금 더 가까이서 얻을 수있을 것이다.

먼저 setValues ​​()를 사용하고있는 것으로 나타났습니다. 이를 위해서는 사각형 격자 (2 차원 배열)를 다시 설정해야합니다. setValue()에서는 작동하지만 setValues ​​()에서는 작동하지 않는 문자열 값을 다시 설정하고 있습니다.

다음으로 수식 작업을하기 때문에 setValues ​​() 대신 setFormulas()를 사용하면 더 나은 결과를 얻을 수 있습니다.

희망이 있습니다.

2

잘하셨습니다.

누락 된 부분은 무엇입니까?

  • for 루프는 val.length 시간 범위에 동일한 문자열을 추가합니다.
  • set.Values ​​() 사용주의 복수형 "s"에 배열이 필요하면 문자열을 설정하십시오. []로 둘러 쌀 수 있습니다.
  • 아래 코드에서 setValue()를 사용하면 JKWA가 언급 한대로 setFormula()를 사용해야합니다.

다음은 코드입니다.

function onEdit(event) { 
    var sheet = event.source.getActiveSheet(); 
    var rng = sheet.getActiveRange(); 
    var val = rng.getValues(); 
    var col = rng.getColumn(); 
    var row = rng.getRow(); 
    var h_string = '=HYPERLINK("http://www.example.com/'+val+'","'+val+'")'; 
    if(col == 3 || col == 8) { 
    ((col == 3)? col = "C" : col = "H"); 
    cell = sheet.getRange(col+row); 
    cell.setFormula(h_string); 
    } 
} 
관련 문제