Zoho Flowでの日付と時刻の操作

Zoho Flowでの日付と時刻の操作

お知らせ:当社は、お客様により充実したサポート情報を迅速に提供するため、本ページのコンテンツは機械翻訳を用いて日本語に翻訳しています。正確かつ最新のサポート情報をご覧いただくには、本内容の英語版を参照してください。

アプリによって、日付や時刻の値の扱い方はさまざまです。アメリカ式、ヨーロッパ式、その他海外など、日付形式には多くの種類があり、アプリ間で日付時刻の値を自動的に受け渡すのは簡単ではありません。アプリによっては特定の日付形式を受け付けなかったり、別のアプリでは値を誤って解釈してしまうこともあります。例えば、あるアプリが 04-03-2020 という入力値を受け取った場合、そのアプリの設定によっては 2020年3月4日とも 2020年4月3日とも解釈される可能性があります。

フローを作成する際は、日付時刻の値が正確に変換されるようにする必要があります。これにより、フロー内のエラーを最小限に抑え、正しい値が他のアプリに渡されるようにできます。この記事では、アプリが提供するさまざまな日付形式を特定し、変換して扱う方法について説明します。フロー内で日付形式を変換する方法に入る前に、ここで使用する基本的な表記と形式を確認しておきましょう。

フロー内で日付形式を変換する方法に入る前に、ここで使用する基本的な表記と形式を確認しておきましょう。

表記と形式

基本的な表記

文字

日付または時刻の要素


y


1996; 96

Y

週番号に基づく年

2009; 09

M

月(年内)

April, Apr, 04

w

週(年内)

18

W

週(月内)

3

d

日(当月内)

10

D

日(年内)

211

E

曜日名(週内)

Monday; Mon

a

AM/PM マーカー

PM

H

時(0〜23)

2

h

時(AM/PM、1〜12)

3

k

時(1〜24)

21

K

時(AM/PM、0〜11)

10

m

分(1時間内)

54

s

分内の秒

30

S

ミリ秒

853

X

ISO 8601 タイムゾーン

-08; -0800; -08:00


一般的な日付・時刻フォーマット

ISO 8601
これは日付と時刻の値を表す標準化された方法であり、アプリ間で日付時刻がやり取りされる際に最も一般的な形式です。

日付と時刻の形式: yyyy-MM-ddThh:mm:ssXXX
例: 2018-11-26T11:54:39+05:30

日付の形式: yyyy-MM-dd
例: 2018-11-26

Unix タイムスタンプ
これは 1970 年 1 月 1 日から経過した秒数(うるう秒を除く)を表します。
例: 1546491981

アメリカ式
形式: MM/dd/yyyy
例: 11/26/2018

ヨーロッパ式
形式: dd/MM/yy
例: 26/11/2018

国際標準
形式: yyyy-MM-dd
例: 2018-11-26

注意すべき重要なポイント 

  1. UTC、GMT などは時刻を管理するための方式です。実務上は、UTC と GMT は同じと考えて問題ありません。
  2. ISO 8601、RFC 1123 などは日付時刻フォーマットです。ISO 8601 は、現在のほとんどのアプリケーションで推奨されている形式です。
  3. 中央の文字 T は、年-月-日の部分と時-分-秒の部分を区切ります。これは、アプリケーションで必要な日付時刻値とは切り離して解釈する必要があります。入力値からこの文字を解析するには、シングルクォートで囲んでください。たとえば、出力形式として指定すべきなのは 'yyyy-MM-dd'T'hh:mm:ss' であり、'yyyy-MM-ddThh:mm:ss' ではありません。
  4. ダブルクォート(' ')内に記述された文字列のうち、特定の文字列をそのまま解析したい場合は、シングルクォート(' ')で囲んでください。
  5. 日付時刻形式の末尾にある文字「Z」は、その日付時刻が UTC であることを意味します。つまり、UTC からのオフセットが 0 時間 0 分 0 秒であることを表します。
  6. 「Z」の代わりに「+01:00」のような表記がある場合、その時点でのタイムゾーンが UTC より 1 時間進んでいることを意味します(「+01:00」で示されます)。

フロー内の日付形式を特定する

アプリが API を通じてデータを送信する場合、必ず特定の形式が使用されます。アプリの API ドキュメントを確認して、そのアプリが使用している日付形式を特定できます。一部のアプリでは、エンティティごとに異なる形式を使用している場合があります。必ずドキュメント内の該当セクションで、正しい日付形式を確認してください。

