5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

定型のメールの送信(600回/月)をGAS(GoogleAppsScript)で自動化

Posted at

定型のメールの送信をGAS(GoogleAppsScript)で自動化した様子

みなさん、こんにちは。
紙、印鑑、手作業に埋もれて業務をしている昭和男子の会社員です。

毎月、請求書を大量に発行し、メール送信している業務を行っています。
前回、Power Automate Desktop で請求書のExcelファイルをメールに添付し間違えないように取引先ごとにExcelファイルを仕分けしたり、フォルダを圧縮したりして、自動メール送信まで、あと一歩まできました。

前回の記事はこちら

しかし、Power Automate Desktopで複数ファイルの添付の方法がわからず、また、フォルダを圧縮し添付すると文字化けしたり、まだまだ課題がありました。

そんな時、同僚からこんな一言が・・・
「Gmailを使っているんだから、GASの方が相性がいいかも」
ということで、GASで自動メール送信に取り組みました。

使用するもの

・ChatGPT
・Google Apps Script
・Google Spread Sheet
・Google Drive
・Gmail

ChatGPTにGASのコードを聞く

GASのコードなんて書けないので、ChatGPTにとにかく聞いてみました。

Google Apps Scriptを使って、メール送信前の下書きメールを自動作成したい。コードを教えて!

Google Spreadsheetsにrecipient、subject、bodyの各変数に対応する項目をつくりました。紐づけるコードを教えてください。

スプレッドシートの空白行まで繰り返し下書きメールを作成するにはどうしたらよいですか?

ファイルを添付したいのですが、どうしたらよいですか?

下記のコードにさらにファイルを添付したい。
どのように修正すればよいでしょうか?
(コードを貼り付ける)

データの4列目に添付ファイルを指定したい。
どうしたらよいですか?

指定したフォルダにあるファイルを複数すべて添付したい。
どうすればよいですか?

フォルダIDは、データの4列目に明記し、変数とします。
コードを修正してください

こんな感じで聞きまくり、出来たコードがこちらです。

GASのスクリプト

GASメール下書き 複数添付ファイル
function createDraftEmail() {
  var spreadsheetId = "スプレッドシートのID"; // スプレッドシートのIDを指定してください
  var sheetName = "sheet1"; // データがあるシートの名前を指定してください
  var sheet = SpreadsheetApp.openById(spreadsheetId).getSheetByName(sheetName);
  var dataRange = sheet.getDataRange(); // データがある範囲を指定してください
  var data = dataRange.getValues();


  for (var i = 1; i < data.length; i++) {
    var recipient = data[i][0];
    var subject = data[i][1];
    var body = data[i][2];
    var folderId = data[i][3]; // 4列目に添付したいファイルが格納されているフォルダのIDがあると仮定しています
    
    var folder = DriveApp.getFolderById(folderId);
    var files = folder.getFiles();
    var attachments = [];
    while (files.hasNext()) {
      var file = files.next();
      attachments.push(file.getBlob());
    }

    var draftEmail = GmailApp.createDraft(recipient, subject, body, {
      attachments: attachments // フォルダ内のすべてのファイルを添付します
    });

    Logger.log("下書きメールが作成されました。ドラフトメールのID: " + draftEmail.getId());
  }
}

複数のファイルを添付することが可能に

メールの自動送信をしたくて、添付ファイルをフォルダ毎にまとめることにし、フォルダを圧縮したのですが、「文字化け」の課題が解決できず、複数ファイルを添付することに再度GASで挑戦し、見事、成功しました。
ほんと、ChatGPTはすごいですね。

でも、こちらでも課題があり、通常使用しているエクスプローラーのフォルダのファイルは、添付できない仕様になっているとの事。
GASで自動メール送信をするには、エクスプローラーのフォルダから、Google Driveのフォルダへのアップロードの手間が必要になりました。
ひとつ課題をクリアすれば、またひとつ課題が・・・

なかなか思い通りには、ならないですね~
でも、また一歩自動化に近づいた気はします。

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?