Automation Anywhere でJSONファイルを処理する

# 概要
Automation Anywhere には標準で JSON 形式を扱う機能がありませんが、Automation Anywhere の特徴のひとつである [Bot Store](https://www.automationanywhere.com/jp/products/botstore) には、JSON 処理用のボットがいくつか登録されており、これらをダウンロードしてインストールすることで、機能を追加することが可能です。

# Bot Store にある JSON 処理関連のボット
2019年8月現在、Bot Store には4つのボットが登録されています。

* [JSON Parser Bot](https://botstore.automationanywhere.com/bot/json-parser-bot/) (By Automation Anywhere)
* [Convert Json To Xml](https://botstore.automationanywhere.com/bot/json-to-xml-automation-anywhere/) (By Automation Anywhere)
* [Convert JSON TO CSV](https://botstore.automationanywhere.com/bot/convert-json-to-csv/) (By Automation Anywhere)
* [CSV to JSON](https://botstore.automationanywhere.com/bot/csv-to-json/) (By qBotica Inc)


# JSON 処理機能を追加して使ってみる
上記の4つのボットをインストールして使ってみました。以下のようなMeta Bot がインストールされます。
![json-mbots.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/7866dfde-39a8-76f3-2872-00182efcff30.png)

今回使うJSONサンプルはこちら (テキストファイルとして扱うため、拡張子を.txtにしています)

```JSON:sample.json.txt
{
    "glossary": {
        "title": "example glossary",
		"GlossDiv": {
            "title": "S",
			"GlossList": {
                "GlossEntry": {
                    "ID": "SGML",
					"GlossTerm": "Standard Generalized Markup Language",
					"Abbrev": "ISO 8879:1986",
					"GlossDef": {
                        "para": "A meta-markup language, used to create markup languages such as DocBook.",
						"GlossSeeAlso": ["GML", "XML"]
                    },
					"GlossSee": "markup"
                }
            }
        }
    }
}

```


### 1. JSON Parser Bot
JSON 文法のパーサー、および指定したレベルのキーの列挙や値を得るMeta Botです。

|ロジック|Input パラメータ|Outputパラメーター|説明|
|:--|:--|:--|:--|
|**Get Keys from JSON Logic**|vJsonString|vKeys|vJsonStringの最上位層のキーを列挙。|
|**Get Value from JSON Logic**|vJsonString, vKey|vResponse|指定されたキーに対応する値を返す。|
|**Validate JSON Logic**|vJsonString|vParseSuccessful|JSON文法が正しいかどうかを返す。(True or False)|

サンプルボット: デスクトップに入力ファイルを置いて読み込ませる。カーソルが当たっている位置でこのMeta Botを呼び出します。
![json01.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/88a01c66-ae78-a091-f06d-21d6815a0848.png)

結果: 

* **Validate JSON Logic**はvParseSuccessful=Trueを返します。
* **Get Keys from JSON Logic**は、"glossary"を返します。(最上位で並んでいるキーがglossary 1つだけなので)
* **Get Value from JSON Logic**はvKey=""で呼び出すと、読み込んだJSON全体を返します。vKey="glossary.GlossDiv.GlossList.GlossEntry"で呼び出すと、

```JSON:
{
  "ID": "SGML",
  "GlossTerm": "Standard Generalized Markup Language",
  "Abbrev": "ISO 8879:1986",
  "GlossDef": {
      "para": "A meta-markup language, used to create markup languages such as DocBook.",
      "GlossSeeAlso": ["GML", "XML"]
  },
  "GlossSee": "markup"
}
```

を返します。使い方としては、**Get Keys from JSON Logic**で得たキーひとつひとつに対して値を得て、さらにその中のキーを列挙して...というループを繰り返していって階層を掘っていく、という使い方をするのでしょう。

### 2. Convert Json To Xml
JSON 形式をXML 形式に、またはXML 形式をJSON 形式に変換するMeta Botです。また、JSON/XML をファイルに書き出す機能も付いています。

|ロジック|Input パラメータ|Outputパラメーター|説明|
|:--|:--|:--|:--|
|**JsonToText&JsonFileSave**|vJson, vFileSavePath||vJsonを指定されたパス+.txt/.jsonの2つのファイルに書き出します。|
|**JsonToXmlResponse**|vJson|vResponse|vJsonをXMLに変換、結果をvResponseに返します。|
|**XmlToJsonResponse**|vXml|vResponse|vXmlをJSONに変換、結果をvResponseに返します。|
|**XmlToText&XmlFileSave**|vXml, vFileSavePath||vXmlを指定されたパス+.txt/.xmlの2つのファイルに書き出します。|

ためしに、**JsonToXmlResponse** コマンドでvResponseに入った結果を**XmlToText&XmlFileSave** コマンドでファイルに書き出すと、以下の内容が得られました。

```XML:
<Root>
  <glossary>
    <title>example glossary</title>
    <GlossDiv>
      <title>S</title>
      <GlossList>
        <GlossEntry>
          <ID>SGML</ID>
          <GlossTerm>Standard Generalized Markup Language</GlossTerm>
          <Abbrev>ISO 8879:1986</Abbrev>
          <GlossDef>
            <para>A meta-markup language, used to create markup languages such as DocBook.</para>
            <GlossSeeAlso>GML</GlossSeeAlso>
            <GlossSeeAlso>XML</GlossSeeAlso>
          </GlossDef>
          <GlossSee>markup</GlossSee>
        </GlossEntry>
      </GlossList>
    </GlossDiv>
  </glossary>
</Root>
```

### 3. Convert JSON TO CSV
JSON の中の表形式を(場合によっては複数の)CSV 形式のファイルにに変換するMeta Botです。

|ロジック|Input パラメータ|Outputパラメーター|説明|
|:--|:--|:--|:--|
|**JsonToCSV**|vJsonFile, vCodePage, vTableNo, vOutputPath|vResponse|vJsonFileのパスで指定されたJSONデータを、指定されたパスのフォルダーの中にTable_0.csv, table_1.csv...という形で書き出します。|



### 4. CSV to JSON
CSV 形式のファイルをJSON形式に変換するMeta Botです。

|ロジック|Input パラメータ|Outputパラメーター|説明|
|:--|:--|:--|:--|
|**csvtojson**|vLogFile, vInputFile|JsonOutput|vInputFileで指定されたCSV形式をJsonOutputに出力します。|

&nbsp;
&nbsp;
&nbsp;
このように、いろいろ汎用的に使えるMeta Botが入手可能ですので試してみてください。最後までお読みいただきありがとうございました。