Cookie の設定を選択する

当社は、当社のサイトおよびサービスを提供するために必要な必須 Cookie および類似のツールを使用しています。当社は、パフォーマンス Cookie を使用して匿名の統計情報を収集することで、お客様が当社のサイトをどのように利用しているかを把握し、改善に役立てています。必須 Cookie は無効化できませんが、[カスタマイズ] または [拒否] をクリックしてパフォーマンス Cookie を拒否することはできます。

お客様が同意した場合、AWS および承認された第三者は、Cookie を使用して便利なサイト機能を提供したり、お客様の選択を記憶したり、関連する広告を含む関連コンテンツを表示したりします。すべての必須ではない Cookie を受け入れるか拒否するには、[受け入れる] または [拒否] をクリックしてください。より詳細な選択を行うには、[カスタマイズ] をクリックしてください。

JavaScript を使用して App Studio で式を記述する

フォーカスモード
JavaScript を使用して App Studio で式を記述する - AWS App Studio

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS App Studio では、JavaScript 式を使用して、アプリケーションの動作と外観を動的に制御できます。単一行の JavaScript 式は、二重中括弧、 内に記述され{{ }}、オートメーション、UI コンポーネント、データクエリなどのさまざまなコンテキストで使用できます。これらの式は実行時に評価され、計算の実行、データの操作、アプリケーションロジックの制御に使用できます。

App Studio は、Luxon、UUID、Lodash の 3 つの JavaScript オープンソースライブラリと SDK 統合をネイティブにサポートし、アプリの設定内の JavaScript 構文と型チェックエラーを検出します。

重要

App Studio は、サードパーティーまたはカスタム JavaScript ライブラリの使用をサポートしていません。

基本構文

JavaScript 式には、変数、リテラル、演算子、関数呼び出しを含めることができます。式は、計算の実行や条件の評価によく使用されます。

以下の例を参照してください。

  • {{ 2 + 3 }} は 5 と評価されます。

  • {{ "Hello, " + "World!" }} は「Hello, World!」と評価されます。

  • {{ Math.max(5, 10) }} は 10 に評価されます。

  • {{ Math.random() * 10 }} は、[0~10) の乱数 (小数点以下) を返します。

Interpolation

JavaScript を使用して、静的テキスト内の動的値を補間することもできます。これは、次の例のように、JavaScript 式を二重中括弧で囲むことで実現されます。

Hello {{ currentUser.firstName }}, welcome to App Studio!

この例では、 currentUser.firstNameは現在のユーザーの名前を取得する JavaScript 式で、挨拶メッセージに動的に挿入されます。

連結

次の例のように、JavaScript の +演算子を使用して文字列と変数を連結できます。

{{ currentRow.FirstName + " " + currentRow.LastName }}

この式は、 currentRow.FirstNameと の値をその間のスペースcurrentRow.LastNameと組み合わせ、現在の行のフルネームになります。たとえば、 currentRow.FirstNameJohnで、 currentRow.LastNameが の場合Doe、式は に解決されますJohn Doe

日付および時間

JavaScript には、日付と時刻を操作するためのさまざまな関数とオブジェクトが用意されています。例:

  • {{ new Date().toLocaleDateString() }}: ローカライズされた形式で現在の日付を返します。

  • {{ DateTime.now().toISODate() }}: Date コンポーネントで使用する現在の日付を YYYY-MM-DD 形式で返します。

日付と時刻の比較

=><、 などの演算子を使用して>=、日付または時刻の値を比較<=します。例:

  • {{ui.timeInput.value > "10:00 AM"}}: 時刻が午前 10 時より後かどうかを確認します。

  • {{ui.timeInput.value <= "5:00 PM"}}: 時刻が午後 5 時以前かどうかを確認します。

  • {{ui.timeInput.value > DateTime.now().toISOTime()}}: 時刻が現在の時刻より後かどうかを確認します。

  • {{ui.dateInput.value > DateTime.now().toISODate()}}: 日付が現在の日付より前かどうかを確認します。

  • {{ DateTime.fromISO(ui.dateInput.value).diff(DateTime.now(), "days").days >= 5 }}: 日付が現在の日付から 5 日以上後かどうかを確認します。

コードブロック

