2016-09-01 5 views
0

비슷한 질문을 많이 읽었지만 여전히 작동하도록 코드를 가져올 수 없습니다. 이는 내가 달성하고자하는 점에서 약간의 차이가 있기 때문이라고 생각합니다. :Google 스프레드 시트 스크립트 - 활성 선택 행을 반복하지만 모든 열

현재 선택한 셀에 해당하는 행에 반복을 수행하고 싶습니다. (셀 자체는 신경 쓰지 않고 행에 대해 신경 쓰지 않습니다.) 또한 현재 선택 영역 외부에 있지만 동일한 행에있는 셀에 도달해야합니다. 내 스프레드 시트의 A3, 나는 내가 행 2와 3에있어 "인식", 그리고 지금까지 나는 이런 식으로 뭔가를 시도하고 있었다

E2 = A2 + B2 + C2 * D2 
E3 = A3 + B3 + C3 * D3 

등의 작업을 수행 할 :

예 내가 A2 선택 가정 실제로 내가 스크립트 자체는 좋은 생각하지만, 나는 그것을 활성화 방법은 아마 문제 :

나는 새 메뉴 항목 "을 생성 MyFu하지만

function myfunction(){ 
    var range = sheet.getActiveRange() 
    var firstRow = range.getRow() 
    var numRows = range.getNumRows(); 

    for (var i = 0; i < numRows; i++) { 
    var absoluteRow = firstRow + i 

참고 작동하지 않는 것 nction "을 선택하고이 함수에이 함수를 추가했지만 activeRange를 올바르게 전달하고 있습니까?

SpreadsheetApp.getUi() 
    .createMenu("MyMenu") 
    .addItem("MyFunction","myFunction") 
    .addToUi() 

답변

0

이 코드는 나를

var sheet = SpreadsheetApp.getActiveSpreadsheet(); 
    var range = sheet.getActiveRange() 
    var firstRow = range.getRow() 
    var numRows = range.getNumRows(); 
    Logger.log("firstRow "+firstRow); 
    Logger.log("numRows "+numRows); 

    for (var i = 0; i < numRows; i++) { 
    var absoluteRow = firstRow + i; 
    Logger.log("absoluteRow "+absoluteRow); 
    } 

결과 제대로 작동 : 스크립트 편집기에서 그것을 실행할 때 올바른 결과를받을 경우

[16-09-01 13:44:44:762 EEST] firstRow 2 
[16-09-01 13:44:44:763 EEST] numRows 5 
[16-09-01 13:44:44:764 EEST] absoluteRow 2 
[16-09-01 13:44:44:764 EEST] absoluteRow 3 
[16-09-01 13:44:44:765 EEST] absoluteRow 4 
[16-09-01 13:44:44:765 EEST] absoluteRow 5 
[16-09-01 13:44:44:766 EEST] absoluteRow 6 

를 참조하십시오.

+0

아, 그래, 분명히 내 문제는 스프레드 시트 선택에 관한 것이 었습니다. 특정 스프레드 시트에서만 스크립트가 작동하도록하고 싶기 때문에 ID로 스프레드 시트를 선택했지만 모든 "활성"및 range.getRow()의 동작은 항상 1을 반환했습니다 (심지어 스프레드 시트의 ID가 활성 스프레드 시트와 동일 함). 'SpreadsheetApp.getActiveSpreadsheet()'는 잘 작동합니다. –

관련 문제