スプレッドシートからGmail下書きを自動作成する業務効率化ツール
300人規模のイベント対応で大量のメールを一件ずつ手作業で作成するのは非効率でミスも多発していました。
そこで、スプレッドシートのデータをもとに、GASを使ってGmailの下書きを一括作成できるツールを作成した事例を紹介します。
このブログは、Google Apps Script(GAS)を使った自作ツールの記録や、開発の過程での気づきをまとめたものです。
丁寧な解説というより、「こんなこともGASでできるんだ」というアイディアのきっかけになれば幸いです。
やりたかったこと
300人規模のイベント対応をしている中で、1件ずつ手作業でメールを作成するのは非効率でミスも多発していました。
作業を誰でも簡単に引き継げるようにするためにも、スプレッドシートに入力した情報を元に、Gmailの下書きを自動作成するツールを作りたかったです。
使ったロジック・ポイント
今回のツールで工夫したポイントを、目的ごとに整理しました。
「なぜその処理を入れたのか」が分かるようにまとめています。
① スプレッドシートからデータを取得
-
宛先や本文の元データを
SpreadsheetApp.getActiveSpreadsheet()
で開いたシートから取得 -
getRange()
とgetValues()
で、必要な行・列を一括で読み込むことで作業効率をアップ
② Gmail の下書きを作成する
-
GmailApp.createDraft()
を使い、メールを自動で作成
→ ただしsendEmail
(送信関数)は使用せず、必ず下書き作成で止めることで誤送信を防止
③ 誤操作を防ぐ仕組み
-
Browser.msgBox()
を使い、処理前に確認ダイアログを表示 - OKを押さない限り実行しない仕組みにして、意図しない動作を防止
- 処理後には完了メッセージを表示し、ユーザーに安心感を持たせる
④ 開発の進め方
- 最初はテキストメールだけ作り、慣れてからHTMLメール対応や添付機能を追加するなど、徐々に機能を拡張
コード例
以下は、スプレッドシートに入力されたメール情報から下書きを一括作成するGASの例です。 処理前に確認ダイアログを表示し、OKを押した場合のみ実行します。実行後は完了メッセージを表示します。
function createGmailDrafts() {
// 確認ダイアログを表示
const response = Browser.msgBox(
'確認',
'スプレッドシートのデータをもとにGmail下書きを作成してもよろしいですか?',
Browser.Buttons.OK_CANCEL
);
if (response === 'ok') {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName("メールデータ"); // シート名は適宜変更
const data = sheet.getRange(2, 1, sheet.getLastRow() - 1, 3).getValues();
data.forEach(row => {
const name = row[0];
const email = row[1];
const message = row[2];
const subject = `【ご連絡】${name}様へのご案内`;
const body = `○○様\n\n${message}\n\nよろしくお願いします。`;
GmailApp.createDraft(email, subject, body);
});
Browser.msgBox('下書き作成が完了しました!');
} else {
Browser.msgBox('処理はキャンセルされました。');
}
}
メモ・反省・次回やりたいこと
メールの自動送信は、よっぽどのことがない限り使いません。
間違えて実行したり、リストに誤りがあると即誤送信になるので、必ず下書き作成で止めて内容を確認してから送るフローにしています。
最初はプレーンテキストのメールを作っていましたが、GASに慣れてからHTMLメールを作成したり、GoogleドライブのPDFを添付する機能も追加しました。
リストに絵文字が入っていると、文字化けしたままメールを作ってしまうことがあり、それを防ぐ機能を今後作りたいです。