式に加えて、複数行の JavaScript コードブロックを記述することもできます。式とは異なり、コードブロックには中括弧は必要ありません。代わりに、JavaScript コードをコードブロックエディタ内で直接記述できます。

注記

式が評価され、その値が表示される間、コードブロックが実行され、その出力 (存在する場合) が表示されます。

グローバル変数と関数

App Studio は、JavaScript 式とコードブロックで使用できる特定のグローバル変数と関数へのアクセスを提供します。たとえば、 currentUserは、現在ログインしているユーザーを表すグローバル変数であり、 などのプロパティにアクセスしてユーザーのロールcurrentUser.roleを取得できます。

UI コンポーネント値の参照または更新

コンポーネントとオートメーションアクションで式を使用して、UI コンポーネント値を参照および更新できます。コンポーネント値をプログラムで参照および更新することで、ユーザー入力とデータの変更に対応する動的でインタラクティブなユーザーインターフェイスを作成できます。

UI コンポーネント値を参照する

UI コンポーネントから値にアクセスすることで、動的な動作を実装することで、インタラクティブでデータ駆動型のアプリケーションを作成できます。

式の名前ui空間を使用して、同じページで UI コンポーネントの値とプロパティにアクセスできます。コンポーネントの名前を参照することで、その値を取得したり、その状態に基づいてオペレーションを実行したりできます。

注記

コンポーネントはそれぞれのページにスコープされているため、ui名前空間には現在のページにのみコンポーネントが表示されます。

App Studio アプリのコンポーネントを参照するための基本的な構文は、 です{{ui.componentName}}

次のリストには、 ui名前空間を使用して UI コンポーネント値にアクセスする例が含まれています。

  • {{ui.textInputName.value}}: textInputName という名前のテキスト入力コンポーネントの値を表します。

  • {{ui.formName.isValid}}: formName という名前のフォームのすべてのフィールドが、指定した検証基準に基づいて有効かどうかを確認します。

  • {{ui.tableName.currentRow.columnName}}: tableName という名前のテーブルコンポーネントの現在の行にある特定の列の値を表します。

  • {{ui.tableName.selectedRowData.fieldName}}: tableName という名前のテーブルコンポーネントの選択した行から指定されたフィールドの値を表します。その後、 ID ({{ui.tableName.selectedRowData.ID}}) などのフィールド名を追加して、選択した行からそのフィールドの値を参照できます。

次のリストには、コンポーネント値を参照するより具体的な例が含まれています。

  • {{ui.inputText1.value.trim().length > 0}}: inputText1 コンポーネントの値が、先頭または末尾の空白を切り捨てた後に空でない文字列があるかどうかを確認します。これは、ユーザー入力の検証や、入力テキストフィールドの値に基づいて他のコンポーネントの有効化/無効化に役立ちます。

  • {{ui.multiSelect1.value.join(", ")}}: multiSelect1 という名前の複数選択コンポーネントの場合、この式は選択したオプション値の配列をカンマ区切りの文字列に変換します。これは、選択したオプションをユーザーフレンドリ形式で表示したり、選択を別のコンポーネントやオートメーションに渡すのに役立ちます。

  • {{ui.multiSelect1.value.includes("option1")}}: この式は、値 option1multiSelect1 コンポーネントの選択したオプションの配列に含まれているかどうかを確認します。option1 が選択されている場合は true を返し、それ以外の場合は false を返します。これは、条件付きでコンポーネントをレンダリングしたり、特定のオプション選択に基づいてアクションを実行したりするのに役立ちます。

  • {{ui.s3Upload1.files.length > 0}}: s3Upload13Upload1 という名前の Amazon S3 ファイルアップロードコンポーネントの場合、この式は、ファイル配列の長さをチェックして、ファイルがアップロードされたかどうかを確認します。これは、ファイルがアップロードされたかどうかに基づいて、他のコンポーネントやアクションを有効または無効にする場合に役立ちます。

  • {{ui.s3Upload1.files.filter(file => file.type === "image/png").length}}: この式は、s3Upload1 コンポーネントにアップロードされたファイルのリストをフィルタリングして PNG イメージファイルのみを含め、それらのファイルの数を返します。これは、アップロードされたファイルの種類に関する情報を検証または表示するのに役立ちます。

UI コンポーネント値の更新

