2017-11-28 1 views
0

폴더의 모든 PDF 파일을 나열하고 전자 메일로 보냅니다. 문제는 여러 파일을 연결하는 방법을 모르겠다는 것입니다.전자 메일에 여러 개의 동적 첨부 파일 추가

이것은 지금까지 시도한 바 있습니다. 파일을 BLOB에 넣은 다음 전달합니다. 다른 시도는 blob [0]과 blob 1을 넣었습니다. pdf 파일이 2 개 있지만 작동하지 않습니다.

var folders = DriveApp.getFoldersByName(folderToScan); 
    var folder = folders.next(); 
    var contents = folder.getFiles(); 

    var blob = []; 
    var filesTextList = ""; 

    // foreach file 
    for(var counter = 0;contents.hasNext();counter++) 
    { 
    file = contents.next(); 

    var MimeType = file.getMimeType(); 

    // filter PDF 
    if(file.getMimeType() == "application/pdf") 
     { 
     blob[counter] = file.getBlob(); 
     // add file name to text 
     filesTextList += "\n" + file.getName(); 
    } 
    } 

    MailApp.sendEmail(sender, subject, message, 
    {attachments: blob} 
); 

난 단지 1 개 BLOB 파일이있는 경우, {첨부 파일 : BLOB [0]} 노력하고 있지만, 여기에

가 메일의 줄에서 디버거 동적 아니다 : debugger

답변

1

attachments 매개 변수가 sendEmail method이면 "전자 메일과 함께 보낼 파일 배열"을 사용합니다. 그것들은 File 객체 일 수 있습니다. 여러분은 그것들에서 blob을 얻을 필요가 없습니다.

blob[counter]은 파일이 PDF 인 경우에만 할당되기 때문에 루프는 정의되지 않은 요소가있는 배열을 만들지 만, counter의 값은 관계없이 증가합니다. 나는 sendEmail이 행복하다고 생각하지 않는다.

반복자를 사용하여 루프를 사용하고 배열에 요소를 추가하려면 push 메서드를 사용하십시오. 완전한 예.

function emailatt() { 
    var contents = DriveApp.getFolderById("id here").getFiles(); 
    var attachments = []; 
    while (contents.hasNext()) { 
    var file = contents.next(); 
    if (file.getMimeType() == "application/pdf") { 
     attachments.push(file); 
    } 
    } 
    MailApp.sendEmail("[email protected]", "subject", "body", {attachments: attachments}); 
} 

따로 : 원하는 폴더를 알고있을 때 ID로 폴더를 가져 오는 것이 가장 좋습니다. getFoldersByName을 사용하고 그 이름을 가진 폴더를 먼저 선택하는 것은 덜 강력한 접근 방식입니다.

+0

물로 맑게. 나는 당신이 말한 것처럼 하나의 요소가 blob을 갖지 않도록 PDF가 아닌 1 개의 파일을 가졌습니다. 그래서 당신이 말한대로 요청하지 않습니다. 감사!!! – clement

관련 문제