2013-05-02 1 views
1

신인 코더는 여기에 있습니다. 저는 프로젝트를 위해 Google Scripts에서 일하고 있습니다. 여기 제가하려는 일이 있습니다.Google 스크립트에서 행의 행을 수정하는 루프 만들기

기본적으로 내 "2013"스프레드 시트의 셀 K2에 입력 된 AICP 주소를 통해 특정 스프레드 시트 ("최상위 시트"라고 함)에 액세스하려고합니다. "Top 시트"스프레드 시트에서 액세스하는 정보는 셀 K46에있는 단일 번호입니다. 그런 다음 "Top Sheet"에있는 K46 셀의 값을 "2013"스프레드 시트의 새 셀 (N2)에 배치합니다.

다음은 그 모습입니다 (작동합니다).

function GetJobActuals() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var s2 =SpreadsheetApp.openById(ss.getSheetByName("2013").getRange("K2:K2").getValue()); 
    var v2 = s2.getSheetByName("Top Sheet").getRange("K46:K46").getValue(); 
    ss.getSheetByName("2013").getRange("N2:N2").setValue(v2); 
    var s3 = SpreadsheetApp.openById(ss.getSheetByName("2013").getRange("K3:K3").getValue()); 
    var v3 = s3.getSheetByName("Top Sheet").getRange("K46:K46").getValue(); 
    ss.getSheetByName("2013").getRange("N3:N3").setValue(v3); 

내가 지금하려는 것은 "2013"스프레드 시트의 모든 이전 셀에 대해이 작업을 수행합니다. 예를 들어이 코드는 하나의 숫자에 대해 작동합니다. "2013"의 셀 K2는 "Top Sheet"에서 셀 K46의 값을 검색 한 다음 해당 값을 반환하고이를 새 셀 N2에 배치합니다.

어떻게하면이 과정이 K2 - K60의 셀 범위에서 발생하고 N2 - N60의 새로운 셀 범위가 다시 채워지 는가?

남성 나는 이것이 의미가 있기를 바랍니다. 모든 도움이 인정됩니다. 그리고 위의 코드가 작동하여 한 번에 두 가지 이상을 처리 할 수있는 루프를 만들려고합니다.

답변

2

Sheet.getRange(a1Notation) 대신 Sheet.getRange(row,column)을 사용하면 대답이 명확 해집니다. A1 표기법 대신 행과 열 번호를 사용하여 for 루프를 적용하여 목표를 달성 할 수 있습니다.

ss.getSheetByName("2013").getRange("N3:N3").setValue(v3); 

    becomes 

ss.getSheetByName("2013").getRange(3,14).setValue(v3); 
            ^^^^ 
         Row = 3, Column = 14 ("N") 

그래서 당신은 다음 반복 할 행 :

for (row=2; row<=60; row++) { 
    ... 
    var s3 = SpreadsheetApp.openById(ss.getSheetByName("2013").getRange(row,11).getValue()); 
    ... 
    ss.getSheetByName("2013").getRange(row,14).setValue(v3); 
    ... 
} 

자세한 사항은 왼쪽,하지만 루프의 기본 구조입니다. 이 작업을 수행하는보다 효율적인 방법이 있지만, 처음 사용하는 사람이라면 기본 작업을 마친 후에 걱정할 필요가 없습니다.

관련 문제