Gmailに届いた特定のメールに対し、自動的に定型文を返すGoogle Apps Scriptです。お問い合わせの受付完了通知などにどうぞ。
特にありません。スプレッドシートのコンテナバインド型プロジェクトとして実装しています。
スプレッドシートのスクリプトエディタを開き、スクリプトをコピペしたら事前設定エリアを編集します。
サンプルでは過去5分間に到着したメールで、件名に「問い合わせ:」が含まれるものとしました。
保存したら関数「onOpen」を一度実行しておいてください。
条件にマッチするメールを他のアカウントから送信してみます。
値下げ圧力をかけてくるたぬきさんからのメールです。
スプレッドシートに戻り、上のメニューにある「スクリプト実行」から「問い合わせメールに自動返信する」を実行します。
メールを送信したアカウントを見てみると、自動返信メールが来ていますね。
受信したメール本文を表示していますが、なぜか改行が重複しているような・・・?
とりあえずうまく動いているのでトリガーをセットして自動的に返信するようにします。
事前設定で5分を指定したので、トリガーの実行間隔も同じ5分にします。
サンプルのメール検索条件では、初回の問い合わせメールだけではなくその後とのやり取りも対象になってしまいます。
受信専用のメールアカウントで実行するか、受信日時とメールアドレスをスプレッドシートに記録し、すでに自動返信ずみならスキップするなどの対応が必要かもしれません。
また、1日あたりのメールの送信件数には制限があります。
無償版ユーザーの場合は上限が100、有償のGoogle Workspaceでも上限は1500です。お気をつけください。
制限の詳細は https://developers.google.com/apps-script/guides/services/quotas で確認できます。
/**
* このスクリプトの説明、使い方はこちら。
* https://myfunc.jp/items/00150/index.html
*/
function onOpen() {
// スプレッドシートを開いたときに実行される関数
// UIの取得
const ui = SpreadsheetApp.getUi()
// メニューの表示名
const menu = ui.createMenu('スクリプト実行');
// メニューに追加するボタン
menu.addItem('問い合わせメールに自動返信する', 'reply_automatically');
// メニューを画面に追加する
menu.addToUi();
}
function reply_automatically() {
// ########## 事前設定エリア ここから ##########
// 過去何分のメールを対象にするかを指定する。トリガーの実行間隔と合わせる。
const interval = 5;
// 自動返信するメールのキーワードを指定する。この文字列が件名に含まれるものが対象となる。
const keyword = '問い合わせ:';
// ########## 事前設定エリア ここまで ##########
// 現在時刻をUNIX時で取得する = メール検索期間の終わり
// getTime()ではミリ秒まで返ってくるので1000で割り、小数点以下は削除する
const term_end = Math.round(new Date().getTime() / 1000);
// 現在時刻から事前設定したインターバル秒引いて、検索期間の始まりとする
const term_start = term_end - (interval * 60);
// メールの検索条件を定義する。送信済で、ユーザが入力した日付以降のメールを対象とする。
const query = 'after:' + term_start + ' before:' + term_end + ' subject:"' + keyword + '"';
// 条件を元にメールを検索する
const threads = GmailApp.search(query);
// 見つかったスレッドでループ
for (let i = 0; i < threads.length; i++) {
// スレッドからメールを取り出す
// (スレッドは一連のやり取りのグループのため、1スレッドに複数のメールが含まれうる)
let msgs = threads[i].getMessages();
// メール1通ずつ返信していく
for (let j = 0; j < msgs.length; j++) {
// 自動返信メールの件名を組み立てる
let subject = '【受付完了】(' + msgs[j].getSubject() + ')';
// 自動返信メールの本文を組み立てる
let body = `お問い合わせを受け付けました。翌営業日に返信させていただきます。
-- お問い合わせ内容 --
${msgs[j].getPlainBody()}
※このメールは自動返信です。`;
// メール送信を実行
GmailApp.sendEmail(msgs[j].getFrom(), subject, body);
}
}
}
メールアドレスのリストに対して、定形文を一斉に送信するGoogle Apps Scriptです。氏名をメール本文に差し込んで送信することができます。
メールアドレスのリストに対して、定形文を一斉に送信するGoogle Apps Scriptです。最終来店日からN日経過したお客様にだけ送信します。
特定の都道府県向けのお客様を対象にメールを送信するGoogle Apps Scriptです。
誕生日が近いお客様を対象にメールを送信するGoogle Apps Scriptです。期間の指定はポップアップで入力するので柔軟な範囲指定が可能です。
Gmailで過去に送信した宛先をスプレッドシートにまとめて出力するGoogle Apps Scriptです。ウイルス等により勝手にメールが送信されることもあるようで、、チェックしやすくなるかも?
件名に特定の文字列が含まれるメールを、スプレッドシートに転記するGoogle Apps Scriptです。フォームで受け付けたい・・けどメールでも受付せざるを得ない・・という時などに。
Gmailに届いたメールから特定の件名のものをSlackに通知するGoogle Apps Scriptです。Slackが浸透するほどメールをあまり見なくなり、大事なメールを見逃すことが増えてきたので作りました。