--- title: "How to Run Date and Time Calculations in Apps" slug: "how-to-run-date-and-time-calculations-in-apps" updated: 2025-01-23T09:21:41Z published: 2025-01-23T09:21:41Z canonical: "support.tulip.co/how-to-run-date-and-time-calculations-in-apps" --- > ## Documentation Index > Fetch the complete documentation index at: https://support.tulip.co/llms.txt > Use this file to discover all available pages before exploring further. # トリガーで時間を扱う ## 概要 *業務の多くの場面で、2つの出来事の間の経過時間を確認することが必要になる。ここでは、その時間を見つける方法を説明する。* 2つのタイムスタンプ間の経過時間をチェックすることは、どのようなプロセスにおいても重要な意味を持つことが多い。 2つのタイムスタンプは以下を決定する: - 指定された生産時間 - バッチ実行からの経過時間 - リアクターの洗浄からの経過時間 2つのDatetime間の時間にロジックを追加することは、データ収集だけでなくアプリのActionでも非常に強力です。 この機能の使用例をいくつか紹介します: - 検査間隔の確認 - 指定された製品の運転からの経過時間を調べる - メンテナンススケジュールの確認 - アプリで2点間の時間を検索する このガイドでは、トリガー、テーブル、エクスプレッション・エディタを組み合わせて、アプリでこれらのシナリオを構築する方法を紹介します。 3つの例を取り上げます: 1. アプリの2つの異なる部分のステップ間の時間を計算する 2. 過去1週間に機械の検査が行われたかどうかのチェック 3. アプリで最初にスキャンされたときに、作業オーダーの目標日付を設定する ## 知っておくと便利な間隔 1分:60秒 1時間3600秒 1日86,400秒 1週間604,800秒 1ヶ月(30日)2,592,000秒 1年31,557,600秒 ## 例1:アプリの2つの部分間の時間を求める(本番時間) この例では、アプリの1つの使用における2つのタイムスタンプの差を計算する方法を示します。 ### レベル中級 この例では、以下のことを理解している必要があります: - [式エディタ](https://support.tulip.co/docs/how-to-use-the-expression-editor-in-the-app-editor) このプロセスの「開始」ポイントに、トリガーエディターで「Then」ステートメントを追加して、現在の日付と時刻をキャプチャする。 ![](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/How%20to%20Run%20Date%20and%20Time%20Calculations%20in%20Apps_169103728.png){height=""幅=""}。 **Data Manipulation - Store - App Info - Current Date and Time**- location:. アプリ内のこの時間計測の希望の「終了」ポイントで、現在の日時をキャプチャする別のトリガーを追加します**。** 時刻をキャプチャするだけでなく、2つのタイムスタンプの差を見つけるトリガーを追加し、変数に格納します。 ![](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/How%20to%20Run%20Date%20and%20Time%20Calculations%20in%20Apps_169099059.png){height="" width=""} とします。 この例では、ボタンが押された時に両方の時間を取得していますが、ステップが閉じたり開いたりした時や、デバイスが発火した時の時間を取得することも可能です。 時間差は、**2つのタイムスタンプ間の合計秒数で**"Interval "変数に格納される**。** ## 例2:検査間隔のチェック ### レベル上級者向け この例では、以下のことを理解する必要がある: - [テーブル](https://support.tulip.co/r230/docs/an-overview-of-tables) - [テーブルの修正](https://support.tulip.co/docs/how-to-modify-tables-within-the-app-editor) - [式エディタ](https://support.tulip.co/docs/how-to-use-the-expression-editor-in-the-app-editor) - [フォームのステップ](https://support.tulip.co/docs/how-to-add-a-trigger-to-a-form-step) 次の例では、アプリの目的は「機械検査」テーブルをチェックし、最後の検査がいつ行われたかを判断することです。さらに、検査が必要な頻度を超えている場合、アプリはユーザーに検査を完了するよう指示します。 ### テーブルのリンク このアプリの最初のステップでは、アプリにテーブルレコードをロードする必要があります。そのため、テーブルがすでに存在している必要があります。テーブルは以下のようになります: ![](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/How%20to%20Run%20Date%20and%20Time%20Calculations%20in%20Apps_168866575.png){height=""幅=""}」のようになります。 - ID(テキスト) - 最終検査日(タイムスタンプ) - 検査頻度(間隔) 上記のように、このテーブルには、機械が前回検査された時刻と、各機械に必要な検査頻度の両方が含まれている。 さて、点検をチェックするために、このテーブルにアプリのレコード・プレースホルダーを与えなければなりません。アプリにテーブルのレコード・プレースホルダーを追加してください。次のような名前にするとよいでしょう: ![](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/How%20to%20Run%20Date%20and%20Time%20Calculations%20in%20Apps_168868019.png){height="" width=""} のように。 ### 変数を作成する: 適切なテーブルをアプリにリンクしたので、2つのタイムスタンプの差を格納する変数を作成する必要があります。Interval "データ型を作成することで、この操作が可能になります。アプリ・エディターのコンテキスト・ペインに移動し、appを選択する。 サイド・ペインでシグマ・シンボルを選択し、新しい変数を作成する。 ![](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/How%20to%20Run%20Date%20and%20Time%20Calculations%20in%20Apps_168864996.png){height="" width=""}を選択します。 変数ペインで、好きな名前で新しい変数を作成し、ドロップダウンメニューからタイプ "interval "を選択する。この変数は、操作される2つのタイムスタンプの引き算の結果を保持することに注意してください。 ![](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/How%20to%20Run%20Date%20and%20Time%20Calculations%20in%20Apps_168865192.png){高さ="" 幅=""}。 必ず "Add "を選択し、変数がリストに追加されたことを確認してから閉じる。 上では、この変数は "ResultantTime "と名付けられ、時間の差をマークする。この例では、最後の検査とアプリの現在時刻の間の時間を記録します。 ### テーブルレコードのロード 適切なテーブルレコードをチェックするには、正しいテーブルIDでテーブルをロードする必要があります。この例では、ドロップダウン・ウィジェットの値に基づいてレコードをロードします。 正しいテーブルレコードを適切にロードするためには、テキストがテーブルIDと正確に一致する必要があることに注意してください。 ![](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/How%20to%20Run%20Date%20and%20Time%20Calculations%20in%20Apps_169097912.png)height="" width="300"} {height="" width="300"} {height="" width="300 ![](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/How%20to%20Run%20Date%20and%20Time%20Calculations%20in%20Apps_169097873.png){height=""幅=""}。 上記のフォーム・ステップでは、どのマシンをチェックするかをユーザーが選択できるようになっている。このフィールドに変数(この場合はMachineType)を必ず追加して、結果にロジックを追加することが非常に重要です。 ### ロジックのチェック いよいよチェックです! このフォームが送信されると、アプリの現在時刻と、テーブルの前のタイムスタンプとの間の時刻をチェックする必要があります。 これを行うには、送信ボタンにいくつかの'カスタムアクション'トリガーを追加する必要があります。 ![](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/How%20to%20Run%20Date%20and%20Time%20Calculations%20in%20Apps_168871060.png){height="" width=""} まず、ボタンが現在時刻を読み込む必要があります。 まず、ボタンは正しいテーブルレコードをロードする必要があります: ![](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/How%20to%20Run%20Date%20and%20Time%20Calculations%20in%20Apps_169098152.png){height="" width=""} まず、ボタンが正しいテーブルレコードをロードする必要があります。 **テーブルレコード - ロードレコード -**IDで:**Variable - MachineType -**に:**検査** このテーブルは、特定のテーブルをロードするためにいくつかのアクションを作成するのではなく、フォームステップで選択されたマシンに基づいて動的にロードされます。 次に、サブミットボタンは、今と、ロードされたテーブルレコードのタイムスタンプとの間の時間を検索します。同じトリガに、以下のようなものを追加します: ![](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/How%20to%20Run%20Date%20and%20Time%20Calculations%20in%20Apps_169098297.png){height="" width=""} とします。 このステートメントは、テーブルの前のタイムスタンプから現在の時間を引きます。そして、この時間差をIntervalデータ型として、最初に作成したVariableに保存します。 新しいトリガーでは、2つのタイムスタンプの差によって、アプリへのアクションが決定されます。 例えば、現在と前回の検査との間の時間が必要な頻度より大きい場合、オペレータはマシンを検査する必要があります。そうでない場合、マシンはOKであり、アクションは必要ない。これは次のようになる: ![](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/How%20to%20Run%20Date%20and%20Time%20Calculations%20in%20Apps_168873297.png){高さ="" 幅=""}。 IF **変数 - 結果時間 - > - テーブル記録 - 検査 - 検査頻度** 次に **ステップに進む - 検査** ここで、チェックは、時間が長すぎる場合、検査を再度実行しなければならないことを保証する。 このアプリは検査のチェックと実行に使用されるため、そうでない場合、アプリは完了することができます。 このElse文は、同じTrigger内で次のようになります: ![](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/How%20to%20Run%20Date%20and%20Time%20Calculations%20in%20Apps_168874258.png){高さ="" 幅=""}」のようになります。 ELSE IF **アプリ - アプリのキャンセル** **メッセージを表示 - 静的な値 - テキスト -**メッセージ ### テーブルの更新 検査が完了したら、検査が行われたことを反映するためにテーブルレコードを更新する必要があります。これを行うには、検査ステップの終了時にトリガーを追加するのが最適です。こうすることで、検査が完全に終了してからレコードが更新されます。 次のように、新しい時間を保存するトリガーを追加します: ![](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/How%20to%20Run%20Date%20and%20Time%20Calculations%20in%20Apps_169098474.png){height="" width=""} のように、新しい時間を保存するトリガーを追加します。 **データ操作 - Store - アプリ情報 - 現在の日時 - テーブルレコード - 検査 - 最終検査** ## 例3-作業オーダーの目標完了日の設定 ある作業オーダーが完了するまでに、10 回の作業を通過しなければならないとする。 作業オーダーが10回の作業のうち最初の作業から始まる場合、顧客の期待に合うように「期限日」を作成する必要がある。例えば、最初の作業開始から1週間後を期限とします。 Tulipでこれを実現するには、1週間先の時間を決定するために、現在の時間にインターバルを追加する必要があります。 そして、その「期日」を「作業指示」テーブルに保存します。その方法は以下の通りです。 まず、1週間先の値をインターバルで保存する変数を作成する必要があります。 コンテキスト・ペインの変数ダイアログに行き、"next_7_days" という新しい変数を作成します。 そして、デフォルト値を604800秒に設定する。これは1週間の秒数です: ![](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/How%20to%20Run%20Date%20and%20Time%20Calculations%20in%20Apps_177811309.png){height=""幅=""}。 次に、現在の作業オーダーのレコード・プレースホルダーを作成し、その作業オーダーをアプリにロードします。 ![](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/How%20to%20Run%20Date%20and%20Time%20Calculations%20in%20Apps_177811743.png){height="" width="400"} 次に、現在の作業オーダーのレコード・プレースホルダを作成し、その作業オー ダーをアプリにロードします。 レコードがロードされたら、Expressionを使用して「Due Date」フィールドを設定します: ![](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/How%20to%20Run%20Date%20and%20Time%20Calculations%20in%20Apps_177812772.png){height=""幅=""}。 - 「データ操作" "保存 "データ:「Expression" "アプリ情報-現在の日時+変数.next_7_days" location:"テーブルレコード" "現在の作業オーダー" "期限日" 上記のトリガー文では、現在の日付と時刻に7日間を追加し、期日を作成しています。 --- お探しのものは見つかりましたか? [community.tulip.coに](https://community.tulip.co/?utm_source=intercom&utm_medium=article-link&utm_campaign=all)質問を投稿したり、他の人が同じような質問に直面していないか確認することもできます!