Paypal経由の支払通知に対してGmailから定型文を自動返信するスクリプト
Webサイトからの決済で、Paypalでご利用いただいている方はいらっしゃると思います。Paypal自体はとても便利なサービスですが、支払が完了した際に「自動返信」の機能がないため、せっかくお客様に購入いただいてもお礼のメールをすぐに配信することができません。
今回は、Paypayからご自身のGmailアドレスに支払の通知が来た際に、自動でGmailより定型文を送信するスクリプトをご紹介いたします。
◆目次
対応メールパターン
事前準備
スクリプトの編集
テスト方法
トリガ設定
1.対応メールパターン
以下の2パターンのメールに対応しています。
2.事前準備
Google Apps Scriptに新規プロジェクトを作成します。
以下のリンクよりGoogle Apps Scriptにアクセスします。
「Start Scripting」をクリックします。
「新しいプロジェクト」をクリックします。
「無題のプロジェクト」をクリックして、任意の名前を付け、「名前を変更」をクリックします。
新しいプロジェクトが作成されるので、任意のプロジェクト名をクリックして以下のソースコードを貼り付けます。
// =======================================================================
// 設定
// =======================================================================
// 固定値の設定
var interval = 5; // Gmailチェックの間隔(分)
var paypalEmailAddress = 'service-jp@paypal.com'; // Paypalのメールアドレス
var errorEmailAddress = 'あなたのメールアドレス'; // Error送付先のメールアドレス
// =======================================================================
// メール本文設定
// =======================================================================
// 定義
var subject = '';
var body = '';
// ↓以下の文言を編集してください。
// 件名
subject = '〇〇商店です。この度はご購入ありがとうございます。';
// 本文
body = '〇〇商店です。この度はご購入いただきましてありがとうございます。\n';
body = body + '\n';
body = body + 'お支払いの完了を確認いたしました。\n';
body = body + '順次、配送作業を行ってまいります。\n';
body = body + '商品を発送いたしましたら、改めてご連絡いたします。\n';
body = body + '\n';
body = body + '配送についてはご不明な点がございましたら、下記のページをご覧下さい。\n';
body = body + '+------------\n';
body = body + 'https://www.xyz.com/\n';
body = body + '+------------\n';
// ========================================================================
// 実行処理
// ========================================================================
function main() {
// 対象メール検索&解析
// 取得間隔
var now_time= Math.floor(new Date().getTime() / 1000) ;//現在時刻を変換
var time_term = now_time - ((60 * interval) + 1); //秒にして+1秒しておく
// 検索条件指定 差出人が「Paypal」からとなっていて、
// 件名に「件名に支払いメッセージがあること」を条件に指定
var strTerms = '(subject:から支払いを受け取りました OR 支払いの受領通知 from:' + paypalEmailAddress + ' after:'+ time_term + ')';
// 取得
var myThreads = GmailApp.search(strTerms);
var myMsgs = GmailApp.getMessagesForThreads(myThreads);
// 初期化
var strEmailLocation = 0;
var endEmailLocation = 0;
var emailAddress = '';
var tempEmailBoby = '';
// *1メールずつ取得
for(var i = 0; i < myMsgs.length;i++){
try {
// Paypal本文の取得(宛先解析用)
tempEmailBoby = myMsgs[i][0].getPlainBody().replace(/\s+/g,'');
// メールアドレス取得
strEmailLocation = tempEmailBoby.indexOf('('); // メールアドレスの開始位置の1つ前の文字
endEmailLocation = tempEmailBoby.indexOf(')'); // メールアドレスの終了位置の1つ後の文字
emailAddress = tempEmailBoby.slice(strEmailLocation+1, endEmailLocation) // 文字の切り出し処理
// 送信処理
MailApp.sendEmail(emailAddress, subject, body);
} catch (error) {
MailApp.sendEmail(errorEmailAddress, 'PayPal Thanks Mail Error', 'Please check your item list and mail condition');
}
}
}
◆スクリプトの動作仕様 参考情報
・送信元がPaypal(service-jp@paypal.com)であること
・件名に「から支払いを受け取りました」 または 「支払いの受領通知」が含まれていること
・スクリプトが実行された時点から5分前に来たメールであること
上記3条件がそろったメールがGmailに届いた場合に、
Paypalからのメール内に記載されているメールアドレス(メールの最初に出てくる括弧で囲われた箇所)を抽出して、定型文を送付します。
3.スクリプトの編集
3-1.エラー発生時の宛先の編集
送信エラーが発生した場合にエラー通知が届くメールアドレスを指定します。' (シングルクォーテーション)で囲まれた部分を編集します。
編集が完了したら「保存」ボタンをクリックします。
3-2.定型文の編集
件名は、18行目にあるsubjectの行の文言を変更します。
本文は、21行目から38行目にあるbodyの行を変更します。
編集時の注意点
行の追加は自由です。既存行をコピーして内容を編集してください。
また、改行は、\n (円マーク+n)を入力してください。
文言が長すぎる場合にはGmailで自動的に改行されることがあるのでご承知おきください。
編集が完了したら「保存」ボタンをクリックします。
4.テスト方法
テスト方法についてですが、Paypalのテストアカウントでの購入して、ご自身(Gmailのアドレス以外)で購入してください。
※テストアカウントがない場合には、1円のテスト商品を作成ください。ただし、テストごとに課金されてしまうため注意してください。
購入後、Gmailに通知がきて5分以内に、「実行」ボタンをクリックし、メールが送信されたか確認ください。
※正常に送信された場合には、Gmailの送信済みフォルダにメールが保管されます。
※初回実行時には以下の権限の確認が表示されます。
「権限を確認」をクリックします。
自身のアカウント名が表示されるので、アイコンのある行をクリックします。
「詳細」をクリックします。
「(任意のプロジェクト名)に移動」をクリックします。
「許可」ボタンをクリックします。
5.トリガ設定
テストが完了したら、自動起動のためのタイマー設定をします。
「タイマー」ボタンをクリックします。
「トリガーを追加」をクリックします。
タイマーの稼働間隔を5分おきにセットし、「保存」ボタンをクリックします。
このようにトリガ行が追加されたら設定は完了です。
この後は、5分おきにタイマー起動し、過去5分間にPaypalから送信されてきたメールがないかチェックし、あれば定型文を送付します。
以上になります。ここまで読んでいただきありがとうございました。
※コメントは大変ありがたいのですが、技術的な質問等には個別にお答えできませんので予めご承知おきください。