0

이 스크립트가 작동하지 않는 것 같습니다. 나는 빌링 목적으로 사용하는 템플릿을 가지고 있으며 그 시트를 복제하려고 시도하고 있으며 매월 말에 새로운 고객, 계약서 등에 대한 정보를 업데이트합니다. "bsf"스프레드 시트의 모든 정보는 필요 없지만 내 청구 템플릿에 사용 된 열만 있습니다. 나는 그것을 테스트했고 모든 것이 for 루프를 포함하지는 않지만 작동한다. 뭔가가 헤이 와이어로 갈거야.두 개의 Google 스프레드 시트에서 헤더 값을 비교하고 일치하는 전체 열을 붙여 넣으면

for 루프를 사용하여 각 열을 순환하여 잡고 템플릿 문서의 헤더를 BSF 문서와 비교하고 일치하는 경우 전체 열을 새로운 청구서 발송 문서에 붙여 넣습니다. 그렇지 않다면 다음 열로 넘어가 똑같은 일을하고 싶습니다.

[16-05-31 16:01:15:403 PDT] [[]] 
[16-05-31 16:01:15:403 PDT] [[Percentage]] 

내가 배열이나 뭔가를 선언 할 필요가 있다고 생각하지만, 난 정말 모르겠어요 : 나는 Logger.log(data)billing HeadermasterHeader을 넣을 때

function newBillingDoc() { 
    var billingTemplate = SpreadsheetApp.getActiveSpreadsheet(); 
    var destFolder = DriveApp.getFolderById("0B1U5evaRId6xYi1rNGhZbUtBV0U"); 
    var newId = DriveApp.getFileById(billingTemplate.getId()).makeCopy("billing doc template", destFolder).getId(); 
    var billingMaster = SpreadsheetApp.openById(newId).getSheetByName('2016 Master'); 
    billingMaster.clearContents(); 

    var bsf = SpreadsheetApp.openById('1qKaZXpCk7Vw3uvRNft8Cl4vuCC_6PMRR9xyc2tNE7Cc').getSheetByName('Copy of 2016 Master'); 
    var lastRow = bsf.getLastRow(); 
    var lastColumn = bsf.getLastColumn(); 
    var billingHeader = billingTemplate.getSheetByName('2016 Master').getRange('A1:J1').getValue(); 
    billingMaster.getRange('A1:J1').setValue(billingHeader); 

for(var j = 1; j < lastColumn; j++); { 
    var billingBody = billingMaster.getRange(1, j, lastRow, 1); 
    billingHeader = billingTemplate.getSheetByName('2016 Master').getRange(1, j, 1, 1).getValue(); 
    var masterHeader = bsf.getRange(1, j, 1, 1).getValue(); 
    if (billingHeader == masterHeader) { 
     var billingBodyChunk = bsf.getRange(1, j, lastRow, 1).getValues(); 
     billingBody.setValues(billingBodyChunk); 
    } 
    } 
} 

나는 다음과 같은 얻을. 나는 배열을 추가하려고 노력했지만, 내가 사용하고있는 객체와 잘 작동하지 않는 것 같다.

+0

'.getValues ​​()'의 두 인스턴스를 모두'.getValue()'로 변경하십시오. 또한 (아마도 묻지 않은 질문에 대한 답변 일 수도 있지만)'.getDataRange(). getValues ​​() '라고 말하면서 모든 데이터를 먼저 얻고 그 결과로 생성 된 2D 배열을 반복합니다. – AdamL

+0

나는 bobby S가 제안한 것처럼 for 루프 전에 billingHeader를 작성했지만이 작업을 시도했지만 작동하지 않습니다. masterHeader와 billingHeader에 대한 변수 선언 다음에 두 개의 getValues ​​()가 올바른 것을 의미할까요? 초기 질문을 업데이트 된 코드로 업데이트합니다. 귀하의 의견을 다시 지켜 드리겠습니다 :'getDataRange(). getValues ​​()'를 염두에 두십시오! 이것은 실제로 코딩에 대한 나의 첫 번째 시도입니다. – Grandin

답변

0

마스터의 헤더를 청구서와 비교하는 것처럼 보이지만 마스터의 헤더는 청구서를 통해 복사되지 않으므로 for 루프 내에서 if 문은 결코 사실로 해결되지 않습니다. 행 1 헤더를 먼저 복사하십시오. 그것은 if 문이 좋은 화재를 허용해야합니다.

+0

나는 이것을 시도했지만 여전히 작동하지 않습니다. 맨 윗줄이 성공적으로 옮겨졌지만 아무것도 채워지지 않습니다. – Grandin