2017-11-28 15 views
0

フォルダのすべてのPDFファイルをリストして電子メールに送信します。 問題は、複数のファイルをどのように添付するのか分かりません。電子メールに複数の動的添付ファイルを追加する

これまで私が試したことは、ファイルをBLOBに入れて渡すことです。 他にも2つのpdfファイルがある場合はblob [0]とblob 1を入れても問題ありません。

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ファイルを持っている場合は、{添付ファイル:ブロブ[0]}取り組んでいますが、ここでは、動的

ではありませんされ、メールの行でデバッガです: debugger

答えて

1

attachmentsパラメータがsendEmail methodの場合、「電子メールとともに送信するファイルの配列」が必要です。それらはFileオブジェクトにすることができますが、それらからブロブを取得する必要はありません。

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

水として透明。私はあなたが言ったように1つの要素にはBLOBがないので、PDFではなかった1つのファイルを持っていた。だからあなたが言ったように要求されていません。ありがとう!!! – clement

関連する問題