2014-01-28 5 views
0

Google 스프레드 시트에 간단한 기능을 쓰고 있습니다. 내가 쓴 다음과 같은 기능을 위해Google Apps 스크립트의 범위 작업

=EctsPartial(C3:C4, E3:E4)

: I는 입력이 개 같은 인수 뭔가 범위 원하는

function EctsPartial(rangeA, rangeB) { 

    Logger.log(rangeA+" "+rangeB); 
    var noten = SpreadsheetApp.getActiveSheet().getRange(rangeA).getValues(); 
    var ects = SpreadsheetApp.getActiveSheet().getRange(rangeB).getValues(); 

    for(var i=0; i < SpreadsheetApp.getActiveSheet().getRange(rangeB).getHeight(); i++){ 

     if(noten[i] != "" && noten[i] != 5) { 
     summe = summe - 0; 
     ects[i] = ects[i] - 0; 

     summe = summe + ects[i]; 
    } 
    Logger.log(i+":"); 
    Logger.log(summe); 
    } 

    return summe; 

}; 

을하지만 프로그램이 인수 것을 말해 유지 getRange()가 올바르지 않습니다. . 내가 수동으로 입력하면? : 내가 잘못을하고있는 중이 야 무엇 "C3 C4"작동하지만 그렇지 않은 다른 (이하 "포함)

답변

0

은 몇 가지 옵션은 다음과 같습니다

1 .

=EctsPartial("C3:C4"; "E3:E4") 

.gs :

function EctsPartial(rangeA, rangeB) { 
    var noten = SpreadsheetApp.getActiveSheet().getRange(rangeA).getValues(); 
    var ects = SpreadsheetApp.getActiveSheet().getRange(rangeB).getValues(); 
    var sum = 0; 
    noten.forEach(function(value) { 
    sum += value[0]; 
    }); 
    ects.forEach(function(value) { 
    sum += value[0]; 
    }); 
    return sum; 
} 

enter image description here

2.

=EctsPartial(C3:C4; E3:E4) 

.gs는 :

enter image description here

1

function EctsPartial(rangeA, rangeB) { 
    var sum = 0; 
    rangeA.forEach(function(value) { 
    sum += value[0]; 
    }); 
    rangeB.forEach(function(value) { 
    sum += value[0]; 
    }); 
    return sum; 
} 
나는 이것이 당신이 뭘 하려는지 생각합니다. 이것은 맞춤 스프레드 시트 기능입니다.

스프레드 시트에서 다음 코드를 사용하면 =EctsPartial("C1") 대신 =EctsPartial(C1)을 입력 할 수 있습니다. 스크립트에 return noten를 넣어 경우 C1

function EctsPartial(rangeA, rangeB) { 
    if (rangeA.map) { 
    return rangeA.map(EctsPartial); 
    } else { 
    var noten = rangeA; 
    } 
} 

https://developers.google.com/apps-script/guides/sheets/functions#optimization

의 값을 얻을 것이다
관련 문제