【GAS】ファイルを添付してメール送信する

GASgetBlob,getFileById,gmail,sendEmail

Google Apps Script(GAS)でファイルをメールに添付して送信する方法をご紹介します。

GASでメール送信を行う基本的な方法は下記の記事で解説しています。

また1つではなく複数のファイルを添付したい場合はこの記事を読んだ後に下記の記事も併せてご覧ください。

GASでメールにファイルを添付して送信する方法

GASではsendEmailメソッド実行時にattachmentオプションを使うことで、Gメールにファイルを添付して送信することができます。具体的には下記のステップで処理を行ってください。

  • Googleドライブの任意の場所に添付したいファイルを保存しファイルIDを取得
  • ファイルIDを指定してGASでBlob型データを作成
  • ファイルデータを引数としてsendEmailメソッドを実行

サンプルコード

 //メール内容
  let recipient = "example@gmail.com"; // 宛先メールアドレス
  let subject = "ここが件名です"; // 件名
  let body = "ここが本文です"; // 本文

   //添付ファイルの取得
    let fileId = "{ファイルID}";  // ドライブからコピー
    let attachmentFile = DriveApp.getFileById(fileId).getBlob();

  let options = {
    attachments :attachmentFile,
  };

 //送信
  GmailApp.sendEmail(recipient, subject, body, options);

Googleドライブにファイルを保存してファイルIDを取得

添付したいファイルをGoogleドライブの任意の場所に保存します。Googleドライブ内のファイル上の右クリック→「リンクの取得」で出現するポップアップで「リンクのコピー」をクリックしてファイルのリンクをコピーしてください。

リンクは「https://drive.google.com/file/d/{ファイルID}/view」の形をしているので、この{ファイルID}をコピーしておいてください。

ファイルIDを自動で取得してくる方法もあるので詳しくは下記をご覧ください。

保存したファイルのBlob型データを作成

file = DriveApp.getFileById(fileId)
attachmentFile = file.getBlob()

サンプルコードではファイル取得とBlob型取得を同時に行っています。先ほど取得したファイルIDをコードの{ファイルID}の箇所に入れてください。

   //添付ファイルの取得
    let fileId = "{ファイルID}";  // ドライブからコピー
    let attachmentFile = DriveApp.getFileById(fileId).getBlob();//ファイルのBlob型データを取得

ファイルデータを引数としてsendEmailメソッドを実行

options = {attachment: attachmentFile}
GmailApp.sendEmail(recipient, subject, body [, options])

  • recipient(必須):宛先のメールアドレス
  • subject(必須):件名
  • body(必須):本文
  • options(任意):※ここで添付ファイルを指定

sendEmailメソッドのオプション指定の引数に添付ファイルを指定します。そのほかの必須の引数には適した宛先アドレス、件名、本文を入れてください。

  let options = {
    attachments :attachmentFile,
  };

 //送信
  GmailApp.sendEmail(recipient, subject, body, options);

これらのスクリプトを実行しようとすると権限承認のポップアップが出現します。肯定的に進めて承認してください。

承認後実行するとスクリプトで記述した処理が実行されて添付ファイルを含むメールが送信されます。

まとめ

Googleドライブに保存されているファイルを添付してメールを送付する方法をご紹介しました。

  • Googleドライブの任意の場所に添付したいファイルを保存しファイルIDを取得
  • 保存したファイルのファイルIDを指定してGASでBlob型データを作成
  • ファイルデータを引数としてsendEmailメソッドを実行
この記事を書いた人

てつお
広告代理店出身、事業会社でWebマーケティングや開発の仕事をしている26歳です。プロフィール詳細はこちら
■Google広告認定資格|Google アナリティクス個人認定資格(GAIQ)|TOEIC920点