アクション
データソース別の設定
JavaScript

JavaScriptアクション


(旧)JavaScriptアクションは廃止予定です。今後はこちらのJavaScriptアクションをご利用ください。

JavaScriptアクションは、任意のJavaScriptをサーバー上で実行するアクションです。

コード内で別のアクションの実行も可能で、以下のようなワークフローを作成できます。

  • ファイルをストレージにアップロードするアクションを実行後、その結果のファイルパスをデータベースに保存するアクションを実行する
  • ユーザーのデータを作成するアクションを実行後、その結果を元にslackへ通知するアクションを実行する

設定方法

  1. 右上のメニューから「アクション」を選択してアクション一覧画面に移動します。
  2. 「アクションの追加」を選択してアクションの作成画面に移動します。
  3. 「基本情報の設定」を入力後「次へ」を選択して、「処理の設定」画面に移動します。
  4. 「データソース」から「JavaScript」を選択します。

JavaScriptアクションではパラメーターなどの他のアクションと共通の項目に加えて、「コード」を設定します。

コードでは、アクションの処理をJavaScriptの関数または非同期関数として記述します。

以下は、パラメーターで受け取ったfirstNamelastNameを大文字のフルネームに変換する例です。

/** @type { import("@basemachina/action").Handler } */
export default (
  // 第1引数からパラメーターの値を参照する
  { firstName, lastName },
) => {
  // firstNameとlastNameを結合
  const fullName = `${firstName}_${lastName}`;
 
  // 大文字に変換
  const upperCaseFullName = fullName.toUpperCase();
 
  // 結果を返す
  return upperCaseFullName;
};
`firstName`と`lastName`を大文字のフルネームに変換するJavaScriptアクションの例

他のアクションと同様に、変数・シークレットなどの事前定義パラメーターも使用できます。

/** @type { import("@basemachina/action").Handler } */
export default (
  { customerId },
  // 第2引数から事前定義パラメーターの値を参照する
  // vars.XXX, currentUser.email, environment.idのように参照できます
  { vars, secrets, currentUser, environment },
) => {
  const customerPageUrl = `https://example.com/environments/${vars.ENVIRONMENT_ID}/${customerId}`;
  return customerPageUrl;
};

パラメーターの型

入力値の種類説明
テキストstring-{ company_name: '株式会社ベースマキナ' }
数値number | null-{ user_id: 123 }
日付string | number | null「時刻を含める」「unixtimeとして利用する」「日付の形式」が適用された値が渡ってきます。
型は「unixtimeとして利用する」が有効ならnumber | null、「日付の形式」が設定されているならstringです。
{ created: '2023-01-01', deleted: 1609459200 }
ファイルFile | null現在FileはWeb APIの一部のプロパティにのみ対応しております。
未対応のプロパティやメソッドは今後随時対応する予定です。
{ upload_text: new File(['test'], 'test.txt', { type: 'text/plain' }) }
真偽値string「真の場合の値」または「偽の場合の値」が渡ってきます。{ checked: '有効' }
システム値string-{ offset: '20' }
配列Array | string各要素の種類の型は、各入力値の種類の型と同じです。
「フォーマット形式」が適用された値が渡ってきます。
型は「フォーマット形式」ごとに異なります。
「なし」ならArray、「JSON」または「区切り文字」ならstringです。
{ user_ids: [10, 11, 12], user_names: '["taro","jiro","saburo"]' }
タプルArray | string配列と同じです。{ id_and_name: [123, 'taro'] }
JSON値-JavaScriptアクションでは使用できません-
SQL-JavaScriptアクションでは使用できません-

JavaScriptアクションで別のアクションを実行する

JavaScriptアクションでは、コード内で別のアクションの実行もできます。

別のアクションの実行にはexecuteAction関数を使用します。

executeAction関数経由でのアクションの実行でも、ログイン中のユーザーが実行権限を持っているか検証されるため安心してご利用いただけます。

以下は、商品の画像ファイルを保存するアクションの例です。

最初にストレージへ画像ファイルをアップロードするアクションを実行し、その後保存したファイルのパスをDBへ保存するアクションを実行しています。

// executeAction関数をインポート
import { executeAction } from "@basemachina/action";
 
/** @type { import("@basemachina/action").Handler } */
export default async ({ id, image }) => {
  // ①ストレージに画像ファイルをアップロード
  const uploadResults = await executeAction("upload-product-image", {
    id: id,
    image: image,
  });
 
  // ②保存した画像ファイルのストレージのパスをDBに保存
  const insertResults = await executeAction("insert-product-image", {
    id: id,
    // ①のアクションの結果の画像ファイルのパスを使用する
    path: uploadResults[0].success.objectKey,
  });
  return insertResults[0].success;
};

詳細はexecuteActionをご参照ください。

JavaScriptアクションからしか実行できないアクションを作成する

JavaScriptアクションから実行するアクションを、アクション実行画面などから直接実行できないようにする実行権限の設定も可能です。

設定方法

  1. 右上のメニューから「アクション」を選択してアクション一覧画面に移動します。
  2. 実行権限を制限するアクションを選択して、アクション実行画面に移動します。
  3. 「編集」を選択してアクションの編集画面に移動します。
  4. 「権限設定」ステップを選択して、アクションの権限設定画面に移動します。
  5. 「権限設定」で「実行権限を制限する」を選択します。
  6. 「実行権限のあるユーザー・グループ・アクション」で、このアクションを実行できるJavaScriptアクションを選択します。
  7. 保存します。
JavaScriptアクションの実行権限設定画面

ログインユーザーが実行権限を持たないアクションはアクション一覧画面に表示されないため、実行権限をJavaScriptアクションのみに設定したアクションは、全ユーザーのアクション一覧画面に表示されません。

再度設定を変更する場合は「非表示のアクションを表示する」を有効にすると、アクション一覧画面に表示され実行画面や編集画面へ移動できるようになります。

非表示のアクションを表示するボタン