Google Apps Script|貼るだけで使える便利サンプル「メール編」

gas_gmail

無料で使えるGoogleスプレッドシート。Windows、Mac、Linux、iPadでも使える便利なサービスですが、エクセルではマクロ・VBAを使っているよ、という人でも「Google Apps Script(GAS)」は使用したことがない人も多いのかと思います。

実務で使えれば、処理の自動化や、ファイルをメールに送ったり、カレンダーへ登録したりと、
かなり実務処理に使える機能がいっぱい。

そこで今回はもちろん無料で、コピペだけで使えるようなGoogle Apps Scriptのおすすめサンプルのまとめです。

Google Apps Scriptとは

Google Apps Script(通称GAS / Google Action Scrpitではありません)とは、Googleが提供する各種クラウドサービスをスクリプト上で実行・操作ができるサービスです。サーバー側で実行処理されるため、ユーザPCへの負荷はごく一部です。言語はJavascriptベースですが、対応していない関数もあります。

Google Apps Scriptから実行・操作ができるサービス

  • スプレッドシート(表計算ツール)
  • Googleカレンダー
  • Gmail
  • Googleドライブ(ストレージ)
  • Googleフォーム(アンケート等に使用できる回答フォーム)
  • コンタクト (連絡先)
  • Googleマップ
  • Googleサイト
  • グループ(例:GASを使って主にグループ情報の取得)
  • Languages(例:GASを使って文字列を翻訳)

1.スプレッドシートをPDFにしてメールへ添付して送信

//スプレッドシートをPDF化してメール添付して送信
function quickpdf(){

	//自分のスプレッドシートを取得
	var sheet = SpreadsheetApp.getActiveSpreadsheet();
	var pdfname = "スプレッドシート.pdf";

	//スプレッドシート上のシートをPDFへ変換
	var pdf = sheet.getAs('application/pdf');

	//PDFをドライブへ作成(保存されます)
	DriveApp.createFile(pdf).setName(pdfname);
	
	//作成したPDFファイルをメールに添付して送る
	var mail = '送信宛先';
	var subject = 'メールタイトル'
	var body = 'メール本文'
	MailApp.sendEmail(mail, subject, body, {attachments:pdf});
}

こちらに説明動画をアップしました。
こちらをスプレッドシートに設定すると、特定に日時に自動でスプレッドシートをPDFにしてメールを送信する、といったことができます。
社内でスプレッドシートを使っている方で、進捗管理を自動集計していて定期的にPDFにして報告している方は、まるまる自動化になりますし、使い方次第では便利に使えるサンプルです。

2.スプレッドシートをエクセルにしてメールへ添付して送信

function sendMail_Excel2() {
// フォルダ、ファイル関係
var targetFolderIds = ["folder1", "folder2", "folder3", "folder4", "folder5"];
var targetFolder;
var folderName;
var objFiles;
var objFile;
var fileName;
var key;
// メール関係
var mailto = "@gmail.com";
var subject = "[GoogleDrive]定期バックアップ(" + Utilities.formatDate(new Date(), 'JST', 'yyyy/MM/dd') + ")";
var body = "";

// その他
var nowDate = Utilities.formatDate(new Date(), 'JST', 'yyyyMMdd');
var fetchUrl;
var fetchOpt = {
"headers" : { Authorization: "Bearer " + ScriptApp.getOAuthToken() },
"muteHttpExceptions" : true
};

var xlsxName;
var attachmentFiles = new Array();

try
{
for (var i = 0; i < targetFolderIds.length; i++) {
// Idから対象フォルダを取得
targetFolder = DriveApp.getFolderById(targetFolderIds[i]);
folderName = targetFolder.getName();
body = body + folderName + "n";

// 対象フォルダ以下のSpreadsheetを取得
objFiles = targetFolder.getFilesByType(MimeType.GOOGLE_SHEETS);

while (objFiles.hasNext()) {
objFile = objFiles.next();
key = objFile.getId();
fileName = objFile.getName();
body = body + " - " + fileName + "n";

xlsxName = fileName + "_" + nowDate + ".xlsx";
fetchUrl = "https://docs.google.com/feeds/download/spreadsheets/Export?key=" + key + "&exportFormat=xlsx";
attachmentFiles.push(UrlFetchApp.fetch(fetchUrl, fetchOpt).getBlob().setName(xlsxName));
}
}
}
catch(e){
subject = "ERROR:" + subject;
body = "エラー : " + e.message;
}

// メール送信
MailApp.sendEmail(mailto, subject, body, {attachments:attachmentFiles});
}

【GAS】複数スプレッドシートをエクセルに変換し定期的に自動ダウンロード|teratail

こちらはスプレッドシートからエクセルに変換したいファイルが入っているドライブのフォルダを指定しておき、「sendMail_Excel2」を実行すると、フォルダ内のスプレッドシートの数だけエクセルとして添付されメールが飛びます。こちらも使えるシーンは多い便利なGASです。

3.下書き状態のメールを指定時間に予約送信

gmailyoyaku
Gmailで予約送信する方法!Googleスプレッドシートの使い方|アマモ場

既にGASが組み込まれているスプレッドシートを自分用にコピーするだけで使えます。
Gmailの予約送信は、他にもchromeの拡張機能でいくつかサービスがありますが、第三者に自分のGmailの権限を許可するのは気持ち悪いためこちらを使った方が良さそうです。

まとめ

Google Apps Scriptは、Googleの各種サービスを使っている方へはとても便利なツールです。コピペだけで簡単に使えて、実用的なものも沢山あります。

今まで難しそうだったからと使っていなかった方は、ぜひこの機会に使ってみましょう。

コメントを残す

メールアドレスが公開されることはありません。