はじめに
「繰り返し予定の作成」でご紹介したような作成済みの定期的な予定を、一括で変更したいケースがあるかと思います。例として「毎週月曜日の10:00~12:00」として作成してある予定を、「毎週水曜日の10:00~12:00」に変更したいようなケースです。
こちらの記事では同じスケジュール件名を持つ繰り返し予定を一括で変更するカスタマイズをご紹介します。
カスタマイズのイメージを掴んで頂く為に先に動作イメージを示しますと以下のような動きを行うものです。
なお、この記事は連携サービスであるカレンダーPlus の画面での操作を想定していますが、「カレンダーPlusのイベントレコードを変更保存する直前」の代わりに「レコードを保存した直後(削除時は除く)」を使用することで、標準画面での操作時にも同じように使用することが可能です。
想定するアプリ
■「スケジュール管理」アプリ
ユーザーが実際に予定を登録する「スケジュール管理」アプリは以下のフィールドが存在している前提となります。
作成時に区別する必要はありませんが、用途をわかりやすくするため「ユーザーが操作するためのフィールド」と「処理用のフィールド」と分けて記載しています。「処理用のフィールド」にはユーザーがデータを入力することはなく、カスタマインが処理のため一時的なデータを格納するためのフィールドになります。
ユーザーが操作するためのフィールド
処理用のフィールド
カスタマイズ作成手順
まずは、今回の主目的のカスタマイズではなく前準備に該当する部分のカスタマイズを作成します。
上記のカスタマイズにより、スケジュール登録時に「開始日時」フィールドに入れた値が常に「開始日時_変更前」フィールドにコピーされます。過去に登録済みのスケジュールにはカスタマイズは反映されないため、登録済みのスケジュールが大量にある場合には、ファイルへの書き出し・読み込みによって実施していただくのが良いと思います。
以降のカスタマイズはこのように該当するスケジュールデータの「開始日時」と「開始日時_変更前」に同じ値が入っていることが前提となって動くものです。
実際にスケジュールを変更した際に動くカスタマイズは以下となります。
例として以下のような繰り返しが登録されていることを想定し、カスタマイズの内容を順に説明します。
まず、アクション 61 によって同じスケジュール件名を持つレコード(5/25 14:00 の予定)を更新します。「5/18 14:00」の予定を「5/19 14:00」に変更した場合、アクション 61 によって更新される内容は以下の通りとなります。
計算用開始日時_変更前:5/18 14:00
計算用開始日時_変更後:5/19 14:00
これによって計算フィールドである「変更前後差分」フィールドに変更前の時刻・変更後の時刻の差が格納されます。実際には「秒」単位で計算されるため、「5/18 14:00」の予定を「5/19 14:00」に変更した場合には「変更前後差分」に入るデータは以下のようになります。
変更前後差分:86400
(86400分 = 24時間 * 60分 * 60秒)
また、「変更前後差分」フィールドに上記の値が入ることで「開始日時_変更用」「終了日時_変更用」の両フィールドも自動で計算されます。
結果として、元の予定(5/18 14:00~15:00)と同じスケジュール件名を持つ予定(5/25 14:00~15:00)は以下のように変更されます。
この時点ではまだ 5/25 14:00 の予定は変更されていません。「開始日時_変更用」「終了日時_変更用」に入っている日時を「開始日時」「終了日時」にコピーする必要があります。そのための設定が以下となります。
アクション 62~64 では、
・同じスケジュール件名を持つスケジュールを全て取得 (アクション:62)
・元のスケジュールを除外 (アクション:63)
・未来のスケジュールのみに絞り込み (アクション:64)
という条件でレコードを取得しています。その後、アクション 65 で「開始日時_変更用」「終了日時_変更用」に入っている日時を「開始日時」「終了日時」にコピーしています。
この結果、kintone アプリのデータは以下のように書き換わり、スケジュールの変更が行われます。これでスケジュール変更の処理は完了しましたが、冒頭のカスタマイズで説明したとおり「開始日時_変更前」と「開始日時」フィールドを一致させておく必要があるため、アクション 66 も追加しておきます。
以上によって、繰り返し予定として登録されたスケジュールを一括で変更することが可能となります。
まとめ
いかがでしたでしょうか。冒頭でご紹介した「繰り返し予定の作成」と組み合わせて使用するとかなり便利にお使いいただくことができると思います。
なお、無事動くことが確認できたら、「処理用のフィールド」として説明した「開始日時_変更前」「計算用開始日時_変更前」「計算用開始日時_変更後」「変更前後差分」「開始日時_変更用」「終了日時_変更用」はユーザーには操作させないため別途「フィールドやグループを非表示にする」カスタマイズを入れておくのをお勧めします。