記事テンプレート
コードタスクについて
コードタスクでは、カスタムJavaScriptを使用して、ワークフロー内の他のタスクの前または後にデータ操作、フォーマット、計算操作を実行することができます。例えば、コードタスクを使って、APIコールの戻り出力をより使いやすい結果に変換することができる(例えば、技術者でないマネージャーに結果を伝える必要があった場合)。そして、その変換結果をメールタスクにパイプし、マネージャーにメールを送ることができる。
コードタスクの設定
- に移動する。 単体ワークフローページ または アンケートのワークフロータブ。
- ワークフローの作成」をクリックします。
- イベント受信時に開始を選択。
- ワークフローに名前をつける。
- Choose Event]をクリックし、ワークフローを開始するイベントを選択します。通常はアンケート調査の回答イベントです。
- 必要であれば、プラス記号( + )をクリックし、「条件」を選択してワークフローに条件を追加します。条件は、ワークフローがいつ起動するかを決定するのに役立ちます。建物の条件についてはリンク先のページを参照。
- プラス記号(+)をクリックし、タスクを選択します。
- Code タスクを選択する。
- ボックスにJavaScriptの式を入力してください。コードを書く際に役立つ情報については、ベストプラクティスのセクションを参照してください。
Qtip:コードエディターは編集の履歴を保持するので、CTRL+Z(PC) またはCMD+Z(Mac) を押すことでコードの変更を取り消すことができます。変更をやり直すには、SHIFT+CTRL+Y(PC)またはSHIFT+CMD+Y(Mac)を使用します。 - 必要であれば、JavaScriptコードが何を達成すべきかを説明するタスクサマリーを入力する。
- Test codeをクリックすると、ローカルブラウザでコードが実行されます。
Qtip:これらは異なる環境で行われるため、コードをテストしてもワークフローで実行したのと全く同じ結果が得られるとは限りません。
- JavaScript 式にテキストの差し込みを追加するには、{a} テキストの差し込みを追加 メニューを使用します。テキストの差し込みは、回答者のアンケート調査の回答を読み込むなど、イベントから値を読み込むのに便利です。テキストの差し込みは、JavaScript式が実行される前に評価されます。
- コードを消去してやり直す必要がある場合は、「デフォルトにリセット」をクリックしてください。
- 終了したら、[保存]をクリックします。
- コードタスクは多くの場合、コードタスクの出力を使用するために別のタスクとペアになる。プラス記号(+)をクリックし、タスクを選択し、次へタスクを選択します。タスクの概要についてはこのページを参照。
JavaScriptの実行制限
コードタスクに含めるJavaScriptコードを書く際には、以下の実行制限に注意してください:
- 最大実行時間:10秒
- JavaScriptの最大長:6KB
- APIリクエストのアウトバウンドはできません:セキュリティ上の理由から、コードタスクは他の API やサービスに対してアウトバウンドリクエストを行うことはできません。また、HTTP リクエストを使って実行時に他の JavaScript ライブラリを取得することもできません。
JavaScriptのコードがこれらの制限を超えると、コードタスクは失敗する。ワークフローが失敗した場合は、ワークフローレポートで失敗の原因をご確認ください。
ベストプラクティス
JavaScriptを書く際には、以下のベストプラクティスに従ってください:
-
- あなたのコードはES6構文に準拠していなければならない。
- あなたのコードは、保護された環境でNode.jsを介して実行されます。タスクは現在Node.jsバージョン8.10を使用している。
- あなたのコードは、JavaScriptオブジェクトとして結果を返さなければなりません。返される結果がこのようにフォーマットされていると、システムはカスタムコードがどのフィールドを返すかを自動的に推測し、その後のタスクに適切なテキストの差し込みを提供することができます。
例この例では、複数の結果を返します:
function codeTask() { return { hello: "world", foo:"bar", status: 200 }; }.
例この例では、単一の結果を返します:
function codeTask() { return { result:"hello world", }; }.
- 期待する情報の種類によっては、ロケーター構文を引用符で囲む必要があるかもしれない。ロケーターを文字列に解決したい場合は、引用符を追加する必要があります。ITがオブジェクトに解決される場合は、引用符を付ける必要はない。
例例えば、以下のようなコードには引用符が必要です:
function codeTask() { let ticketId = "~{ch://OCAC_31HNMUuEpm3Jg/exports.data.key}"; ... }.
- 引用符を含む可能性のあるフィールドにテキストの差し込みを使用する場合、パイプされたテキストを囲む引用符の代わりにテンプレート・リテラル(`)を使用する必要があります。
例コードタスクとWebサービスタスクの併用
この例では、コードタスクとウェブサービスタスクの使い方を説明します。Web サービスタスクでコードタスクを使用して、回答者のアンケートの回答を API フレンドリーなコードに変換し、返された値を使用して API コールを実行することができます。そして、APIコールの結果を受け取り、別のコードタスクを使って、返された値を人間が使いやすいレスポンスに変換することができる。
この例では、クアルトリクスでレストラン検索を構築しています。詳しくは後ほど説明するが、以下にその概要を記す。
- アンケート調査では、回答者に「どこで食べたいのか」「結果をどのように返したいのか」を尋ねます。
- レストランを検索するには、サードパーティのレストラン検索アプリを使用します。コードタスクを使用して、アンケート調査回答者の回答をサードパーティのレストラン検索APIが使用できるフォームに変換します。
- 次に、ウェブサービスタスクを使用して、サードパーティのレストランファインダーにAPIコールを実行し、結果をJSONとして返します。
- 別のコードタスクを使って、結果のJSONを人間が読める形に変換する。
- 最後のタスクを使って、この情報を回答者、あるいは私たち自身に送ることができる。たとえば、メールタスクを使用して、回答者に返信された結果をメールで送信します。
コードタスクでレストラン検索を作成する
- アンケート調査では、コードタスクに反映させる質問を作成します。私たちの場合は、レストランをどこで検索するかという質問文と、結果をどのように並べ替えるかという多肢選択式の質問です。
- ワークフローに移動します。
- 新しいワークフローを作成する。
- ワークフローイベントでは、以下の項目を選択します。 アンケート調査への回答 イベントを作成し、新しいレスポンスが作成されたときにイベントがトリガーされるように設定します。詳細については、リンク先のページを参照してください。
- プラス記号(+)をクリックし、タスクを選択します。
- Code タスクを選択する。
- コードについては、回答者の回答をレストラン検索APIに必要な値に変換しています。
- テキストの差し込みを使用して、回答者の回答の元となる質問文を引き込みます。
- 保存を クリックしてタスクを保存する。
- プラス記号(+)をクリックし、タスクを選択します 。
- Web Serviceタスクを選択し、自分らしくいられることを選択する。詳しくはこのページをご覧ください。
- URL を入力してください。
- クエリ文字列を使用してパラメータを追加します。テキストの差し込みメニュー{a}を使用して、アンケート調査や前回のコードタスクの値を使用します。
例完全に構築されたURLは次のとおりです。
https://api.example.com/v3/businesses/search?sort_by=~{ch://OCAC_Zt2TNQYggAb6u89/sort_by}&location=${q://QID1/ChoiceTextEntryValue}.
これには、sort_byとlocationという2つのパラメータがある。sort_byの場合、値は最初のコードタスクの結果である。場所の場合、値は自由回答質問文に対する回答者の回答です。
- 必要に応じてタスクの設定を終える。ヘルプが必要な場合は、ウェブサービスのタスクを参照してください。
- 必要に応じて、他のタスクで使用できるカスタムJSONパスを作成する。この例では、検索結果から企業の配列を返す “business “パスを作成します。
qtip:ウェブサービスタスクをテストした場合、クアルトリクスは自動的にJSONパスを識別し、ここに追加します。不要なものはごみ箱アイコンをクリックして自由に削除してください。 - [保存]をクリックします。
- プラス記号(+)をクリックし、 タスクを選択します。
- Code タスクを選択する。
- ここで、ウェブサービスタスクから得られる結果JSONを読みやすい形に変換する必要がある。私たちの場合は、Eメールに使用するためにHtmlに変換しています。
- ウェブサービスタスクから結果のJSONを取得するには、テキストの差し込みメニュー{a}を使用します。
- [保存]をクリックします。
Qtip:パイプ差し込みテキストを使用する場合、パイプ差し込みテキスト指定子は検証JavaScriptではないため、警告が表示されることがあります。しかし、これはコードが実行される前にテキストの差し込みがフィールドの値に置き換えられるため、実行前に解決されます。
- プラス記号(+)をクリックし、タスクを選択します。
- Eメールを選択してください。
- メールタスクを設定します。詳細については、リンク先のページを参照してください。
- 2番目のコードタスクの結果をメール本文にパイプインする。これがレストラン検索の結果を返すものである。
- 結果として、回答者が選択した検索結果がメールで返されます!
FAQ
- ワークフローテンプレートを介して利用可能なすべての拡張にアクセスできますか。
-
アクセスは、ライセンスと権限によって異なります。ブランド管理者 に連絡し、ライセンスがその拡張機能へのアクセス権を持っているかどうか確認してください。
- すべてのワークフローイベントトリガ、コントロールフロー、およびタスクへのリンクはありますか。
-
クアルトリクスワークフローの基本については、 こちらのサポートページ を参照してください。すべてのイベントとタスクがこのページからリンクされます。
- ワークフローテンプレートとは
-
ワークフローテンプレートは、ユーザがワークフローを最初から構築する必要がないように、事前に構築された自動化されたワークフローのコレクションです。これらのテンプレートは、クアルトリクスの主題のエキスパートが作成します。
- ワークフローとは/ アクションはどこにあるか?
-
アクションの名称がワークフローに変更されました。これは、製品エクスペリエンスをより適切に表し、ユーザが製品に関与する方法を反映するためです。ワークフローの使用の詳細については、「ワークフローの概要」ページを参照してください。
この更新の一環として、ワークフロー機能に変更はありません。