項目

フィールドを使用すると、モデル内のデータを分類できます。たとえば、Employee モデルの FirstName フィールドには従業員の名前を格納します。

フィールドはテーブル内の列です。レコードは行です。データは、各レコードのフィールドに格納されます。たとえば、4 番目のレコードの FirstName フィールドに Bob を格納できます。

データをフィールドに格納するには、サーバー スクリプト、クライアント スクリプト、バインディングを使用します。

スクリプトからの入力は、フィールドの型と一致している必要があります。スクリプトで正しいデータ型を定義することも、バインディング式でバインディング変換を使用してデータを正しい型に変換することもできます。可能であれば、App Maker がアプリの UI から入力されたデータを適切な型に自動変換します。

フィールドの作成

フィールドを作成するときに、フィールドにデータ型を割り当てます。これにより、フィールドに格納されるデータの種類が決まります。たとえば、文字列型のフィールドには名前やメールアドレスなどの文字列が格納され、数値型のフィールドには数字が格納されます。

次のものを作成できます。

  • 単純フィールド - 1 つの値のみを格納するフィールドです。アプリのフィールドのほとんどは単純フィールドでしょう。各レコードのフィールドには何も含まれないか(null)、値が 1 つだけ格納されます。たとえば、特定のレコードの JobTitle フィールドには次のような値が格納されます。

    Software Engineer

    単純フィールドのデータでレコードを並べ替えることができます。テーブル ウィジェットで列見出しとして使用されるラベルには、次のようにテーブルの並べ替えを行う onClick アクションが定義されています。

    window._am.sortTableBy(widget.datasource,
            widget.datasource.model.fields.LastName,
            widget, window._am.TableState);
  • リスト フィールド - 複数の値が格納されるフィールドです。App Maker は、リスト フィールドの値を配列として格納します。

    各レコードのフィールドには何も含まれないか(空の配列または [] で、null ではない)、値が 1 つだけ格納されるか、または複数の値が格納されます。たとえば、特定のレコードの Measurements フィールドには、次のような値が格納されます。

    [0.312,1.245,1.434,1.789, 42]

    リスト フィールドのデータでレコードを並べ替えることはできません。

単純フィールドのデータ型

説明
文字列 Unicode 文字列 フィールド: FirstName

コンテンツ: Susan

数値 64 ビット浮動小数点数 フィールド: EmployeeID

コンテンツ: 13465

ブール値 true または false フィールド: IsActive

コンテンツ: true

日付 日付オブジェクト フィールド: HireDate

コンテンツ: 2015-09-28

リスト フィールドのデータ型

説明
List<String> 文字列のリスト フィールド: FoodAllergies

配列: ["pecans","walnuts","shrimp"]

List<Number> 数値のリスト フィールド: MRITesla

配列: [1.2,1.5,3,7]

List<Boolean> ブール値のリスト フィールド: Answers

配列: [true,false,false,true]

List<Date> 日付のリスト フィールド: ReviewDate

配列: [2014-07-12,2015-07-15]

フィールド プロパティの設定

各モデルの [Fields] タブで、フィールドのプロパティを設定できます。

名前 説明
Type フィールドに格納されるデータの型。単純フィールドの場合は、String(文字列)、Number、Boolean、または Date になります。リスト フィールドの場合は、List<String>、List<Number>、List<Boolean> または List<Date> になります。フィールドの型は編集できません。フィールド型を変更するには、フィールドを削除して再作成する必要があります。
Name フィールドへのアクセスで使用される固有のラベル。名前に使用できるのは英数字とアンダースコアだけです。また、名前は英字で始める必要があります。
SQL Type (Google Cloud SQL のみ)フィールド データを格納する際に基盤として使用される SQL 型。
Display Name わかりやすいフィールド名。一意である必要はありません。スペースと特殊文字も使用できます。
Description フィールドの説明を入力します。参照用として使用されます。
Use a Default Value 選択した場合、アプリがレコードの作成時に使用するデフォルト値を指定できます。

デフォルト値の使用

デフォルトでは、App Maker はブール値を除くすべての単純フィールドのデフォルト値として null を使用します。ブール値のデフォルト値は false です。リスト フィールドの場合、App Maker はデフォルト値として空の配列を使用します。

[Use a Default Value] をオンにすると、独自のデフォルト値を設定できます。null を受け入れない必須フィールドや、自然なデフォルト状態を持つフィールドの場合、デフォルト値を設定しておくと便利です。たとえば、Employee モデルの場合、新しいレコードが新しいアクティブな従業員を表す可能性があるため、Status フィールドのデフォルト値は Active に設定します。

次の場合、App Maker は初期値としてデフォルト値を使用します。

  • データソースのドラフト レコード
  • 手動保存モードを使用するデータソースに作成されたレコード
  • newRecord() を使用してサーバー上に作成されたレコード
  • Google スプレッドシートまたは CSV ファイルからインポートされ、フィールド値が指定されていないレコード

データの検証

