2017-09-30 12 views
0

셀 범위 내의 모든 셀에 대해 이메일을 보내는 스크립트가 있습니다. 스크립트가 다시 실행될 때마다 중복 전자 메일을 보내지 않으려면 전자 메일을 보낼 때마다 각 행에 셀 (열 C)을 표시합니다. 'Sheet2'의 예를 참조하십시오.Google 스프레드 시트 - 다른 셀의 텍스트를 기반으로 이메일 보내기

https://docs.google.com/spreadsheets/d/1_oMbZZjOhfdKuYNWOuyF3fao8yO6W3juFjUsFbFBJaU/edit?usp=sharing

그러나, 나는 그것의 해당 행 내에서 세포가 특정 텍스트를 포함 할 때마다 이메일을 보냅니다 'Sheet1의'에 대한 스크립트에이 변환하고자합니다. 이 예에서 열 I에 체크 표시 (✓)가 있으면 메시지 (열 E)가 해당 제목 줄 (열 D)과 함께 보내지 으면됩니다. 나는 또한 'Sheet2'의 예제와 마찬가지로 중복 된 전자 메일을 방지하려고합니다. 다시 말해, 열 I에 체크 표시가 있으면 메시지가 전송되고 완료되며 체크 표시가 삭제되고 다시 입력되지 않는 한 다시 보내지 않습니다.

// This constant is written in column C for rows for which an email 
// has been sent successfully. 
var EMAIL_SENT = "EMAIL_SENT"; 

function sendEmails2() { 
var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var s = ss.getSheetByName('Sheet2'); 
    var startRow = 2; // First row of data to process 
    var numRows = 2; // Number of rows to process 
    // Fetch the range of cells A2:B3 
    var dataRange = s.getRange(startRow, 1, numRows, 3) 
    // Fetch values for each row in the Range. 
    var data = dataRange.getValues(); 
    for (var i = 0; i < data.length; ++i) { 
    var row = data[i]; 
    var emailAddress = "[email protected]"; 
    var message = row[1];  // Second column 
    var emailSent = row[2];  // Third column 
    if (emailSent != EMAIL_SENT) { // Prevents sending duplicates 
     var subject = row[0]; // First column 
     MailApp.sendEmail(emailAddress, subject, message); 
     s.getRange(startRow + i, 3).setValue(EMAIL_SENT); 
     SpreadsheetApp.flush(); 
    } 
    } 
} 

모든 도움을 주시면 감사하겠습니다.

감사합니다.

답변

0

이 시도 :

function sendEmails2() { 
var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var s = ss.getSheetByName('Sheet1'); 
    var startRow = 2; // First row of data to process 
    var numRows = 2; // Number of rows to process 
    // Fetch the range of cells A2:B3 
    var dataRange = s.getRange(startRow, 1, numRows, 3) 
    // Fetch values for each row in the Range. 
    var data = dataRange.getValues(); 
    for (var i = 0; i < data.length; ++i) { 
    var row = data[i]; 
    var emailAddress = "[email protected]"; 
    var message = row[1];  // Second column 
    var emailSent = row[2];  // Third column 
    if (row[8]) { // Prevents sending duplicates 
     var subject = row[0]; // First column 
     MailApp.sendEmail(emailAddress, subject, message); 
     s.getRange(startRow + i, 9).setValue(""); 
     SpreadsheetApp.flush(); 
    } 
    } 
} 
+0

안녕하세요 쿠퍼, 도움을 주셔서 감사합니다! 죄송하지만 저는 Google 스크립팅에 익숙하지 않으며이 스크립트를 Sheet1과 함께 사용하는 방법을 모르겠습니다. 체크 표시를 선택하면받은 편지함에 아무것도 표시되지 않습니다. 나는 몇 가지를 바꿨다 : var startRow = 3 그리고 var dataRange = s.getRange (startRow, 1, numRows, 3) 왜냐하면 시트 1에서는 행이 다르므로 여전히 아무것도 아니다. 나는 곧 보낼 이메일을 목표로하고있다. 드롭 다운 메뉴에서 체크 표시를 클릭하면 셀 범위에서 이메일을 보내지 않고 행에 체크 표시가있는 경우에만 이메일을 보내고 싶습니다. –

관련 문제