日々の業務の中で添付メールを送る機会は結構な頻度であります。
その中にはGoogleドライブ保存してある複数ファイルをzipに圧縮し、Gmailに添付して送信を行う
といった作業を行なっている方もいるかと思います。
毎日の業務で同じファイルを送る作業はたとえ短くても、積み重なると結構な時間が使われてしまいます。
そこで今回は、
ファイルをzipに圧縮する方法
メールに添付し送信する方法
をスクリプトで実行する方法をご紹介します。
この方法で自動送信が可能になり作業効率化が可能になりますのでぜひ覚えていってください。
ファイルをzipに圧縮する:Utilities.zip(blobs,name)
blob形式にしたファイルをzip形式に圧縮するメソッドです。
blobs部分:blob形式のファイル
name部分:zipファイルの名称
を記載することでzipファイルが作成できます。
クラス:Utilities
注意:初めてコードを実行する際にアクセス権限の許可を求められますが許可をしてください。アクセス権限についての詳細は以下の記事に詳しく載っています。
無料のGmailアカウントでGASに初回の実行許可を与える方法
では実際にサンプルスクリプトを使ってzipファイルを作成していきましょう。
function createZipfile(){
//fileAidから取得 ※このままでは作成できないので、各自ファイルのidを用意してください
var fileA = DriveApp.getFileById("1iqGtkvOSlzsiUv4F6blOnR0REX1uuEPvhY-C9ClSMjs");
var fileB = DriveApp.getFileById("1HYsuwEsUiyUQJfNd200SuW0mCpVE4feAWNp4S0ay01U");
//fileA fileBのBlobを取得し変数に格納
var fileABlob = fileA.getBlob();
var fileBBlob = fileB.getBlob();
//zipファイルを作成
var zipFile = Utilities.zip([fileABlob, fileBBlob],"createZipFile.zip");
//folder場所指定
var folder = DriveApp.getFolderById('1YTWmbQxCnnuLtgD8VhCTcV6xDAbsEPiT'); //フォルダIDを指定
//作成したzipファイルを指定したfolderに
folder.createFile(zipFile);
}
※太字のIDはこのままでは使用できませんので、各自ファイルid フォルダidを入力してください。
今回の流れとしては
3〜4行目
fileA fileBをidから取得
6〜7行目
fileA fileBのBlobを取得し変数に格納(変数名 fileABlob fileBBlob)
9行目
zipファイルを生成
11〜14行目
指定したフォルダに作成したzipファイルを作成
という流れになっています。
getFileByIdについては以下の記事も参考にしてみてください。
Google Apps Scriptでドライブのフォルダやファイルを取得してみる
GoogleリファレンスではURLを使用したUrlFetchAppというものを使用しています。
先ほどのスクリプトを実行すると以下のように指定のフォルダにfileA fileBが入ったzipファイルが作成されます。
メール添付方法:sendEmail(recipient,subject,body,options)
gmailをスクリプトで送信するために必要なメソッドです。()内に情報を追加することで
自動的にメールを送ることができます
※カッコ内情報
recipient:宛先
subject: 件名(最大250文字)
body: 本文
options: 様々な機能(今回は添付ファイルを使用します)
クラス:GmailApp
では次に先ほど作成したzipファイルをメールに添付する方法をご説明します。
Gmailに関するコードの一覧はこちらで説明していますので一覧で知りたい方はご確認ください。
ではスクリプトコードを確認してみましょう。
function sendEmailAttachments(){
//先ほど作成したzipファイル
var zipFile = DriveApp.getFileById('17_JslmWp9kzYIhQzqtExj8d2kqzesGUW');
//zipファイルのBlob形式を取得
var zipBlob = zipFile.getBlob();
//メール送信
GmailApp.sendEmail('testtest@test.com', 'ここに件名を入れてください', 'ここに本文を入れてください', {
attachments: [zipBlob],
name: 'ここに宛先に表示される名前を入れてください'
});
}
※太字のIDはこのままでは使用できませんので、各自ファイルid を入力してください
今回の添付ファイルメールの送信の流れとしては
3行目〜5行目
先ほど作成したzipファイルをidから取得しblob情報を取得
7行明〜9行目
Gmail送信メソッドであるGmailApp.sendEmailで送信
という流れになっています。
では次にsendEmailメソッドの中身を解説していきます。
構造としては
(宛名,件名,本文,オプション)となっておりますので
(‘testtest@test.com’,
‘ここに件名を入れてください’,
‘ここに本文を入れてください’,
{ attachments: [zipBlob], name: ‘ここに宛先に表示される名前を入れてください’ }
);
こう言った形になっております。
宛名、件名、本文までは特に注意は必要ありませんが
オプション部分が今回添付する際には必要になっています。
今回はこのブログの目的である
添付:attachments
そして必須ではありませんが以下の宛先名称も入れています
宛先に表示させる名称 : name
ちなみにオプション部分は{ }で囲っていきます。
添付部分の構造は以下のようになっています。
attachments: [zipBlob] :添付ファイル(複数ある場合は配列にしていく)
name: ‘ここに宛先に表示される名前を入れてください’ :宛先名
この他にも
bcc cc from htmlBody inlineImages noReply replyTo
などがこのオプションで選択することができます。
先ほどのスクリプトを実行すると設定通りのメールが届いていることがわかります。
メールの中身も設定通り添付ファイルも入っています。
まとめ
今回はファイルをzip形式にするUtilities.zipメソッドを使用して複数ファイルをzipにし、
sendEmailメソッドを使用してzipファイルを添付してメールを送信するスクリプトを作成しました。
今回の作業では基本的な方法をお伝えしましたがこの作業を応用すると
特定ファイルをzip形式にしトリガーを使用して指定の時間に送信する
特定フォルダ内の指定したファイルをzip形式にしてトリガーを使用して毎朝送信する
などと言った複雑な作業もできるようになりますのでぜひ活用してみてください。
ここまでご覧いただきありがとうございました。