フィールドが受け入れるデータを制限するには、フィールドにデータ検証の制約を設定します。たとえば、ZipCode フィールドの値を 5 桁に設定し、Name フィールドの長さを 2 文字以上にします。利用可能な制約はフィールドの型によって異なります。

リスト フィールドに検証基準を設定した場合、リスト内のすべての項目がこの基準を満たす必要があります。たとえば、2,3,5,3.235 の場合、3.235 が整数でないため、整数検証でエラーが発生します。

名前 説明
Required すべて 選択すると、フィールドが null、未定義または null 要素を持つ配列(リスト フィールド)の場合、レコードが保存されません。
Minimum Length and Maximum Length 文字列 フィールドの最小文字数と最大文字数。
Possible Values 文字列、数値、日付 フィールドに入力可能な値のリスト。
Regular Expression 文字列 このフィールド値を含むレコードを保存するために、文字列が満たす必要がある一連の条件。

詳しくは、正規表現のページをご覧ください。

Regular Expression Error Message 文字列 指定された正規表現と入力が一致しない場合にアプリが表示するエラー メッセージ。
Minimum Value and Maximum Value 数値、日付

フィールドの最小値と最大値。

日付の値は常に UTC で検証されます。ウィジェットがブラウザのタイムゾーンを使用している場合も同様です。

Whole Number 数値 選択すると、フィールド値に有効桁数の小数が含まれている場合、レコードは保存されません。4.4.00..00.0 は整数として扱われます。1.0000000000000001 は整数ではありませんが、小数点以下が有効桁数でないため、App Maker はこの値を整数と見なします。
SQLtype 日付

(Cloud SQL モデルのみ)App Maker によるタイムゾーンの処理方法を制御します。

  • TIMESTAMP - タイムゾーンを含みます。データベースに書き込む前に、App Maker は時間を PT(UTC-7 または UTC-8)に変換します。
  • DATE と DATETIME - タイムゾーン情報は含まれません。App Maker は、データを PT(UTC-7 または UTC-8)として処理します。

必須フィールドを含むレコードの作成

必須フィールドに null または未定義のレコードを作成しようとすると、App Maker はエラーをスローします。リスト フィールドに null 要素の配列を作成しようとしてもエラーが発生します。これらのエラーを回避するため、次のことを行ってください。

  • デフォルト値を割り当てる - これが最も簡単な解決方法です。フィールドの作成時にデフォルト値が挿入されるので、検証エラーを回避できます。
  • (サーバーサイド)ドラフト レコードを使用する - newRecord() メソッドを使用すると、レコードをモデルに保存する前に、必須フィールドを設定できます。
  • (クライアント サイド)ドラフト レコードを使用する - 自動保存モードのデータソースには draft レコードがあります。レコードの作成前に、スクリプトやデータ バインディングで値を入力できます。
  • (クライアント サイド)手動保存モードのデータソースを使用する - 手動保存モードの場合、ユーザーまたはスクリプトはレコードの保存前に必須フィールドを入力できるため、検証エラーを回避できます。

リスト フィールドとの間でのデータの取得

次のようにして、リスト フィールドとの間でデータのやり取りを行うことができます。

  • サーバー スクリプトまたはクライアント スクリプトを使用する - スクリプトを使用すると、リスト フィールドの配列にデータの読み取りと書き込みを行うことができます。
  • ウィジェットを使用する - リスト フィールドで特定のウィジェットとバインディング式を使用できます。
  • インポートとエクスポートを使用する - App Maker は、リスト フィールドを含むレコードをインポートまたはエクスポートできます。

コンマと引用符の構文

アプリの UI や Google スプレッドシートでインポートまたはエクスポートを行うと、次のように、リスト フィールドのコンテンツがカンマ区切りで生成されます。例:

capable truck,magnificent truck,best truck
    

文字列型のリスト フィールドの項目にはカンマを含めることができます。コンテンツとしてのカンマと区切り文字としてのカンマを区別するため、UI で特別な構文を使用できます。また、インポートとエクスポートでも異なる構文が使用されます。インポートとエクスポートでは、二重引用符にも特殊な構文が使用されます。

記号 UI の構文 インポートとエクスポートの構文
コンテンツとしてのカンマ \,(バックスラッシュとカンマ)を使用します。 リスト項目を二重引用符で囲みます。
コンテンツとしての二重引用符 特別な構文はありません。 リスト項目を二重引用符で囲みます。コンテンツ内の二重引用符は二重にします(" は "" になります)。

単一引用符には特別な構文はありません。項目にカンマと 1 つ以上の二重引用符の両方が含まれている場合、その項目を 1 組の二重引用符で囲みます。

データが保存されると、項目の先頭と末尾にあるスペースが削除されます。

UI の構文 インポートとエクスポートの構文
horse,dog,cat horse,dog,cat
horse,dog\,cat horse,"dog,cat"
horse,a "beautiful" dog,cat horse,"a ""beautiful"" dog",cat
horse,a "beautiful\, strange\," exotic dog, cat horse,"a ""beautiful, strange,"" exotic dog",cat