ワークフローやリスト機能で日付フィルターを使用することができますが、「次の値より小さいO日前」、「次の値より多いO日後」など、文言で混乱する方が多いと思います。
そこで、日付フィルターの考え方と使用例を紹介します。
日付フィルターの基本的な考え方
最初にそれぞれの言葉の意味を英語と共に記載します。
- 次の値より多い= is more than
- 次の値より小さい= is less than
- 前= ago (今日が含まれる)
- 後= from now (今日が含まれない)
日付フィルターはこれらの条件の組み合わせです。
上記を踏まえ、次のようなフィルターを作ってみます。
- 次の値より小さい3日前 = is less than 3 days ago = 3日前から今日までの間
- 次の値より小さい3日後 = is less than 3 days from now = 明日から3日後までの間
図にするとこのようなイメージです。
フィルターの例
フィルターの例をいくつか紹介します。
-
今日
= is less than 0 day ago =
次の値より小さい0日前
-
きのう
= is less than 1 day ago + is more than 0 day ago =
次の値より小さい1日前 + 次の値より多い0日前
-
明日
= is less than 1 day from now =
次の値より小さい1日後
-
3日後
= is more than 2 days from now + is less than 3 days from now =
次の値より多い2日後 + 次の値より小さい3日後
-
3日前
= is more than 2 days ago + is less than 3 days ago =
次の値より多い2日前 + 次の値より小さい3日前
-
3日後以降(3日目を含む)
= is more than 2 days from now =
次の値より多い2日後
-
3日前以前(3日前を含む)
= is more than 2 days ago =
次の値より多い2日前
*仕様変更があったため、日付の数値を更新しました。
- 過去の仕様:きのう=is less than 2 days ago + is more than 1 day ago = 次の値より小さい2日前 + 次の値より多い1日前
- 現在の仕様:きのう = is less than 1 day ago + is more than 0 day ago = 次の値より小さい1日前 + 次の値より多い0日前
日付フィルターを使うときの参考にしてみてください。
yew
2
@natsumimori さん、大変有益な情報をご教示いただき、誠にありがとうございます!
日付フィルターについて2つご質問がありますが、もしご知見がありましたら教えていただければ幸いです。
① HubSpotのワークフローでは、遅延における「1日」の設定だけではなく、「日」の概念といえばすべて「24時間」で区切るでしょうか?
例えば、挙げて頂いた例を借用すると:
-
次の値より小さい
3日
前 = is less than
3 days
ago =
3日
前から今日までの間 → 次の値より小さい
72時間
前 = is less than
72 hours
ago =
72時間
前から今までの間
② 「時刻」まで記録できる日付型プロパティもあるようですが(例:ミーティングツールで最後に予約されたミーティングの日付)、見た目上「日」までしか取らない日付型プロパティに関して、基本「××月××日0時0分」と見なしていいでしょうか?
上記を質問した経緯として、「ミーティングツールで最後に予約されたミーティングの日付」を基準に日付フィルターを利用してトリガーを設定し、ミーティング前日にフォーム送信するコンタクトを登録対象外にしたかったですが
トリガー:フォーム送信 and **「ミーティングツールで最後に予約されたミーティングの日付」が
次の値より多い:今から1日後**
しかし結果として、ミーティングまで24時間以内の対象しかフィルターできませんでした。
例:ミーティング**「8月6日(16時)」** → 前日の**「**
**8月5日(10時)」**にフォーム送信したら登録対象となった
(本来は、8月6日の前々日である8月4日以前(8月4日を含む)のフォーム送信のみ登録対象とし、前日の8月5日0時~23時59分をフィルターで除外したかった)
お手数をおかけしますが、よろしくお願いいたします。
@yew さん
ご質問ありがとうございます!
社内のリソースを調べたところ、①に関しては24時間区切りで機能するようです。②については確認できるような資料が見つからなかったため、内部チームに聞いてみたいと思いますので、少々お時間くださいませ。
ミーティング前日に予約した人を登録対象外にする場合、「ミーティングツールで最後に予約されたミーティングの日付」が"is more than 2 days from now = 次の値より多い:今から2日後"とすればできそうかなと思ったのですが、どうでしょうか?
yew
4
@natsumimori さん
早速ご確認・ご回答くださってありがとうございます!
①に関しては24時間区切りで機能する
②については内部チーム確認中
上記について承知いたしました。お手数をおかけします…!
「ミーティングツールで最後に予約されたミーティングの日付」が"is more than 2 days from now = 次の値より多い:今から2日後"のご提案について、早速テストさせていただきました。
さきほど8月8日10時のミーティングを、今の時点すなわち前々日の8月6日17時で予約したら、登録対象外になってしいました。(前日の8月7日だけを対象外にとのつもりでした…)
なんとなく、「2日(前・後)より多い」というのは「対象となる日付型プロパティを基準に、前・後48時間01分以上空くこと」なのではないかと理解しております…
難しいですね😂
@yew さん
お待たせしました、②についてチームと確認が取れましたので共有いたしますね。
日付プロパティーの値は、”日にち+アカウントで設定されたタイムゾーンのUTC深夜0時”として値が保存されているとのことです。例えば、アカウントのタイムゾーンがGMT+9(日本はこのタイムゾーン)で日付プロパティーの値が8月10日の場合、このプロパティーのタイムスタンプは8月10日 9:00AM GMT+9です。(UTC0:00はGMT+9タイムゾーンの9:00のため)
>なんとなく、「2日(前・後)より多い」というのは「対象となる日付型プロパティを基準に、前・後48時間01分以上空くこと」なのではないかと理解しております…
こちらのようなワークフローを作ってみたのですが、トリガーが”今から二日後”なのでこれもダメそうですね…
日数ではなく時間でフィルターがかけられているのか、もう少し調査してみますね。何かわかったらこちらで共有します!
@yew さん
内部チームと確認をとり、以下のようにワークフローが機能するということが分かったので共有いたしますね。
- ワークフローはタイムスタンプを取得し、ミリ秒単位で1日を差し引く、または、足す。
- 1,000ms=1秒なので、1日は8640000000ms。
- 「ミーティングツールで最後に予約されたミーティングの日付」に保存されている正確な日時から8640000000msを差し引く、または、足す。
また、②について「日付プロパティーの値は、”日にち+アカウントで設定されたタイムゾーンのUTC深夜0時”として値が保存されている」とお伝えしましたが、これはカスタム日付プロパティーのこととなります。HubSpot既定の日付プロパティーは日付+時刻の情報を保存するプロパティーです。(ナレッジベース:日付プロパティー)
ちなみに、作成中のワークフローのトリガーに”フォーム送信”も含まれているとのことでしたが、具体的にはどのフォームを指定されていらっしゃいますか?
フォームAを送信した AND 「ミーティングツールで最後に予約されたミーティングの日付」が翌日ではなくそれ以降というトリガー条件に合う人にリマインダーメールを送る、といったワークフローを想定していますが、チームとさらに調査できればと思いますので、可能であれば現状のワークフローのスクリーンショットを添付いただけますと幸いです!
yew
7
@natsumimori さん
丁寧にご確認・ご返答くださって誠に感謝しております。
ご説明して頂いた内容についてよく理解できました!この情報を頂けることでワークフローの設計がより精確になるかと思いました。
>ちなみに、作成中のワークフローのトリガーに”フォーム送信”も含まれているとのことでしたが、具体的にはどのフォームを指定されていらっしゃいますか?
説明不足で失礼しました。下記の通り補足し、ワークフローのスクリーンショットを添付いたします。
[u]
**ミーティングツールのフォームA
を送信した AND** [/u]「ミーティングツールで最後に予約されたミーティングの日付」が翌日ではなくそれ以降
ちなみに、日付フィルターを「2日前になった時点」になるように設定しました。2日以上より離れた対象にとってワークフローに登録するタイミングが異なるが、結果として登録されることになると思います。
ワークフローで意図することとして:
利用者がミーティングを予約した際、それがミーティング当日の前日か、それとも2日や3日前といったもっと離れた日付なのかを判断します。
前日であればメール送信しません(別のワークフローで当日の即時送信があるので、「ミーティング日の前日に送信」となると同じ日にメールが複数送信されることになってしまう)。
予約日(フォームA送信日)がミーティング日の2日以上前であれば、ミーティング日の前日に送信します。(「予約日(フォームA送信日)」と「ミーティング日前日」とは異なる日なので同じ日の複数メール送信の懸念はない)。
また、別スレッドで作ってくださったワークフローについて、やはり「日」の概念が「日付」そのものではなく「時間単位」のところに懸念点がありました。例えば下記図に記載しましたパターン②ですと意図する日にちのズレが生じるかと思いました…私の理解不足がありましたらご指摘いただけますと幸いです😂
@yew さん
ワークフローのトリガーについて承知しました、スクリーンショットもありがとうございます。そうですね、”日ベース”の条件がミリ秒単位で稼働するので、パターン②で記載いただいたように意図した日付の2日以上前にメールが送られるケースが出てきますね…。
ミリ秒単位で稼働する点については変更できるものではないですが、”ミーティング予約日の前日を避けてメールを送る”を達成するために他にベストプラクティスがあるか製品チームに問い合わせています。返答を受けましたらまた共有いたしますね。
@yew さん
製品チームに問い合わせていました、ベストプラクティスについて共有いたします。
チームと相談した結果、以前にご紹介した以下のワークフローが最も @yew さんが意図されていることに近いワークフローだという結論に至りました。
このワークフローの設定だと、次のような挙動になります:
シナリオ①
コンタクトAが今日8/23 15:00にフォーム送信してミーティングを予約、予約したミーティングは8/30 17:00開催予定
⇨ミーティングツールで最後に予約されたミーティングの日付が「今から2日後以上」なのでワークフローに登録される
⇨8/29 12:00にメールが送信される
シナリオ②
コンタクトBが今日8/23 13:00にフォーム送信してミーティングを予約、予約したミーティングは8/25 10:00開催予定
⇨ミーティングツールで最後に予約されたミーティングの日付が「今から2日後」(48時間以上先)ではないので、ワークフローに登録されない。
シナリオ②は、現状のワークフローの仕様上あいにく避けられないとのことです😣
また、パターン②としてスクリーンショットに記載いただいたシナリオですと、次のように挙動するとのことでした:
コンタクトCが8/10 にフォーム送信してミーティングを予約、予約したミーティングは8/16 11:00開催予定
⇨ミーティングツールで最後に予約されたミーティングの日付がフォーム送信時点で「今から2日後以上」なのでワークフローに登録される
⇨8/15 12:00にメールが送信される
こちらの情報がご参考となりましたら幸いです。
yew
10
@natsumimori さん
返信遅れてしまい申し訳ございませんでした…!
ご確認いただき、ありがとうございます!
ご提案くださった内容についてよく理解できました!確かに日付プロパティにおける「時間」が変動してしまう限りでは、シナリオ②は避けられないですね…
もしくは、新規日付プロパティ「ミーティング日」を作り、別ワークフローを組んで「最後に予約されたミーティングの日付」の値を「ミーティング日」にコピーすれば、個々のミーティング時間が無視され、タイムスタンプでXX月XX日( 9:00AM GMT+9)に統一できて前述の問題点が解消されるのではないかと思いました。
今回ご相談したワークフローについてそこまで仕組構築する需要がないかと思いますが、日付プロパティにまつわる動きの知見が得られて大変有益に感じました。
また、パターン②としてスクリーンショットに記載いただいたシナリオですと、次のように挙動するとのことでした:
コンタクトCが8/10 にフォーム送信してミーティングを予約、予約したミーティングは8/16 11:00開催予定
⇨ミーティングツールで最後に予約されたミーティングの日付がフォーム送信時点で「今から2日後以上」なのでワークフローに登録される
⇨8/15 12:00にメールが送信される
こちらについて大変勉強になりました!ちょうど今別の契約更新案内などのワークフローを試行錯誤しておりますので、参考にさせていただきます!
いろいろと熱心に調査・アドバイスしてくださって本当にありがとうございました!
ciino
11
@natsumimori
お知恵をいただけたらと思います。
コンタクトリストを作成しているのですが、
リストの条件に「コンタクトの作成日から90日以上経っている」を該当させたい場合、どのように設定すればいいでしょうか?
(このように設定してみたのですが、間違っているようなのでおたずねしました)

@ciino さん
「90日以上経過している」は"is more than 90 days ago"なので「次の値より多い90日前」だと思います。”90日後”ではなく”90日前”と設定して試してみてください😃
egami
14
@natsumimori
大変参考になる情報をご共有いただき、ありがとうございます。
日付フィルターについて追加でお伺いしたいことがあり、ご教授いただけますと幸いです。
コンタクトなどの特定のプロパティに設定されている日付(例:11/20)が、本日(11/30)以前かどうか(11/30も含む)を判断するフィルターを作成することは可能でしょうか。
「設定された期日を過ぎているコンタクト」「まだ期日内のコンタクト」などをフィルタリングして表示するビューを作成したいと考えております。
お手数ですが、どうぞよろしくお願い致します。
@egami
コメントありがとうございます。
「今日を含むか、それより前かどうか」というフィルターでできそうです。
- プロパティーの日付が0日前未満 (is less than 0day ago)
または(OR)
- プロパティーの日付が1日前より多い (is more than 1day ago)
試してみてください😃よろしくお願いします。
日付フィルターの選択肢の意味や設定方法について解説していますので、共有いたします。