【コピペOK】GASでメールの送信で添付ファイルを追加

お仕事おつにゃッス🐈

文系未経験から社内SEになった、あっきょ(@daily_code_JP)です!

大量のメールにファイルを添付して送信すると手間も時間もかかって残業が増えますよね。

しかし、GASを使えば1クリックで複数のメールに添付ファイルを追加できます。

この記事ではそのお悩みを、コピペOKのGoogle Apps Scriptのコードで解決します。

こんな人におすすめ!

  • メールを大量に送信する時間を減らしたい
  • ファイルを添付で付け忘れのミスが起こると怖い
  • プログラミングでJavaScriptを学んだけど何を作っていいかわからない

誰でも無料で簡単にできますので気軽に学んでいきましょう!

目次

添付ファイルとメールを送信するイメージ

Google Apps Scriptで添付ファイルをつけて自動でメールを送信するイメージ

1クリックでメールに画像などのファイルを添付して送信します。

例えば、50件ほどメールにJPEGファイルを付けて送信する場合を考えましょう。

膨大な作業時間がかかるだけでなく添付し忘れのミスもあります。

結果として残業が増えて疲れることもありますね。

GASならすべて自動操作をするので、作業時間と送信ミスの削減を期待できます

あっきょ

添付ファイルはPDFなどにも対応しているッスよ!

ファイルを添付して送信する準備

Google Apps Script でファイルを添付して送信する準備をします。

ファイルは3つ必要です。

必要なファイル

  • Google スプレッドシート…顧客データの書き込み&コードの貼り付け
  • Google ドキュメント…メールの本文の作成
  • テスト用のJPEGデータ…メールの添付ファイルとして使用

Google スプレッドシートの作成

メールアドレスを登録するスプレッドシートを作成します。

この記事では

  • メールアドレス

の3項目を登録して列A から列C の1行目に見出しを記入します。

GASでファイル付きメールを送信するスプレッドシートの項目作成

個別のデータを記入します。

後からテスト送信するので、メールアドレスはあなたが所有するアドレスに書き換えます。

GASでファイル付きメールを送信するスプレッドシートのデータ入力

シート名を変更します。

右クリックして「リスト」と名前をつけます。

GASでファイル付きメールを送信するスプレッドシートの「リスト」シートの作成

Google スプレッドシート は以上です。

Google ドキュメントの作成

Googleドキュメントでメールの本文を作成します。

文章内の {customer} に「リスト」シートから取得した名前( 姓+名 )が入ります。

GASでファイル付きメールを送信するGoogleドキュメント

Google ドキュメントの編集は以上です。

添付するファイルの作成

メールに添付するファイルをJPEGにしました。

メールに添えるファイルは他のPDFやGIFでも問題ありません。

GASでファイル付きメールを送信するJPEGファイル

サンプルコードを貼り付ける場所

サンプルコードはGoogle スプレッドシートにコピペ。

上バーの「拡張機能」の中にある「Apps Script」をクリックしてコードを貼り付けます。

Apps Script表示

ファイルを添付して送信するコード

Google Apps Scriptでファイルを添付してメールを送信するコードを掲載します。

解説の項目

  • サンプルコード
  • A.送信するメールの定義
  • B.使用するスプレッドシートの定義
  • C.シートのセル番号を定義
  • D.Google ドキュメントからメール本文を取得
  • E.メールを送信

サンプルコード

ソースコードの全体です。

右上にあるマークを押すとコードのコピペが一瞬でできます

。また、コード内で文頭にアルファベットが付いているコメントごとに詳細を説明していきます。

function sendMail() {
 //A.送信するメールの定義
 const senderName = '送り主の名前'; 
 const subject = 'メールのタイトル';
 const DOC_URL = 'ドキュメントのURL'; //メールの本文
 const file = DriveApp.getFileById('添付ファイルのID').getBlob(); //添付ファイル

  //B.使用するスプレッドシートの定義
  const spreadSheet = SpreadsheetApp.getActiveSpreadsheet();
  const listSheet = spreadSheet.getSheetByName('リスト');  

  //C.シートのセル番号を定義
  const LAST_NAME_COL = 1;    //苗字の列番号
  const FIRST_NAME_COL = 2;   //名前の列番号
  const MAIL_ADDRESS_COL = 3; //メールアドレスの列番号
  const START_ROW = 2;        //for構文で読み込み始める行番号

  //D.Google ドキュメントからメール本文を取得
  const openDoc = DocumentApp.openByUrl(DOC_URL);
  let wholeText = openDoc.getBody().getText(); 

  //E.メールを送信
  const recipient =  listSheet.getRange(START_ROW,MAIL_ADDRESS_COL).getValue();
  const customerName = listSheet.getRange(START_ROW,LAST_NAME_COL).getValue()+ " " +listSheet.getRange(START_ROW,FIRST_NAME_COL).getValue();
  let body = wholeText.replace("{customer}", customerName);
  const options = {
            name : senderName,
            attachments : file
        };
 
  MailApp.sendEmail(recipient, subject, body, options);

}