日付形式を確認するもう 1 つの方法は、フローに取り込まれるデータを確認することです。トリガーをテストすると、出力に日付の値が含まれます。
identify date format

処理を設定する際には、可能な限り推奨される日付形式が表示されるようになっています。

Zoho CRM で商談が作成されたときに Zoho プロジェクトでプロジェクトを作成するフローを考えてみます。CRM が新しい商談のデータを送信する際に、その日付が yyyy-MM-dd 形式で含まれていることがわかります。
crm date format

一方、Zoho プロジェクトで操作を設定する際には、MM-dd-yyyy 形式のみを受け付けることがわかります。

この不一致のため、CRM からプロジェクトへ日付の値をそのままマッピングすることはできません。扱うべき内容がわかったところで、日付の値をどのように変換するかを見ていきましょう。

日付形式を変換する

CRM の日付をプロジェクト側の形式に変換するには、トリガーと操作の間にカスタム関数を挿入して使用します。

カスタム関数を作成するには、次のコードを使用します。

  1. string dateformat(string dateStr, string inputFormat, string outputFormat)
  2. {
  3. myDate = dateStr。toTime(inputFormat);
  4. 返品する myDate。tostring(outputFormat);
  5. }

この関数には 3 つの入力が必要です。CRM トリガーからの日時、元の形式、そしてプロジェクトで受け付けられる形式です。このカスタム関数は、1 回の実行につき 1 つの日付時刻値のみを変換できます。

このフローでは、トリガーと操作の間にカスタム関数を使用します。開始日と終了日の 2 つの日付値をマッピングする必要があるため、カスタム関数を 2 回使用し、それぞれの関数の出力を Zoho プロジェクト内の対応する項目にマッピングします。

特定のケースでのみこの関数を使用する場合は、カスタム関数のコード内に日付形式を直接含めることもできます。

  1. string dateFormatCal(string dateStr)
  2. {
  3. myDate = dateStr。toTime('yyyy-MM-dd HH:mm:ss');
  4. 返品する myDate。toString('MM-dd-yyyy');
  5. }

この関数は、任意の日付形式を一度標準形式 yyyy-MM-dd HH:mm:ss に変換し、その後指定した形式(この例では MM-dd-yyyy)に変換します。このタイプの関数を使用する場合は、出力する日付形式ごとに別の関数を作成する必要があります。

Zoho CRM と Zoho Desk 間の日付時刻形式の変換例をもう 1 つ見てみましょう。Zoho CRM の出力から取得した日付時刻の値が 2021-07-20T10:33:00+05:30 であり、これを Zoho Desk の形式である 2021-07-20T10:33:00。000Z のような形式に変換したいとします。
 
これを行うには、次のようにカスタム関数を設定します。
 
  1. string dateFormat(string dateStr, string fromFormat, string toFormat)
  2. {
  3. dateObj = dateStr。toTime(' yyyy-MM-dd'T'HH:mm:ss');
  4. 返品する dateObj。toString('yyyy-MM-dd'T'HH:mm:ss。SSS'Z'');
  5. }

日付時刻の値を加算・減算する

複数の国にまたがって運用する場合、フローがさまざまなタイムゾーンで正しく動作するようにする必要があります。カスタム関数を使用すると、タイムゾーンをまたいで日付時刻の値を正確に扱うことができます。

また、カスタム関数を使用して日付時刻の値を加算・減算し、リマインダーを設定することもできます。その方法を理解するために、Google カレンダーで予定が登録された前日に、Zoho Cliq でチームに通知するフローを作成してみましょう。

イベントの前日を計算するために、次のカスタム関数を使用します。

  1. string subDay(string dateStr)
  2. {
  3. dateObj = dateStr。toDate('yyyy-MM-dd'T'HH:mm:ss');
  4. resultDate = dateObj。subDay(1);
  5. 返品する resultDate。toString('yyyy-MM-dd');
  6. }

このカスタム関数の入力は予定の日付です。この関数は、予定日の前日の日付を計算します。

次に、カスタム関数で算出された日付までフローを一時停止させる遅延を追加します。その後、フローがチームにリマインダーを送信します。

要件に応じて、これらの関数を変更したり、独自の関数を作成したりできます。使用できるその他の関数については、Deluge ヘルプページを参照してください。

日付や時刻の形式についてご不明な点があれば、support@zohoflow.com までメールでお問い合わせください。