こんにちは、飯田です。
今日はServiceNowのフローからAPIを呼び出してから、返ってきたJSONデータを処理する方法を解説します。
(公式ドキュメントを読んだのですが、ハマってしまいかなり苦戦しました。)
具体的な手順
主な手順は以下の通りです。
- Flow Designerを開き、APIを呼び出すActionを作成。
- Actionの中でREST Stepを選択し、APIの呼び出しを定義。
- JSON Parserを選択し、返ってきたJSONを処理。
- Outputを定義してフローの中で値を使えるようにする。
それでは詳しく見ていきましょう。
1.Flow Designerを開き、Actionを作成
まずはアプリケーションナビゲーターに「flow」と入力し、Flow Designerを開いてください。
開いた後はNewのボタンをクリックし、「Action」を選択します。

2.REST Stepを選択し、APIの呼び出しを定義
Actionの中でAPIを呼び出すにはREST Stepを使用します。
呼び出すAPIのURLやメソッド、パラメーターを設定するだけで簡単にAPIの呼び出しができちゃいます。
今回はサンプルとして、以下の天気予報API(livedoor互換)を使用させていただきました。
https://weather.tsukumijima.net/api/forecast
詳しくはこちらのページを参考にしてください。
→ 天気予報API(livedoor互換)
ベースURL(https://weather.tsukumijima.net/api/forecast)に各都市のIDを付けて叩くと、天気予報が返ってきます。
では、これをREST Stepに設定していきます。

Connectionは「Define Connection Inline」を選択します。
この記事では扱いませんが、別途API接続の設定を保存しておくことで、Connection Aliasとして呼び出すことができます。
Base URLには今回使う天気予報APIのベースURLである”https://weather.tsukumijima.net/api/forecast”を入力します。
Build RequestはManual、Resource Pathには"/city/400040"を指定します。
(400040は東久留米市のIDらしいです。)
APIによってはクエリパラメーターやヘッダーに値を指定する必要があるので、色々試してみてください。
一度ここでテストしてみます。

上の画像のようにちゃんとレスポンスが返ってきているのが確認できました。
3.JSON Parserで返ってきたJSONを処理する
APIを呼び出して、期待通りにレスポンスが返ってきたことも確認できたので、次は返ってきたJSONのデータをフローの中で使えるようにします。
JSON Parserを選択して色々設定していきます。
(僕はここで詰まりました。)
Source Dataに、右のパネルからRest stepでAPIを呼び出して返ってきた「Response Body」のデータピルを入れてください。
それが終わったら、下のエディタに先ほどのREST Stepをテストした際に返ってきたJSONのデータを全てコピーして貼ってください。

次に「Generate Target」を押すと、なんとServiceNowが入力したJSONデータを解析して、よしなにデータピルに突っ込んでくれます。
(なにこれすごい。)
上手くいくと下の画像のようになります。

ちゃんと公式ドキュメントを読めば書いていたのですが、返ってきたJSONをエディタにそのまま貼り付けるというところが分からずハマってしまいました。
(公式ドキュメントが画像付きで解説してくれていれば...なんて野暮な文句は言わないでおきます。)
では最後に、取得した値をOutputとして定義して、フロー中で使えるようにしましょう。
4.APIで取得したデータをOutputとして定義する
これが最後のステップです。
OutputsでLabelとNameをよしなに設定し、Valueの部分にJSON Parser stepで取得したデータピルを突っ込んでいきます。

これだけで完成です。
今回作ったActionとOutputはフローの中で下の画像のように利用することができます。

レスポンスのステータスコードやエラーメッセージも返ってくるので、本番で利用する際にはそこらへんのエラーハンドリングも考える必要がありそうですね。
この記事がみなさんの参考になれば幸いです!