A, 送信するメールの定義

//A.送信するメールの定義
const senderName = '送り主の名前'; 
const subject = 'メールのタイトル';
const DOC_URL = 'ドキュメントのURL'; //メールの本文
const file = DriveApp.getFileById('添付ファイルのID').getBlob(); //添付ファイル

送信するメールの内容を定義します。

4つすべてのクォーテーションの中身を書き直す必要があります。

定数名内容
senderNameメールに表示する送信者の名前
subjectメールに表示する件名
DOC_URLGoogle ドキュメントのURL
file添付するファイルのID

B, 使用するスプレッドシートの定義

//B.使用するスプレッドシートの定義
const spreadSheet = SpreadsheetApp.getActiveSpreadsheet();
const listSheet = spreadSheet.getSheetByName('リスト');  

メールアドレスを記録したスプレッドシートと「リスト」シートを定義します。

C, シートのセル番号を定義

//C.シートのセル番号を定義
const LAST_NAME_COL = 1;    //苗字の列番号
const FIRST_NAME_COL = 2;   //名前の列番号
const MAIL_ADDRESS_COL = 3; //メールアドレスの列番号
const START_ROW = 2;        //for構文で読み込み始める行番号

名前とメールアドレスのデータを取得し始めるシートの行と列の番号を定義します。

D, Google ドキュメントからメール本文を取得

//D.Google ドキュメントからメール本文を取得
const openDoc = DocumentApp.openByUrl(DOC_URL);
let wholeText = openDoc.getBody().getText(); 

メールの本文を記入したGoogle ドキュメントを取得します。

E, メールを送信

//E.メールを送信
const recipient =  listSheet.getRange(START_ROW,MAIL_ADDRESS_COL).getValue();
const customerName = listSheet.getRange(START_ROW,LAST_NAME_COL).getValue()+ " " +listSheet.getRange(START_ROW,FIRST_NAME_COL).getValue();
let body = wholeText.replace("{customer}", customerName);
const options = {
          name : senderName,
          attachments : file
      };

MailApp.sendEmail(recipient, subject, body, options);

添付ファイル付きのメールを送信します。

シート内のメールアドレスと送信先の氏名を取得してGoogleドキュメントのメール本文を読み込みます。

また、定数optionsで送信者の名前と添付ファイルのIDの2つを取得します。

最後にsendEmailメソッドを実行すればメールを送信できます。

説明は以上です。

メール送信のテスト

実際に、添付ファイル付きのメールを送信するテストをします。

Apps Scriptの上バーの文字が「sendMail」になっていたら、「実行」を押します。

GASでファイル付きメールを送信するsendMail関数の実行

「このアプリはGoogleで確認されていません」と表示した場合はこちら

送信先メールを確認します。

ファイル付きで受信できていたら成功です。

GASでファイル付きメールを送信するsendMail関数の実行した結果

【便利】GASでメール送信を楽にするコード一覧

この記事では、メールにファイルを添付する方法を紹介しました。

GASを使えば、他にもメール送信を楽にするツールを開発できます。

例えば、BCCかCCに設定して送信や1クリックで一斉送信などです。

デイコーではコピペOKのサンプルコードも用意していますのでぜひご活用ください。

おわりに | 事務職&営業職が市場価値を高めるには

以上、Google Apps Script メールを一斉送信する方法でした。

そのままコピペして日常業務で使ったり、プログラミングの練習や動作確認用に使ってみましょう。

事務職や営業職が市場価値をさらに高めるにはITスキルが必須。

というのも、業務効率化や自動化で残業が減ればその分ほかの仕事に時間を回せるからです。

GASを効率的に学ぶなら以下の2つの方法が多いです。

  • 参考書やオンライン教材で独学
  • プログラミングスクールを利用

正しく学ぶことで非エンジニアでも実用的な業務効率化のスキルが身に付きます

デイコーでは、GASのサンプルコードからおすすめのプログラミングまで幅広く紹介。

初心者にもわかりやすく解説しています。

あっきょ

プログラミングスクールは82社を分析したッス!

次回の記事もご期待ください!

それでは、よいプログラミングライフを!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

文系未経験のWebエンジニア。事務職がプログラミング学習して社内SE部門立ち上げ&Webサイト作成。業務効率化で残業80%減を達成。得意な言語 : GAS, JavaScript, Python

目次