【KintoneのアプリデータをRPAで楽々取得！】BizRobo!でKintoneのREST APIを呼びだす方法

# 本記事でできること
BizRobo!でKintoneのREST APIを使ったレコードの操作方法を紹介します。
APIを用いて開発をすることでKintoneと別システムの自動化が実現しやすくなると思います。
また、KintoneのAPIの使い方やBizRobo!でAPIを利用するための設定方法について理解できます。

## 背景
BizRobo!はステップの編集だけで簡単にデジタルレイバー(ロボット)を作成できるので非エンジニアの方にもなじみやすいのが特徴だと思います。
ただ、画面操作だけの開発だとクラウドサービスのアップデート等でUIが変更になるとロボットが止まってしまって改修に時間がかかってしまう、、、というケースも少なくないと思います。
そういった状況を解決するためにAPIを利用するという方法があります。
ただ、非エンジニアの方の中には「APIって高度なイメージがあって難しそう」「ステップの操作でも実行できるから充分」と思う方もいらっしゃると思います。(かくゆう私もそう思っていた時期がありました)
そのような方に向けて弊社で利用しているAPIとその使い方について紹介したいと思います。

:::note warn
本記事はサードパーティーのツールを利用するため、動作を保証するものではございません。
APIを利用するための参考としてお考え下さい。
:::


## 事前準備
### Kintoneの設定
1. [APIトークン](https://jp.cybozu.help/k/ja/user/app_settings/api_token.html)を生成
1. [フィールドコード](https://jp.cybozu.help/k/ja/user/app_settings/form/autocalc/fieldcode.html)を分かりやすい名称に変更

※詳しくは[kintone API ドキュメント](https://cybozu.dev/ja/kintone/docs/)や[kintone ヘルプ](https://jp.cybozu.help/k/ja/)を参照してください。

### 利用バージョン
本記事で利用する各システムの情報は下記になります。
| 対象システム | 利用バージョン |
|:-----------|:-----------|
| BizRobo! | 11.3.0.2 |
| Kintone | 2023/12/14時点 |

## ロボット作成
### ゴール
クエリで条件を指定してKintoneアプリから複数のレコードを取得します。
取得したレコードのフィールドの値を変更して更新を行います。
値の変更を行うフォームは「要件」と「修正日」です。

ロボットの実行前後によるKintoneレコードの状態は以下になります。
|実行前|実行後|
|---|---|
|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570885/49b89da1-984b-3f67-b592-eb8ac43808dd.png)|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570885/6329607b-f920-0f80-f5ec-1ca7356d5b37.png)|


### 手順
APIで特定のアプリからレコード情報を取得します。
その情報からレコード番号を抽出し、更新したいフィールドコードの値を設定しAPIで情報の更新を行います。

BizRobo!では以下のステップにて実現します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570885/ec223727-ae4a-c66e-3c4c-f3f81fc32418.png)
左から順に①～⑤の手順で説明をしていきます。

#### ①REST Webサービス呼出（Call REST Web Service）
Kintoneアプリから複数のレコードを取得するためにAPIを利用します。
アクションを選択からREST Webサービス呼出を選びます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570885/4dc5bab6-c767-6c31-4f00-069a82eeebd3.png)

以下プロパティの指定です。

|プロパティ|設定値|
|----|----|
|URL|https://sample.cybozu.com/k/v1/records.json<br>(環境に応じて「sample」を書き換えてください)|
|リクエスト|GET|
|パラメータ|app = "アプリID"<br>query = (レコードの条件を指定するクエリ)|
|ヘッダー|X-Cybozu-API-Token: API_TOKEN<br>(環境に応じて「API_TOKEN」を書き換えてください)|

他はデフォルト値です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570885/4ba07237-5efb-b9a6-e834-90d8c5580476.png)

#### ②JSON形式表示（View as JSON）
アプリケーションエリアを右クリックして、開く（読み取り専用）を選択すると、ステップが追加されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570885/352fce34-06f5-1c17-ac4d-ecb2b3b9993c.png)

#### ③JSONアイテム繰り返し（For Each Item）
+アイコンをクリックして{}波括弧を開きます。recordsの上にカーソルを移動して右クリック、ループ>アイテムを選択すると、ステップが追加されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570885/e6caae90-f7eb-2969-2790-5bfc16e13e21.png)

#### ④JSON抽出（Extract レコード番号）
青枠のレコード番号のvalueの上にカーソルを移動して右クリック、抽出>テキスト>新しいシンプル タイプの変数>Short Textを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570885/050fa87a-4803-b2d6-315c-ad0902b2e2bb.png)
名前にレコード番号と入力してOKボタンをクリックします。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570885/cf704eef-74c8-30a9-027f-4f9acb761b5c.png" width="400px">

#### ⑤REST Webサービス呼出（Call REST Web Service）
レコード番号を指定して、1件のレコードを更新します。
アクションを選択からREST Webサービス呼出を選びます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570885/4dc5bab6-c767-6c31-4f00-069a82eeebd3.png)
以下プロパティの指定です。

|プロパティ|設定値|
|---|---|
|URL|https://sample.cybozu.com/k/v1/records.json<br>(環境に応じて「sample」を書き換えてください)|
|リクエスト|PUT<br>ローボディを指定|
|リクエストボディ|アプリIDとIDと更新したいフィールドを指定します。<br>(JSON形式で記述します。[公式サイト](https://cybozu.dev/ja/kintone/docs/rest-api/overview/kintone-rest-api-overview/))|
|コンテンツ タイプ|application/json|
|ヘッダー|X-Cybozu-API-Token: API_TOKEN<br>(環境に応じて「API_TOKEN」を書き換えてください)|

他はデフォルト値です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570885/5da7bb55-1ea3-33e4-1d3c-260a6679943d.png)


::: note 
参考までにリクエストボディのコードを記述します。

```json
>>{
  "app": 2344,
  "id": <<+レコード番号+>>,
  "record": {
    "要件": {
      "value": "更新しました!"
    },
    "修正日": {
      "value": "<<+date()+>>T<<+time(now())+>>+09:00"
    }
  }
}<<
```

:::

以上でロボットの作成は完了になります。

# まとめ
今回はKintoneのREST APIを利用してアプリからレコードを取得し、情報の更新を行ってみました。
APIを利用するとロボットの構築の幅が広がり、メンテナンス性も向上できると思います。
APIを利用したロボットの開発のための一助となれば幸いです。

RPAテクノロジーズでは、Kintoneを操作するコネクターをリリースしております。
より簡単に設定ができますのでぜひご利用ください。
利用する場合は[こちら](https://robot-hub.bizrobo.com/products/view/5157746f4e476331526c686d57467059626b464763477435575459765a6d3154556e647353445a6f5632646d4d577444526d633950513d3d)