コンポーネントの値を更新または操作するには、オートメーションRunComponentAction内で を使用します。以下は、 RunComponentActionアクションを使用して myInput という名前のテキスト入力コンポーネントの値を更新するために使用できる構文の例です。

RunComponentAction(ui.myInput, "setValue", "New Value")

この例では、RunComponentActionステップは myInput コンポーネントで setValueアクションを呼び出し、新しい値 New Value を渡します。

テーブルデータの使用

テーブルデータと値にアクセスして、 オペレーションを実行できます。次の式を使用して、テーブルデータにアクセスできます。

  • currentRow: テーブル内の現在の行からテーブルデータにアクセスするために使用されます。たとえば、テーブルアクションの名前の設定、行からアクションから開始されたオートメーションへの値の送信、テーブル内の既存の列の値を使用した新しい列の作成などです。

  • ui.tableName.selectedRowui.tableName.selectedRowData はどちらも、ページの他のコンポーネントからテーブルデータにアクセスするために使用されます。例えば、選択した行に基づいてテーブルの外部にボタンの名前を設定します。返される値は同じですが、 selectedRowと の違いselectedRowDataは次のとおりです。

    • selectedRow: この名前空間には、各フィールドの列ヘッダーに表示される名前が含まれます。テーブル内の表示可能な列から値を参照selectedRowする場合は、 を使用する必要があります。たとえば、テーブルにカスタム列または計算列があり、エンティティのフィールドとして存在しない場合です。

    • selectedRowData: この名前空間には、テーブルのソースとして使用されるエンティティのフィールドが含まれます。selectedRowData を使用して、テーブルに表示されないエンティティの値を参照する必要がありますが、アプリの他のコンポーネントやオートメーションに役立ちます。

次のリストには、式内のテーブルデータにアクセスする例が含まれています。

  • {{ui.tableName.selectedRow.columnNameWithNoSpace}}: テーブル内の選択した行から columnNameWithNoSpace 列の値を返します。

  • {{ui.tableName.selectedRow.['Column Name With Space']}}: テーブル内の選択した行の列名とスペース列の値を返します。

  • {{ui.tableName.selectedRowData.fieldName}}: テーブル内の選択した行から fieldName エンティティフィールドの値を返します。

  • {{ui.tableName.selectedRows[0].columnMappingName}}: 同じページの他のコンポーネントまたは式から選択した行の列名を参照します。

  • {{currentRow.firstName + ' ' + currentRow.lastNamecolumnMapping}}: 複数の列の値を連結して、テーブルに新しい列を作成します。

  • {{ { "Blocked": "🔴", "Delayed": "🟡", "On track": "🟢" }[currentRow.statuscolumnMapping] + " " + currentRow.statuscolumnMapping}}: 保存されたステータス値に基づいて、テーブル内のフィールドの表示値をカスタマイズします。

  • {{currentRow.colName}}{{currentRow["First Name"]}}{{currentRow}}、または {{ui.tableName.selectedRows[0]}}: 参照された行のコンテキストを行アクションに渡します。

オートメーションへのアクセス

オートメーションを使用して、App Studio でサーバー側のロジックとオペレーションを実行できます。自動化アクション内では、式を使用してデータを処理し、動的値を生成し、以前のアクションの結果を組み込むことができます。

オートメーションパラメータへのアクセス

UI コンポーネントやその他のオートメーションからオートメーションに動的値を渡すことができ、再利用可能で柔軟性があります。これは、次のようにparams名前空間のオートメーションパラメータを使用して行われます。

{{params.parameterName}}: UI コンポーネントまたは他のソースからオートメーションに渡される値を参照します。たとえば、 は ID という名前のパラメータを参照{{params.ID}}します。

オートメーションパラメータの操作

