【GAS】メールに複数のファイルを添付する
Google Apps Script(GAS)で複数のファイルを添付する方法をご紹介します。
GASでメールに複数のファイルを添付する方法
GASでメールに複数のファイルを添付するには「sendEmail実行時にattachmentオプションで複数ファイルが格納された配列を指定」します。
メール送信時の基本的なファイル添付方法は下記の記事をご覧ください。
下記では2つのパターンに分けて複数ファイルを添付する方法をご紹介します。
複数ファイルの指定方法①:添付したいファイルをすべて列挙
サンプルコード
ファイルを1つ添付する際にGoogleドライブから取得した時と同じ要領で、添付対象となるファイルのIDをすべて取得してBlob型で配列に格納します。
この配列をsendEmail実行時のオプション指定すれば複数ファイルを添付してメールを送信できます。
//メール内容
let recipient = "example@gmail.com"; // 宛先メールアドレス
let subject = "ここが件名です"; // 件名
let body = "ここが本文です"; // 本文
//添付ファイルの取得
let fileId_1 = "{ファイルID 1}";
let fileId_2 = "{ファイルID 2}";
let fileId_3 = "{ファイルID 3}";
//ファイルのBlob型データの配列を作成
let attachmentFiles
= [DriveApp.getFileById(fileId_1).getBlob(),
DriveApp.getFileById(fileId_2).getBlob(),
DriveApp.getFileById(fileId_3).getBlob()
];
let options = {
attachments :attachmentFiles,
};
//送信
GmailApp.sendEmail(recipient, subject, body, options);
上記のスクリプトを実行すると指定した3つのファイルが添付されたメールを送信できました。
複数ファイルの指定方法②:フォルダを指定
メール送信を自動したいようであればいちいちファイルIDを手動で取得するのは手間ですよね。使い勝手が良い「指定フォルダ内のファイルをすべて取得する」方法をご紹介します。
フォルダIDの取得
添付したいファイルが保存されているフォルダを開くと、そのフォルダのURLにIDが記載されています。「https://drive.google.com/drive/u/0/folders/{フォルダID}」の形をしているので、{フォルダID}をコピーしておいてください。
サンプルコード
//メール内容
let recipient = "example@gmail.com"; // 宛先メールアドレス
let subject = "ここが件名です"; // 件名
let body = "ここが本文です"; // 本文
//ここから添付ファイルの取得
//先に空の配列を宣言(後の反復処理で逐次的にファイルのBlob型を格納)
let attachmentFiles = new Array();
//添付ファイルが保存されているフォルダの指定
let folderId = '{フォルダID}'
let folder = DriveApp.getFolderById(folderId);
let files = folder.getFiles();
//各ファイルごとにBlob型を取得
while(files.hasNext()){
let file = files.next();
attachmentFiles.push(file.getBlob());
}
//attachmentオプションでファイルを格納した配列を指定
let options = {
attachments :attachmentFiles,
};
//送信
GmailApp.sendEmail(recipient, subject, body, options);
実行すると先ほどと同じ結果となりました。
まとめ
GASを使ってメール送信時に複数ファイルを添付する方法をご紹介しました。