2012-09-09 1 views
5

getRange을 영역 대신 이름이 지정된 범위로 사용할 수 있습니까?
내가 그것을하는 것처럼 보일 때, 논증은 범위 여야한다고 말한다. 예를 들어 ,스크립트를 사용하여 명명 된 범위 Google 스프레드 시트가있는 getRange

대신 :

 getRange("A4:E7"); 

A4:E7의 지역은 Sheet1에있는 '이름'이라고 명명 된 범위로 만들어졌다.

당신은 아마 사용할 수 있습니다

var tableRange = SpreadsheetApp.getActiveSpreadsheet();.getRangeByName("Names"); 
getRange(tableRange); 

또는 그것을하는 다른 방법이있다. 전체 코드는 다음과 같습니다

function onEdit(event){ 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var editedCell = ss.getActiveCell(); 

    var columnToSortBy = 1; 
    var tableRange = ss.getRangeByName("Names"); 

    if(editedCell.getColumn() == columnToSortBy){ 
     var range = ss.getRange(tableRange); 
     range.sort({ column : columnToSortBy }); 
    } 
} 
+0

Google Stranger가 정의 된 이름을 사용할 수없는 이유는 확실하지 않습니다. – user1658604

+0

문제에 대한 답변이 아니라 단지 제안 사항입니다. 'getActiveCell()'이 필요하지 않습니다. 편집 이벤트는 편집 된 범위를 스크립트에 전달하므로'event.range.getColumn()'만 사용할 수 있습니다. – Tharkon

답변

10

https://developers.google.com/apps-script/class_spreadsheet#getRangeByName

명명 된 범위의 A1 주소를 반환하는 사용자 정의 기능 :

=myGetRangeByName("Names") 

이를 : 스프레드 시트의 셀,

function myGetRangeByName(n) { // just a wrapper 
    return SpreadsheetApp.getActiveSpreadsheet().getRangeByName(n).getA1Notation(); 
} 

다음 "Names"가 셀에 정의 된 모든 것을 넣을 것입니다. GAS의 공격적인 캐싱 때문에 "이름"을 다시 정의 할 때 업데이트되지 않습니다. 그러나 GAS가 매 시트 계산시이를 업데이트하도록 할 수 있습니다.

=myGetRangeByName("Names",now()) 

자바 스크립트는 사용하지 않은 매개 변수를 무시합니다.

다음 코드는 내가 생각하는 것입니다. 시트의 첫 번째 열을 편집하면 해당 열을 기준으로 범위가 정렬됩니다. 당신이 열 A를 목록을 이동하는 경우 getColumn()는 절대 열 범위에서 셀의 위치가 아닌를 반환하기 때문에

function onEdit(e) { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var editedCell = ss.getActiveCell(); 
    var columnToSortBy = 1; 
    var tableRange = ss.getRangeByName("Names"); 
    if (editedCell.getColumn() == columnToSortBy) { 
    tableRange.sort(columnToSortBy); 
    } 
} 

은 작동하지 않습니다. 이를 조정하려면 코드를 추가해야합니다.

+0

그 'now()'는 무엇입니까? 시트에 넣으면 오류가 발생했습니다. – jcollum

+0

https://support.google.com/drive/bin/static.py?hl=ko&topic=25273&page=table.cs&tab=1240285 – HardScale

+0

now() 매개 변수에 +1하세요. 멋지다! – mTorres