2014-12-02 7 views
1

저는 Google Apps Script를 처음 사용하기 때문에 활성 범위을 설정하고 활성 선택을으로 설정하는 것 사이에 어떤 차이가 있는지 궁금합니다. 내가 활성 범위 또는 시트의 활성 선택 중 하나를 설정 수 있지만 지금까지 내가 이해, 나는 활성 범위 있지만 활성 선택 를 얻을 수 있습니다. 범위에서 작동하는 특정 메서드가있는 Range 클래스도 있지만 Selection 클래스는 없습니다. 내가 두 세트 방법을 사용했다setActiveSelection()과 setActiveRange()의 차이점은 무엇입니까?

,

var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet = ss.getActiveSheet(); 
sheet.setActiveRange(sheet.getRange("B5:H20")); 

sheet.setActiveSelection(sheet.getRange("B5:H20")); 

대하지만 웹 UI 또는 행동의 차이를 볼 수 있습니다.

스프레드 시트 클래스의 Google 애플리케이션 스크립트 문서는 말한다 :

setActiveRange (범위)

활성 시트의 활성 범위를 설정합니다.

Reference

setActiveSelection (범위)

이 시트의 활성 영역을 선택 설정한다.

Reference

그러나 나는 어떤 효과가 코드 또는 사용자가 하나 또는 다른, 또는 사용 여부를 정보를 찾을 수 없습니다.

답변

1

이것은 오래된 게시물이지만 setActiveRange()와 setActiveSelection()을 교환 할 때 사용하면 잠시 혼란 스럽기 때문에 동일한 질문을했습니다.

setActiveRange()는 입력 범위 만 사용하고 setActiveSelection()은 범위 또는 A1 표기법 문자열을 사용할 수 있습니다.

그래서 당신은 범위 A1에서 세포를 설정하려면 : D4는 setActiveSelection 당신이 쓸 수, 활성화하기 :

var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet = ss.getSheets()[0]; 

sheet.setActiveSelection("A1:D4"); 

또는

var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet = ss.getSheets()[0]; 

var range = sheet.getRange("A1:D4"); 
sheet.setActiveSelection(range); 

당신이 작성해야 setActiveRange와 동안

두 번째 예에서 그 여분의 라인 :

var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet = ss.getSheets()[0]; 

var range = sheet.getRange("A1:D4"); 
sheet.setActiveRange(range); 

(코드는 https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet#setactiveselectionrange)

아마도 상황에 따라 (1 줄 씩) 사물을 단순화하기 때문에 setActiveSelection을 주변에 유지하는 이유 일 것입니다.

2

아마도 이것이 가장 유용한 답변은 아니지만 삭제 된 두 가지 방법간에 역사적인 차이가있을 수 있습니다. 더 복잡하게하기 위해 [범위] .activate()가 있습니다. 동일한 것을 수행하는 또 다른 방법 인 것처럼 보입니다. 바라건대 GAS의 역사에 대해 더 잘 알고있는 사람이 올 때까지 그것이 여러분을 기다릴 수 있기를 바랍니다.

EDIT : 그런데 세 가지 방법 모두를 테스트했는데 기능적 차이를 구분할 수 없습니다.

+0

감사합니다. 그것은 나에게 setActiveSelection()이 히스토리라고 생각합니다. 범위가 나중에 더 많은 기능으로 추가되었을 수도 있습니다. – Ani

관련 문제