マイクロアプリ

スクリプト変換

スクリプト変換を使用すると、データ読み込みエンドポイントとサービスアクションのインラインスクリプト変換を有効にできます。スクリプトは、HTTP応答から取得したレスポンスオブジェクトを受信し、ターゲット統合のレコードシステム (SoR)に応じて、別のレスポンスオブジェクトに変換するように設定できます。スクリプトでは、要求を実行したり、データを格納したりすることはできません。スクリプト変換は、HTTP統合JSONパーサーによって解析できるように、応答を変換することのみを目的としています。

  • 各HTTPエンドポイントには、独自の編集可能なスクリプトがあります。
  • [サービスをテスト] ボタンでHTTP統合をテストする場合、スクリプトはテスト要求とともに実行されます。
  • リクエスト変換で実行されるスクリプトの上限は、10,000ステートメントです。
  • スクリプトの実行は、1分間の時間制限もあります。1分以内にスクリプトが終了しない場合、スクリプトは終了します。

はじめに

スクリプト変換を使用するということは、皆様はターゲットアプリケーションのSoRに精通していると推察されます。HTTP統合にスクリプト変換を使用する場合は、次の一般的なプロセスに従う必要があります:

  • [データの読み込み] または [サービスアクション] 設定ページで、インポートするスクリプトを準備します。
  • スクリプトはJavascriptで準備する必要があります。編集にはお好みのテキストエディター/開発ツールを使用してください。
  • 準備ができたら、マイクロアプリ管理インターフェイスのスクリプト変換ボックスを使用してスクリプトを貼り付け(または直接編集)します。
  • インポートしたら、スクリプトをテストします。

注:

スクリプト変換を使用すると、標準のスクリプト出力は、デバッグで使用するためにシトリックスによってログに記録され、インデックスが付けられます。構成中にprint、console.logなどを使用するときは、機密情報がログに記録されないようにしてください。

スクリプト変換を有効にする

[データの読み込み] または [サービスアクション] の設定時にスクリプト変換を有効にするには、次の手順に従います:

  1. [スクリプト変換] ボタンを選択します:

    スクリプト変換切り替えボタン

  2. 準備したスクリプトを入力します:

    スクリプトの入力

  3. [パラメーターを指定してテスト][サービスをテスト]の順に選択して、元の応答、スクリプト出力、変換された応答、および該当する場合はスクリプトエラーを確認します。

注:

変換スクリプトを変更した場合は、テーブルも再生成する必要があります

スクリプトが [データの読み込み] または [サービスアクション] で正常に動作している場合は、[追加]を選択します。

スクリプト例

({response}) => {
_ = library.load("lodash")
let json = JSON.parse(response)
console.log(`loaded user count: ${json.length}`)
let transformed = json.filter(user => {
    if (user.active === true) {
        return true
    }
    console.log(`skipping inactive: ${user.displayName}`)
    return false
}).map(user => ({
    name: user.displayName,
    avatarUrl: user.avatarUrls["32x32"],
    now: _.now(),
}))
return JSON.stringify(transformed) }

注:

前述の例のように文字列を返すことも、または変換された変数を返すjsオブジェクト(配列)として文字列を返すこともできます。

:JSON配列名before.json after.jsonの変更:

({
response
}) => {
_ = library.load("lodash")
 
function rename(obj, key, newKey) {
    if (_.includes(_.keys(obj), key)) {
        obj[newKey] = _.clone(obj[key], true)
        delete obj[key]
    }
    return obj
}
 
let json = JSON.parse(response)
let transformed = rename(json, 'tickets', 'new_tickets')
return JSON.stringify(transformed) }
スクリプト変換