JavaScript を使用してオートメーションパラメータを操作できます。以下の例を参照してください。

  • {{params.firstName}} {{params.lastName}}: パラメータとして渡された値を連結します。

  • {{params.numberParam1 + params.numberParam2}}: 2 つの数値パラメータを追加します。

  • {{params.valueProvided?.length > 0 ? params.valueProvided : 'Default'}}: パラメータが null または未定義ではなく、長さがゼロでないかどうかを確認します。true の場合は、指定された値を使用します。それ以外の場合は、デフォルト値を設定します。

  • {{params.rootCause || "No root cause provided"}}: params.rootCauseパラメータが false (null、undefined、または空の文字列) の場合は、指定されたデフォルト値を使用します。

  • {{Math.min(params.numberOfProducts, 100)}}: パラメータの値を最大値 (この場合は 100) に制限します。

  • {{ DateTime.fromISO(params.startDate).plus({ days: 7 }).toISO() }}: params.startDateパラメータが の場合"2023-06-15T10:30:00.000Z"、この式は開始日の 1 週間後の日付"2023-06-22T10:30:00.000Z"である に評価されます。

前のアクションからのオートメーション結果へのアクセス

自動化により、アプリケーションはデータベースのクエリ、APIs とのやり取り、データ変換の実行など、サーバー側のロジックとオペレーションを実行できます。results 名前空間は、同じオートメーション内の以前のアクションによって返された出力とデータへのアクセスを提供します。自動化結果へのアクセスに関する以下の点に注意してください。

  1. 以前のオートメーションステップの結果には、同じオートメーション内でのみアクセスできます。

  2. action1action2 という名前のアクションがその順序で存在する場合、action1 は結果を参照できず、action2 は にのみアクセスできますresults.action1

  3. これはクライアント側のアクションでも機能します。たとえば、 InvokeAutomationアクションを使用してオートメーションをトリガーするボタンがある場合です。その後、オートメーションによってファイルが PDF であることが示された場合results.myInvokeAutomation1.fileType === "pdf"、PDF ビューワーのあるページに移動するなどのRun If条件を含むナビゲーションステップを設定できます。

次のリストには、 results名前空間を使用して前のアクションの自動化結果にアクセスするための構文が含まれています。

  • {{results.stepName.data}}: stepName という名前のオートメーションステップからデータ配列を取得します。

  • {{results.stepName.output}}: stepName という名前のオートメーションステップの出力を取得します。

自動化ステップの結果にアクセスする方法は、アクションのタイプと返されるデータによって異なります。異なるアクションは、異なるプロパティまたはデータ構造を返す場合があります。一般的な例をいくつか示します。

  • データアクションの場合、 を使用して返されたデータ配列にアクセスできますresults.stepName.data

  • API コールアクションの場合、 を使用してレスポンス本文にアクセスできますresults.stepName.body

  • Amazon S3 アクションの場合、 を使用してファイルコンテンツにアクセスできますresults.stepName.Body.transformToWebStream()

返されるデータの形状とresults、名前空間内でデータにアクセスする方法については、使用している特定のアクションタイプに関するドキュメントを参照してください。次のリストには、いくつかの例が含まれています。

  • {{results.getDataStep.data.filter(row => row.status === "pending").length}}: getDataStep がデータ行の配列を返すInvoke Data Actionオートメーションアクションであると仮定すると、この式はデータ配列をフィルタリングして、ステータスフィールドが と等しい行のみを含めpending、フィルタリングされた配列の長さ (カウント) を返します。これは、特定の条件に基づいてデータをクエリまたは処理する場合に便利です。

  • {{params.email.split("@")[0]}}: params.emailパラメータに E メールアドレスが含まれている場合、この式は @ 記号で文字列を分割し、@ 記号の前に部分を返します。これにより、E メールアドレスのユーザー名部分が効果的に抽出されます。

  • {{new Date(params.timestamp * 1000)}}: この式は Unix タイムスタンプパラメータ (params.timestamp) を受け取り、JavaScript Date オブジェクトに変換します。タイムスタンプは秒単位であることを前提としているため、1000 を掛けてミリ秒に変換します。これはコンDateストラクタが想定する形式です。これは、オートメーションで日付と時刻の値を操作するのに役立ちます。

  • {{results.stepName.Body}}: stepName という名前のAmazon S3 GetObjectオートメーションアクションの場合、この式はファイルコンテンツを取得します。これは、取得されたファイルを表示するために ImagePDF Viewer などの UI コンポーネントで使用できます。この式は、 コンポーネントで使用するオートメーションの Automation 出力で設定する必要があることに注意してください。

プライバシーサイト規約Cookie の設定
© 2025, Amazon Web Services, Inc. or its affiliates.All rights reserved.