「毎月1日に自動的にレコードが作成されるようにしたい」など日付をトリガとした自動化プロセスの実装を希望される相談を受けることが多かったので、私が提案している方法を紹介したいと思います。
フローには「スケジュールトリガフロー」があるのですが、こちらの頻度では「毎月N日」の指定はできません。
そこで、毎日起動させて起動後に起動した日付を判定させる方法をとります。
(なので、実際は「毎月N日起動」ではありません…)
例として「
毎月11日に商談レコードの[コピーフラグ]項目にチェックがあるレコードの特定の項目値をコピーしたレコードを作成する」でフローを作成してみます。
フローの作成
1.[設定] → [フロー] → [新規フロー] → [スケジュールトリガフロー] → [自由形式]をクリック
2.開始のスケジュールを設定します。
[+スケジュールを設定] をクリックし以下のように設定し[完了]をクリック
開始日:このフローを開始したい日付
開始時刻:このフローを実行したい時間(組織のタイムゾーンの時間で実行されます)
頻度:毎日
※こちらのサンプルでは、2021/10/11 16:00で設定しました。
3.ツールボックスの要素から[決定]をキャンバスにドラッグし、
[表示ラベル]、[API 参照名]を入力、[リソース]から[+ 新規リソース]をクリック
4.[リソース種別]は[数式]を選択、[API 参照名]を入力し以下のとおりに設定し[完了]をクリック
データ型:数値
小数点の位置:0
数式:DAY(TODAY())
5.[演算子]はそのまま「次の文字列と一致する」にし、[値]に「11」(フローを実行させたいN 日)を入力し[完了]をクリック
6.[決定]要素をコネクタで接続します
7.ツールボックスの要素から[レコードを取得]をキャンバスにドラッグし、
[表示ラベル]、[API 参照名]を入力、[オブジェクト]で「商談」を選択
※ここでのオブジェクトはコピー元を取得していますので、要件に合わせて選択してください。
8.[商談レコードを絞り込み]で項目は[コピーフラグ]を選択、[値]はグローバル定数から「True」を選択
※こちらも要件に合わせて設定してください。
9.[商談レコードを並び替え]はそのままで以降の設定を以下のとおりにし[完了]をクリック
保存するレコード数:すべてのレコード
レコードデータの保存方法:すべての項目を自動的に保存
10.[決定]要素から [レコードを取得]要素を接続させます
このとき表示される [決定コネクタの結果を選択] 画面で「11日」(フローを実行させたいN日)を選択し[完了]をクリック
11.ツールボックスの要素から[ループ]をキャンバスにドラッグします
12.[表示ラベル]、[API 参照名]を入力、[コレクション変数]にレコードコレクション変数(レコードの取得要素のAPI 参照名)を選択し[完了]をクリック
13.[レコードを取得]要素から[ループ]要素を接続させます
14.ツールボックスの要素から[割り当て]をキャンバスにドラッグし、
[表示ラベル]、[API 参照名]を入力、変数で[+ 新規リソース]をクリック
15.[リソース種別]は「変数」を選択、[API 参照名]を入力して以下のとおり設定し[完了]をクリック
データ型:レコード
オブジェクト:商談(レコードを作成するオブジェクト)
16.新規割り当て画面に戻りますので、[変数]に15で作成した[レコード(単一)変数]から値を挿入するコピー先の項目を選択します
17.[演算子]は「次の文字列と一致する」のまま、[値]を[レコード(単一)変数]のループの現在の項目から該当する項目を選択します
18.今回はコピーとわかりやすいように商談名に“コピー”の文字を追加しています。
その他、レコードに挿入したい項目と値をすべて設定したら[完了]をクリック
19.[ループ]要素から18
の [割り当て]要素を接続させます
この時表示される [ループコネクタを選択] 画面のループコネクタで「コレクション内の項目ごと」を選択し[完了]をクリック
20.ツールボックスの要素から[割り当て]をキャンバスにドラッグし、
[表示ラベル]、[API 参照名]を入力、変数で[+ 新規リソース]をクリック
21.[リソース種別]は「変数」を選択、[API 参照名]を入力して以下のとおり設定し[完了]をクリック
データ型:レコード
オブジェクト:商談(レコードを作成するオブジェクト)
複数の値を許可 (コレクション):チェックあり
22.[演算子]を「追加」、[値]に項目を割り当てている [レコード(単一)変数] を選択し[完了]をクリック
23.項目の[割り当て]要素からコレクションの [割り当て]要素を接続させ、
続けてコレクションの [割り当て]要素から[ループ]要素へ接続させます
24.ツールボックスの要素から[レコードを作成]をキャンバスにドラッグ、
[表示ラベル]、[API 参照名]を入力、以下のとおり設定後[完了]をクリック
作成するレコード数:複数
レコードコレクション:21で作成したレコードコレクション変数
25.[ループ]要素から[レコードを作成]要素を接続させます
最終的なレイアウトはこんな感じになります。
26.[保存]をクリックしてフローを保存します
デバッグを使用
設定したフローが想定通りに動くかや、ガバナ制限にかからないかなどを確認します。
1.[デバッグ]をクリックし、オプションで[ロールバックモードでフローを実行します]にチェックを入れて[実行]をクリック
※今回はレコードを作成させないため、ロールバックモードにしています。作成させたい場合はチェックを外してください。
2.[デバッグの詳細]の歯車マークから表示設定を変更できます
3.要素ごとに結果の詳細を確認することができます。フローの動きも問題なさそうなので[有効化]してみます
ジョブの確認
有効化後にジョブの確認ができます。
スケジュール設定されたジョブは[設定]の[スケジュール済みジョブ]で確認できます。
ジョブ名は保存したフローのAPI 参照名です。
フローの実行結果
コピーフラグにチェックを入れたレコードを2つ用意しました。
フロー実行後にちゃんと対象のレコードの値を使用したレコードが作成されました。
ジョブも実行された日時が[開始]項目に表示され、[次の実行スケジュール]に翌日の日付が表示されました。
おまけ
日付を判定する数式(フロー作成の4)で、
数式を「
MONTH(TODAY()+1)-MONTH(TODAY())」にすれば、結果が”1”になる場合は月末とする判定もできます。
日付の判定の数式をアレンジすれば他にもいろいろ対応できると思います。