お世話になっております。
顧客情報に「誕生日」の項目を設けております。
毎年、当日にお祝いメールをメールワイズを使って自動送信するか、
送信対象者を毎日抽出するアプリを作りたいと思っております。
方法やサンプルなどをご教示いただけませんでしょうか。
よろしくお願いいたします。
お世話になっております。
顧客情報に「誕生日」の項目を設けております。
毎年、当日にお祝いメールをメールワイズを使って自動送信するか、
送信対象者を毎日抽出するアプリを作りたいと思っております。
方法やサンプルなどをご教示いただけませんでしょうか。
よろしくお願いいたします。
なかのさん、こんにちは
誕生日の項目は、日付フィールドですかね?
送信対象者を抽出するためには、誕生日の月日(MM/DD)で絞り込んで抽出する必要があると考えて、
どうやって日付フィールドから月日(MMDD)を作り出すか、という方法を考えてみました。
サンプル:
※この方法を試していて、気付きましたが、自動計算で日付フォーマット関数を扱うことができるのは、
1970年1月1日以降の日付のみ、となっています。(ヘルプ参照)
それ以前の誕生日の場合は、計算結果がエラーになります(#VALUE!)。
ムリヤリなんとかしようと、自動計算の中で日付の加算(何年分か加算してからMMDD取得)にトライしてみましたが、
加算できるのは、秒単位(1年:60*60*24*365 等)になるので、長期間の加算では、うるう年の誤差が起こってしまいました。
1970年より前の誕生日の人がいる場合は、NGですね。。。
仕方がないので、JavaScriptでちょっとだけカスタマイズして対応してみました。
※日付の計算にはMoment.jsを使うと楽にできるので、以下を参考にMoments.jsのライブラリーを設定しました。
(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さん
ご丁寧にご教示くださり、誠にありがとうございます!
該当する月日のデータ抽出ができました。
本当にありがとうございます。
なおここから更に、
・「今日」に該当する人を毎日自動抽出して表示するアプリを設ける
・上記の件数を「通知」か「お知らせ」に表示する
ようなことは実装は不可能でしょうか?
度々申し訳ございません。
もしお分かりであれば方法などご教示いただければ幸いです。
よろしくお願いいたします。