2016-06-07 4 views
0

Google 시트를 사용하여 이메일을 보내는 스크립트를 작성했습니다. 세 번째 열을 성공적으로 표시하는 것을 제외하면 모든 것이 제대로 작동합니다. 첫 번째 이메일은 EMAIL_SENT (으)로 표시되지만 다음 셀은 변경되지 않습니다. 이 아이디어가 효과가없는 이유는 무엇입니까?Google 스크립트를 실행 한 후 각 행을 성공적으로 표시하십시오.

for (row = 1; row < emailLength && confirmation == ui.Button.YES; row++){ 

    var customerEmail = data[row][0]; // Customer's email in first column 

    var customerName = data[row][1]; // Customer's name in second column 

    var EMAIL_SENT = 'Success'; 

    if(customerName != ''){ 

     var body = '<font face="avenir" size="3"> Hi '+ customerName + ',<br><br>' 
     + paragraphOne + '<br><br>' 
     + paragraphTwo + '<br><br>' 
     + paragraphThree + '<br><br>' 
     + signature; 
    } 


    GmailApp.sendEmail(customerEmail, emailSubject, "", {htmlBody: body}); 

    sheet.getRange(row, 3).setValue(EMAIL_SENT); 
} 
}; 
+0

난 당신이 공유 한 코드와 확신 할 수는 없지만, 내 첫 번째 시도가 시트 객체가 부족 될 수 필요 범위. 코드를 실행할 때 javascript 콘솔에서 오류가 발생합니까? – Bardo

+1

행 인덱스간에 불일치가있는 것 같습니다. 행 = 1은 시트의 첫 번째 행입니다. 그러나 data [1] [0]은 처리하는 데이터의 두 번째 행을 나타냅니다. JavaScript 인덱스는 0부터 시작하기 때문에 –

+0

@sandwich는 헤더가 있기 때문에 의도적입니다. 그래도 좋은 생각! – tonestrike

답변

1

@bardo는 올바른 길 위에있었습니다. 문제는 getRange에서 발생했습니다. 코드가 원래 있던 방식으로 getRange (row, 3)는 세 번째 열과 첫 번째 행에서 시작되었습니다. 나는 그것이 두 번째 행에서 시작하기를 원했습니다. 그 인덱스하기 때문에 데이터 [행] [X] 괜찮다고하지만, getRange는 getRange(row + 1 , 3)

sheet.getRange(row + 1, 3).setValue(EMAIL_SENT); 
관련 문제