コラム
column
2022.03.15
kintoneで毎週や毎月繰り返しリマインダ通知する。
kintoneの便利な機能の一つに決まった日時になったら通知を送る機能があり重宝しています。
しかし、リマインダーアプリなどで通知を毎週や毎月欲しい場合、手動で設定しておくことは出来ますが、自動で設定することはできなかったため、作成してみました。
フィールド解説
「通知日時」は最初に通知が行われる日時です。
「リピート」はどの間隔で通知が欲しいかです。
「繰返通知日時」はテーブル化しておきます。
プログラムとしては保存時に「通知日時」を「リピート」の間隔で設定したものをテーブル化した「繰返通知日時」に書き込むという流れです。
プログラム解説
日時を扱いやすくするため、Day.jsというライブラリを使用しています。開発終了になったMoment.jsに似てて使いやすいです。
https://day.js.org/en/
毎週は30週分、毎月は24ヶ月分、毎年は5年分のデータを用意して、最後にテーブルの中の「繰返通知日時」に書き込んでます。
jQuery.noConflict();
(function($) {
'use strict';
var events = [
'app.record.create.submit',
'app.record.edit.submit'
];
kintone.events.on(events, function(event) {
const record = event.record;
const settei = record["通知日時"]["value"];
const repeat = record["リピート"]["value"];
const writedata = [];
if (repeat == '一度だけ') {
} else if (repeat == '毎週') {
for (let index = 1; index < 30; index++) {
let nisuu = index*7
let result = dayjs(settei).add(nisuu, 'days').format()
writedata.push(result);
}
} else if (repeat == '毎月') {
for (let index = 1; index < 24; index++) {
let result = dayjs(settei).add(index, 'months').format()
writedata.push(result);
}
} else {
for (let index = 1; index < 5; index++) {
let result = dayjs(settei).add(index, 'years').format()
writedata.push(result);
}
}
//テーブル初期化
record['テーブル']['value'] = [];
// テーブルの末尾に行を追加する
for (var i = 0; i < writedata.length; i++) {
var newRow = {
value: {
繰返通知日時: {
type: 'DATETIME',
value: writedata[i]
}
}
};
record['テーブル']['value'].push(newRow);
}
return event;
});
})(jQuery);
最後にリマインダーの条件通知に「繰返通知日時」を登録します。
これでカレンダーの書き込みスペースが足りないということは無くなるかと思います。
阿部