2017-03-12 4 views
0

Google Script (기본적으로 JavaScript와 동일한 기능)를 사용하여 응답 스프레드 시트를 반복하는 방법을 찾고 있습니다. 괜찮 았지만 문제는이 코드가 이미 이메일로 전송 된 데이터에 대한 이메일을 계속 전송한다는 것입니다. 자바 스크립트는 거의 알지 못하지만 이전 행을 삭제하고 한 행만 반복하는 것이 합리적이라고 생각합니다. 지금까지 코드는 다음과 같습니다.Google 스프레드 시트에서 행을 통해 어떻게 실행합니까?

function autoEmail() { 
var sheet = SpreadsheetApp.getActiveSheet(); 
var startRow = 2; 
var numRows = 2; 
var dataRange = sheet.getRange(startRow, 1, numRows, 7) 
var data = dataRange.getValues(); 
for (i in data) { 
var column = data[i]; 
var emailAddress = "OMITTED FOR PRIVACY"; 
var message = column[3] + ", who is a " + column[4] + " Scout, wants to have a " + column[6] + " on " + column[5] + ". You can contact him at " + column[1] + ". This is an automated email sent by OMITTED FOR PRIVACY."; 
var subject = column[3] + " Wants To Rank Up!"; 
MailApp.sendEmail(emailAddress, subject, message); 
} 
} 

제안 사항이 있으십니까?

답변

0

그래서 현재 행을 처리하고 우연히 다시 처리하지 않도록 삭제 하시겠습니까? 합리적인 것 같지만 뭔가 잘못되었을 때를 대비하여 데이터를 삭제하지 않는 것이 좋습니다. 어쩌면 각 행 끝에있는 빈 열에 "완료"라고 쓰고 새 전자 메일을 보내기 전에 확인할 수 있습니까?

이제 몇 가지 질문은, 그래서 더 많은 도움이 될 수 있습니다 -

를 두 행 (numRows = 2를) 가져 오는하는 이유는 무엇입니까? 하나의 행이나 N (항목 수) 행을 가져오고 싶을 것 같습니다.

또한, 나는 항상 대신 ... 자바 스크립트, 그것은 루프 정상을 사용하는 것이 좋습니다 것을

for (var colNum = 0; colNum < data.length; colNum++) { 
    var column = data[colNum]; 

들었어요 A의-루프 ...

for (i in data) { 
    var column = data[i]; 

"상속 된 속성도 열거됩니다"(more info here) 때문에 배열과 유사한 개체에 있습니다.

편집 : 말하기, 당신이 할 때이

for (i in data) { 
    var column = data[i]; 

내가 i 데이터의 조각이 아니라 두 차원 배열의 인덱스가 될 수 있다고 생각하기 때문에 루프 Logger.log(i);i를 로그인합니다.

최종 편집

면책 조항 : 나는 스택 오버플로가 대답 명확한 설명을 요구하지 않는 것이 좋습니다 알고 있지만, 나는 "코멘트"를 추가 아직 충분한 명성을 필요가 없습니다. :-)

관련 문제