誕生日メールの一斉送信

お世話になっております。

顧客情報に「誕生日」の項目を設けております。

毎年、当日にお祝いメールをメールワイズを使って自動送信するか、

送信対象者を毎日抽出するアプリを作りたいと思っております。

方法やサンプルなどをご教示いただけませんでしょうか。

 

よろしくお願いいたします。

なかのさん、こんにちは

誕生日の項目は、日付フィールドですかね?

送信対象者を抽出するためには、誕生日の月日(MM/DD)で絞り込んで抽出する必要があると考えて、
どうやって日付フィールドから月日(MMDD)を作り出すか、という方法を考えてみました。

 

1.標準機能でなんとかする

  • 文字列(1行)フィールドを設置し、自動計算でMMDDを取得するよう設定する。
    自動計算の設定: DATE_FORMAT(誕生日, “MMdd”, “Asia/Tokyo”)
    (誕生日の入った日付フィールドのフィールドコード:誕生日)
  • 一覧の絞り込みで、上で設定したフィールド=当日のMMDD で絞り込む。
    ここは手動で設定する必要がありますが。

サンプル:

※この方法を試していて、気付きましたが、自動計算で日付フォーマット関数を扱うことができるのは、
1970年1月1日以降の日付のみ、となっています。(ヘルプ参照

それ以前の誕生日の場合は、計算結果がエラーになります(#VALUE!)。

ムリヤリなんとかしようと、自動計算の中で日付の加算(何年分か加算してからMMDD取得)にトライしてみましたが、
加算できるのは、秒単位(1年:60*60*24*365 等)になるので、長期間の加算では、うるう年の誤差が起こってしまいました。

1970年より前の誕生日の人がいる場合は、NGですね。。。

 

2.JavaScriptカスタマイズ

仕方がないので、JavaScriptでちょっとだけカスタマイズして対応してみました。

  • MMDDを入れるフィールド(文字列1行)を用意(フィールドコード:誕生日_月日)
  • 上のフィールドに誕生日から月日を設定するJavaScriptカスタマイズを設定
  • 送信対象者の抽出は、標準機能の一覧を使って手動で絞り込み(誕生日_月日=1108 等)

※日付の計算にはMoment.jsを使うと楽にできるので、以下を参考にMoments.jsのライブラリーを設定しました。

https://developer.cybozu.io/hc/ja/articles/204982474-Moment-js-%E3%82%92%E5%88%A9%E7%94%A8%E3%81%97%E3%81%A6-%E6%97%A5%E6%99%82%E3%83%95%E3%82%A3%E3%83%BC%E3%83%AB%E3%83%89%E3%81%AE%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%83%E3%83%88%E3%82%92%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%9E%E3%82%A4%E3%82%BA%E3%81%99%E3%82%8B

 

(function() {
"use strict";

// レコードを保存するときに、誕生日フィールドからMMDDを抽出し、誕生日_月日フィールドに設定する
kintone.events.on(["app.record.edit.submit","app.record.create.submit"], function(event) {
var record = event.record;
var date = record['誕生日']['value'];
record['誕生日_月日']['value'] = moment(date).format('MMDD');
return event;
});

// 編集画面を開いた時に、月日フィールドを編集不可にする
kintone.events.on(["app.record.create.show","app.record.edit.show"], function(event) {
var record = event.record;
record['誕生日_月日']['disabled'] = true;
return event;
});

})();

 

これで無事に老若男女問わず、誕生日の月日を取り出すことができました。

同様に、月(MM)フィールドを作っておけば、今月誕生日の人リストを作ることもできますね!

ご参考になりましたでしょうか? 他にいいやり方を思いついた人はぜひ共有ください!

Shotaro Matsudaさん

ご丁寧にご教示くださり、誠にありがとうございます!

 

該当する月日のデータ抽出ができました。

本当にありがとうございます。

 

なおここから更に、

・「今日」に該当する人を毎日自動抽出して表示するアプリを設ける

・上記の件数を「通知」か「お知らせ」に表示する

ようなことは実装は不可能でしょうか?

 

度々申し訳ございません。

もしお分かりであれば方法などご教示いただければ幸いです。

よろしくお願いいたします。