2013-09-23 7 views
2

Google Apps Script를 사용하여 스프레드 시트에서 이메일을 보내기 위해 제공된 tutorial을 살펴본 후 이메일 세트를 보낼 수있는 목적으로 주어진 코드를 수정했습니다. 첨부 파일도 있습니다.Google Apps Script : .txt 파일의 텍스트 읽기

Google Apps Script의 제한 사항 (Google 드라이브에 파일이 있어야하며 Google 드라이브의 모든 파일 중 어느 파일이든간에 모든 폴더의 모든 파일이 포함됨)의 몇 가지 단점에도 불구하고 충분히 잘 작동합니다. 운전). 내가 처음 그것을 사용 후

function sendEmails() { 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    var startRow = 2; // First row of data to process 
    var numRows = 1; // Number of rows to process 
    // Fetch the range of cells A2:C3 
    var dataRange = sheet.getRange(startRow, 1, numRows, 3) 
    // Fetch values for each row in the Range. 
    var data = dataRange.getValues(); 
    for (i in data) { 
    var row = data[i]; 
    var emailAddress = row[0]; // First column 
    var message = row[1];  // Second column 
    var attachment = row[2]; // File name provided. 
    var subject = "Mass Email"; 
    var files = DriveApp.getFilesByName(attachment); // Get all files with name. 
    var blobs = []; // Array for attachment. 
    // Move files into blobs 
    while (files.hasNext()) { 
     var file = files.next(); 
     blobs.push(file.getAs(MimeType.PLAIN_TEXT)); 
    } 
    MailApp.sendEmail(emailAddress, subject, message, { 
     attachments: blobs, // add attachments 
     cc: "[email protected]" // CC to employer 
    }); 
    } 
} 

그러나, 나는 첨부되지 않은 파일을 전송해야하지만 이메일의 메시지 본문과 같은 다른 변화들 (이 작업을위한) 것을 배웠다. 즉, 각 이메일에 한 번에 하나씩 '첨부 파일'만 이메일로 보내고 첨부 파일 인 대신 그 내용을 이메일의 메시지로 복사해야합니다. 첨부 파일은 현재 텍스트 파일이며, 나는 그 방법을 유지하고 싶습니다만, 그것은 가장 중요한 것은 아닙니다.

Google Apps Script로이 작업을 수행 할 방법을 결정할 수 없습니다. 가능합니까 아니면 다른 방법으로 이러한 파일을 전자 메일로 보내야합니까? (잘하면 손으로하지 마십시오.)

미리 감사드립니다.

+0

그 두 당신이 그나마 존재는 말할 제한 스크립트를 애플 리케이션을 참조 본문에 텍스트를 포함하는 예는 수, 또한 thexways –

+0

의 하나에 불과합니다. 메일에 대한 API를 보면, 그것은 당신이 자신의 html 시체를 만들 수 있습니다. –

+0

왜 문제가 발생하는지 이해가 가지 않습니다. 설명하는 것과 너무 흡사합니다. 배열에 텍스트를 저장하는 대신 동일한 '루프'에서 '메시지'로 보내면 완료됩니다. HTML이나 기타가 필요하지 않습니다. –

답변

2

내 마지막 댓글에서 언급했듯이 .txt 파일을 Google 문서로 변환하면 쉽게 얻을 수 있습니다. 이 드라이브의 파일에서 모양을 받고, (제안) 아래

function sendEmails() { 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    var startRow = 2; // First row of data to process 
    var numRows = 1; // Number of rows to process 
    // Fetch the range of cells A2:C3 
    var dataRange = sheet.getRange(startRow, 1, numRows, 3) 
    // Fetch values for each row in the Range. 
    var data = dataRange.getValues(); 
    for (i in data) { 
    var row = data[i]; 
    Logger.log(row) 
    var emailAddress = row[0]; // First column 
    var message = row[1];  // Second column 
    var attachment = row[2]; // File name provided. 
    var subject = "Mass Email"; 
    var files = DriveApp.getFilesByName(attachment); // Get all files with name. 
    while (files.hasNext()) { 
     var file = files.next(); 
     var Id = file.getId(); 
     var content = DocumentApp.openById(Id).getBody().getText(); 
     Logger.log(content) 
    MailApp.sendEmail(emailAddress, subject, message+'\n'+content) 
    } 
    } 
} 
+0

도움 주셔서 대단히 감사합니다. 텍스트 파일을 쉽게 처리 할 수 ​​없다는 점이 조금 궁금해 보이지만 결국에는 훌륭하게 작동했습니다. – Orion