JavaScript

このページは機械翻訳により提供されています。翻訳内容と英語版に相違がある場合は、英語版が優先されます。

JavaScriptはWeb Developmentでよく使用される言語です。 Workato JavaScriptコネクターを使用すると、レシピの一部としてカスタムJavaScriptコードを記述できます。 JavaScript言語の機能を活用して、データ変換や外部サービスの呼び出しなどを実行できます。

JavaScriptランタイム

Workato JavaScriptコネクターはNode.jsバージョン20.11.0で実行されます。 Node.jsバージョン20.11.0に含まれるすべてのJavaScriptライブラリは、JavaScriptアクションで使用できます。 さらに、次のライブラリが含まれています。

制限

JavaScriptコネクターには次の制限があります。

説明制限メモ
ライブラリ、一時メモリ、入力を含むJavaScriptコネクタアクションのメモリ制限256 MBNA
JavaScriptコネクタアクションの最大コードフィールドサイズ1 MBNA
JavaScriptコネクターアクションのタイムアウト30秒NA
アクション内のJavaScript評価の読み取りリクエストタイムアウト30秒この制限は、次のアクションに適用されます:
  • カスタムJavaScriptコードを呼び出すアクション

また、ユーザー提供のライブラリはサポートされていません。

JavaScriptコネクターの使用

入力

アクションを設定する最初の手順は、アクションの入力フィールドを定義することです。 Input fieldsセクションでAdd fieldを選択し、新しいフィールドを追加します。 JavaScriptコードに渡す入力フィールドすべてについて、この手順を繰り返します。 レシピの以前のステップから、これらの入力フィールドに値をマッピングします。

入力フィールド入力フィールドの追加

日付入力フィールド

Date型の入力フィールドは、StringとしてJavaScriptコードに渡されます。 このような日付入力は、次のように使用することをお勧めします。

js
exports.main = ({when}) => {
  const whenDate = new Date(when);
  // use whenDate
};

出力

JavaScript実行アクションを使用する場合は、呼び出されるJavaScriptの出力スキーマを定義する必要があります。 この出力スキーマは、出力データツリーの構築に使用されます。 このデータツリーを使用すると、JavaScript関数から返されたデータを後続のレシピアクションで使用できます。

出力スキーマを定義するには、サンプル応答を指定してスキーマを生成します。 スキーマは、出力のデータ型と構造を定義します。 出力スキーマを設定する方法は2つあります。

  • サンプルJSONの使用
  • フィールドを追加してスキーマを手動で定義

JSONの使用

JSONの使用スキーマ生成用のサンプルJSON

サンプルJSONを使用して出力スキーマを定義しましょう。 Use JSONボタンをクリックして、スキーマ生成ウィザードを開きます。

JSONサンプルスキーマ生成用のサンプルJSON

JSONサンプルをウィンドウに貼り付けて、Nextをクリックします。 JSONサンプルを確認し、Generate Schemaを選択します。 これで、Output fieldsに出力データツリーが表示されます。

JSONデータツリーサンプルJSONから生成された出力データツリー

このデータツリーは、後続のアクションでJavaScriptコードからの出力を使用するために利用できます。

スキーマの手動定義

または、フィールドを手動で追加してスキーマを定義できます。 フィールドでは次のデータ型がサポートされています。

  • 文字列
  • 番号
  • 整数
  • 日付
  • 時刻
  • ブール値

add fields manuallyを選択してフィールドを追加します。 フィールド名を入力し、データ型と任意項目かどうかを選択してから、Add fieldをクリックします。 出力フィールドを手動で追加出力フィールドを手動で追加

JavaScriptコードから返されるフィールドの数だけ、この手順を繰り返します。

main関数

JavaScriptコネクターでは、コードをexports.main関数内に記述する必要があります。 デフォルトでは、サンプルコードスニペットがコードエディターに表示されます。 exports.mainexports.main関数を含むテンプレートコード

