2010-11-22 14 views
0

안녕하세요,Google 스프레드 시트 쿼리 : 범위가 결과로 나타나지 않게하려면 어떻게해야합니까?

내가 밖으로 작업 한 논리를 구글 문서 도구의 스프레드 시트를 조작하고 생각하는 데 도움이되는 몇 가지 코딩 기술을 사용하려고 해요 소리 -하지만 스크립트는 단지 '범위'로 결과를 반환합니다.

본질적으로 스크립트는 중첩 루프이며 데이터 행 (11 개에서 시작)의 6 개 지점에서 값을 가져 와서 긴 수직 (38 번째 열)으로 만듭니다. 그런 다음 다음 행으로 이동해야합니다.

나는 그것이 효과가 있다고 생각하지만 결과는 '범위'로 다시 돌아와서 이것이 의미하는 바가 있다면 범위에 값을 넣는 방법을 볼 수 없습니다.

하나의 배열을 사용하여 개별 배열의 데이터를 수집하는 것이 더 효과적 일 수 있다는 것을 알고 있지만 여전히 구문을 이해하려고합니다. 제발

function Transform() { 
    //load spreadsheet data and initialise variables 

    var sheet = SpreadsheetApp.getActiveSheet(); 
    var firstrow = 11;//this is a manual figure 
    var d = firstrow; 
    var valuerplc = sheet.getRange(firstrow, 38); 
    var value =1; 

    for(var c=firstrow; c<sheet.getLastRow(); c++){ 
    for (var e=3; e<33; e=e+6){ 
     var mon = sheet.getRange(c, e); 
     valuerplc = sheet.getRange(d, 38); 
     valuerplc.setValue(mon); 

    } 
    d++; 

    } 
    } 

수있는 사람의 도움, 또는 적어도 올바른 방향으로 날 지점 :

여기 내 코드입니까?

+0

해당 코드에는 return 문이 전혀 표시되지 않습니다. 나는 정의되지 않은 반환을위한 직접 호출을 기대했을 것이다. – Matt

+0

필자는 이들이 필요하다고 생각하지 않거나 적어도 스프레드 시트에서 값을 반환하기 위해 이들을 사용할 필요가 없었습니다. 그것은 내가 예상했던대로 그들이 아니란 것입니다. – elksie5000

+0

아, 알겠습니다. 메소드에는 부작용이 있는데, 이는 목표 범위로 값의 범위를 떨어 뜨리는 것입니다. – Matt

답변

0

범위와 값을 구별하는 데 어려움이있는 일반적인 초보자 문제가 발생했습니다.

범위는 스프레드 시트의 영역을 나타내며 개체의 다양한 특성에 액세스 할 수있는 방법을 제공합니다. 스프레드 시트에 표시되는 내용 또는 데이터는 .getValue() 방법 (한 셀) 또는 .getValues() (두 개 이상의 셀)을 통해 액세스 할 수 있습니다.

변경 :

var mon = sheet.getRange(c, e); 

사람 :

var mon = sheet.getRange(c, e).getValue(); 

... 그리고 당신이 무엇인지에 따라 문자열, 숫자 또는 날짜로, 그 범위의 데이터를해야합니다 .

귀하가 선택한 변수 이름은 혼란을 야기 할 수 있으므로주의해야합니다. 예를 들어, valuerplc을보십시오. 이름은이 값이 .getValue().setValue()과 혼동 될 수 있음을 나타냅니다. 그러나 그것이 사용되는 방식은 범위와 같습니다 (valuerplc.setValue(mon)). 따라서 분명히 가치가 없습니다.

function Transform() { 
    //load spreadsheet data and initialise variables 

    var sheet = SpreadsheetApp.getActiveSheet(); 
    var firstrow = 11;//this is a manual figure 
    var d = firstrow; 
    var valuerplc = sheet.getRange(firstrow, 38); 
    var value =1; 

    for(var c=firstrow; c<sheet.getLastRow(); c++){ 
    for (var e=3; e<33; e=e+6){ 
     var mon = sheet.getRange(c, e).getValue(); 
     valuerplc = sheet.getRange(d, 38); 
     valuerplc.setValue(mon); 
    } 
    d++; 
    } 
}