コードはCommonJS形式に従い、main関数をエクスポートする必要があります。

次のサンプルコードは、dataを入力として受け取り、データを変換して出力を返します。

js
const fetch = require('node-fetch');

exports.main = ({data}) => {
  const converter = new DataConverter();
  return converter.convert(data);
};

エラースタックトレース

"Execute JavaScript code"アクションがexports.main関数内のエラーによって失敗した場合、Workatoは関連するエラースタックトレースを表示し、コードのデバッグを支援します。

エラースタックトレースサンプルエラースタックトレース

ログ記録

Developmentとデバッグを支援するため、Workatoはconsole.logステートメントを使用した中間値のログ記録をサポートしています。 Workatoはexports.main関数内のconsole.logステートメントのみを表示することに注意してください。 各console.logステートメントは新しい行として表示されます。

console.logexports.main関数内のconsole.logステートメントの出力

gRPCサービスの使用

gRPCはオープンソースのRPCフレームワークです。 gRPCは、クライアントおよびサーバーアプリケーションを実装するための高性能フレームワークとして使用されます。 Workato JavaScriptコネクターは、gRPCベースのサービスを使用するために利用できます。 このセクションでは、gRPCサービスを呼び出すためにJavaScriptでクライアントコードを実装する手順について説明します。 デフォルトでは、gRPCは構造化データをシリアル化するためのGoogleの成熟したオープンソースメカニズムであるProtocol Buffersを使用します。

Workatoレシピ内の一般的なgRPCサービスとJavaScriptクライアントのアーキテクチャは次のようになります。

WorkatoレシピとgRPCサービスWorkatoレシピとgRPCサービスのアーキテクチャ

gRPCサービスを呼び出す手順を説明する前に、protoファイルについて説明します。

PROTOCOL BUFFERS

Protocol Buffersを使用する最初の手順は、.protoファイルでデータ構造を定義することです。 プレーンテキストファイルに.proto拡張子を追加することで、.protoファイルを作成できます。 Protocol Buffersでは、データはメッセージに整理されます。メッセージは、フィールドと呼ばれる一連の名前と値のペアを含む論理レコードです。

使用するツール

grpc-tools@grpc/grpc-jsgoogle-protobufbrowserifyパッケージをインストールします。

shell
npm i -g grpc-tools
shell
npm i @grpc/grpc-js
shell
npm i -g google-protobuf
shell
npm i -g browserify

JavaScriptコネクターのコードエディターにコピーして貼り付ける必要がある関連スタブコードを生成するには、次の手順に従います。

  • 呼び出すサービスのgRPCインターフェイス定義ファイル(protoファイル)を取得します
  • grpc-toolsを使用して、protoファイルをJavaScriptスタブに変換します。 次の例では、contacts.protoサービス定義のgRPCスタブを生成します。
shell
grpc_tools_node_protoc --js_out=import_style=commonjs,binary:. --grpc_out=generate_package_definition:. <your proto file.proto>
  • browserifyを使用して、生成されたコードをパッケージ化し、最小化します
shell
browserify . --external @grpc/grpc-js --external google-protobuf -o <your bundle name.js> --node --im -s <your client code.js>

browserifyコマンド内のコマンドを、バンドル名とクライアントコードのJavaScriptファイル名に置き換えます。

  • 最小化されたgRPCスタブをJavaScriptアクションコードエディターにコピーして貼り付けます
  • JavaScriptコネクターでは、コードをexports.main関数内に記述する必要があります。 デフォルトでは、サンプルコードスニペットがコードエディターに表示されます。
  • main関数内のJavaScriptコードで、生成されたクライアントスタブを使用します。

WORKAROUND COMPATIBILITY

この回避策は、gRPCサービスを使用するという特定のユースケースでのみ機能することが保証されています。 Browserifyと互換性のある他のライブラリでも機能するように見える場合がありますが、Workatoは文書化されたシナリオ以外での有効性を保証しません。

Last updated: