(BizRobo)ロボットからAPIでKintoneアプリへレコード登録してみた
はじめに
今回は、ロボットを使い、Kintoneで構築したアプリに対し、
Kintoneアプリの画面上の操作を行うことなくレコード登録をしてみようという記事です。
Kintoneというのは業務アプリをノンプログラミングで直感的に構築できる便利なクラウドサービスです。
詳しくはサイボウズさんのページでどうぞ。
はじめての方へ。キントーンとは?
https://kintone.cybozu.co.jp/what_is_kintone/
Kintoneでレコードを登録するとき、人間がやるときはこういう画面で1つ1つ手で入力していきます。
もちろん普通に人間が使うだけでも便利なツールなのですが、Webページや他のシステム等から転記したい、といったとき、単純な繰り返し作業になることも多いので、こういうことにもRPAを使うと便利なわけです。
画面はテンプレートで用意されている問診表アプリですが、ここにもRPAは利用できて、例えば病院等で手で患者さんが書かれた問診票を全部人間が読んで手で転記することもできますが、これをAI-OCRで読み取ってデータ化したのをRPAで転記するという利用法もあるわけです。
決してサイボウズさんの回し者ではありませんが、様々なツールを組み合わせると、その効果はさらに広がるという一例でした。
今回はその転記作業について、ロボットでWeb画面上の操作をして転記するのではなく、APIを使ってやってみます。
APIってなんぞや?って方はこちらご参考ください。
「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典
https://wa3.i-3-i.info/word12428.html
つまり、Kintoneには外部のプログラムから作業を依頼する窓口が用意されているので、ロボットからこの値をレコードとして登録してください、という作業をお願いすることになります。
Kintoneの設定
まずKintoneでアプリの設定をしないことには始まりません。
前提として最低でもアプリの管理権限を持つユーザーをご用意ください。
これがないと後々アプリの編集画面からロボットで指定するフィールドコードの確認ができません。
フィールドコードとは-設定手順
https://jp.cybozu.help/k/ja/id/040504.html#autocalc_fieldcode_30
とは言っても、基本的に設定は不要です。
APIを投げるときのKintoneへの認証方法をユーザーのパスワード認証にするか否かで作業有無が変わります。
アプリからトークン発行してトークンで認証する場合のみここからの設定が必要です。
トークン発行する場合、場合によってはアプリ管理権限ではなく、Kintoneのシステム管理権限が必要になります。
ちなみにこの記事ではパスワード認証とトークン認証両方やりますよ。
kintone REST APIの共通仕様-ユーザー認証
https://developer.cybozu.io/hc/ja/articles/201941754#step7
ユーザー認証については上記ページに書かれている通りなのですが、トークン認証を使う場合には、APIトークンを発行する必要があります。
APIトークンを生成する
https://jp.cybozu.help/k/ja/id/040471.html
サイボウズさんのヘルプが分かりやすいので、発行手順については上記ページをご覧ください。
ロボットの設定
まず、ロボットでAPIを利用する際は「REST Web サービス呼出(Call REST Web Service)」というアクションステップを利用します。
参考ナレッジは以下です。
「REST Web サービス呼出(Call REST Web Service) 」ステップ
https://knowledge.bizrobo.com/hc/ja/articles/360053253091
フル活用するにはある程度知識が必要になりますが、初心者の方はBizRoboポータルで公開されているBizRobo!CAMPUS!!の第6回API編のアーカイブ動画をご覧になると参考になると思います。
開発者向けユーザー会BizRobo! CAMPUS!!
※要ログイン
ここからはアクションの各設定部ごとに見出しを分けていきます。
URL
まず、どこに対してAPIリクエストするかを決める必要があります。
以下ページのURIの項目にあるように指定します。
レコードの登録(POST)
https://developer.cybozu.io/hc/ja/articles/202166160
https://xxxxx.cybozu.com/k/v1/record.json
こんな感じになります。
※実際のURLは公開できないのでxxxxxに置き換えています。
ここはシンプルですね。
リクエスト
次はリクエストの項目です。
ここはかなり肝になる部分です。
まず、初期で「GET」になっている項目を「POST」にします。
主にGETはデータの問い合わせをするもので、POSTは更新をするものになりますが、今回はレコード登録という更新作業をするのでPOSTにします。
次に何をリクエストするかを決めます。
「パラメータで指定」から「ローボディを指定」に変更します。
そうすると値を指定できますので、以下ページのリクエストボディの構造に書かれているように入力します。
ちなみに変数やコンバーターも使用できます。
※今回はテストなのでそのままテキスト入力します。
レコードの登録(POST)https://developer.cybozu.io/hc/ja/articles/202166160
こんな感じです。
{
"app": (アプリのID),
"record": {
"(フィールドコード)": {
"value": "(フィールド値)"
}
}
}
テーブル等入力したい値によって諸々変わるものもあるので詳細は先ほどのページを参考にしてください。
それぞれどこから持ってくるかというと、
まず、アプリのIDはアプリにアクセスするときのURLの赤枠の箇所の数字です。
次にフィールドコードですが、上の方にも書いたこちらの手順で確認できます。
フィールドコードとは-設定手順
https://jp.cybozu.help/k/ja/id/040504.html#autocalc_fieldcode_30
テストで作ったアプリだとここです。
ちなみにこのフィールドコードは好きな値に変更できますので、何の値なのか分かりやすいものに変えるとより良いと思います。
次にフィールド値は実際に登録したい値を設定します。
今回は「テスト」としておきます。
これらを合わせると以下のようなリクエストボディになります。
{
"app": 33,
"record": {
"文字列__1行_": {
"value": "テスト"
}
}
}
コンテンツタイプ
コンテンツタイプは「application/json」を選択します。
先ほどのレコードの登録(POST)のページにもJSONを使用するためにそうするように書かれています。
エンコード
今回はUnicode(UTF-8)のままで結構です。
出力値
変数に抽出したい場合は変数を指定しますが、今回は特に抽出せず「ブラウザにロード」にします。
オプション
はい、ここは重要です。
ここの設定でKintoneへの認証をかけます。
公式のページとしてはこちらになります。
kintone REST APIの共通仕様-ユーザー認証
https://developer.cybozu.io/hc/ja/articles/201941754#step7
まず、いずれにしろ変数で指定する必要があるので何かしらテキスト変数を用意します。
そして「送信する追加ヘッダー」を「変数から」に変更します。
認証方法は2通りありますので、それぞれ見ていきましょう。
パスワード認証
これは分かりやすい認証方法だと思いますが、KintoneのユーザーのIDとパスワードを使って認証をする方式です。
書き込みを行うので書き込み権限のあるユーザーが必要になります。
ここで必要となる値は定型文となる「X-Cybozu-Authorization:」と「ログイン名:パスワード」になります。
しかし、この2つを単純に組み合わせて入れればいいというわけではなく、ユーザー名とパスワードについてはBASE64エンコードしたものを値に指定する必要があります。
ということで、変数の割当ステップのコンバータを使用して変換してみましょう。
今回はログイン名とパスワードをあらかじめ変数に入れておいたので、エクスプレッションで結合させ、それをバイナリ変換後にエンコードをかけ、定型文の部分と結合しました。
BizRoboでエンコードをする際はバイナリである必要があるので、テキストをバイナリに変換を使って変換してからエンコードを行っています。
これを変数に格納してこのように変数を指定することで、パスワード認証用の追加ヘッダーの設定ができます。
これでロボット実行すると、Kintone上にレコード登録されます。
トークン認証
次にトークン認証です。
これはあらかじめKintoneアプリからトークン発行をしておく必要があります。
生成方法は以下に記載されている通りです。
APIトークンを生成する
https://jp.cybozu.help/k/ja/id/040471.html
設定するアクセス権限としては、今回はレコード登録なので、レコード追加権限が必要となります。
トークンを発行したら、トークンをメモ帳等にコピーしておき、
必ず「保存」をクリックして保存し、
その後「アプリを更新」をクリックして更新してください。
ここがグレーではなく青くなっている場合には、更新できていません。
保存とアプリ更新を忘れるとこの後必ずエラーになりますのでご注意ください。
もし実行時にエラーコード「520」が出たら、これを疑ってみてください。
次にロボットへの設定値ですが、
定型文となる「X-Cybozu-API-Token:」と先ほどの「トークン値」になります。
X-Cybozu-API-Token:xxxxxxxxxxxxxxxx
こういう形式です。
これを変数に入れて指定します。
変数名は何でもいいですがこんな感じですね。
これで実行するとまた同じくレコード登録されます。
まとめ
今回はリクエストボディをそのままテキスト値で指定しましたが、変数を利用してコンバータ機能でテキストを変数値に置き換えていけば、動的なリクエストが可能です。
以前以下の記事で紹介したMCのログデータベースからエラーログを抽出するロボットを組み合わせると、エラーログをKintoneにAPIで登録することもできます。
(BizRobo)MC上でスケジュール実行したロボットエラー情報をログデータベースから抽出する方法
https://note.com/yg_1004/n/nb58f1e3b73d7
KintoneとBizRoboに限らず、様々なツール同士をAPIでつなぐことでまだ見ぬ便利な使い方ができます。
参考リンクまとめ
Kintone
はじめての方へ。キントーンとは?
https://kintone.cybozu.co.jp/what_is_kintone/
kintone REST APIの共通仕様-ユーザー認証
https://developer.cybozu.io/hc/ja/articles/201941754#step7
レコードの登録(POST)
https://developer.cybozu.io/hc/ja/articles/202166160
フィールドコードとは-設定手順
https://jp.cybozu.help/k/ja/id/040504.html#autocalc_fieldcode_30
APIトークンを生成する
https://jp.cybozu.help/k/ja/id/040471.html
BizRobo
「REST Web サービス呼出(Call REST Web Service) 」ステップ
https://knowledge.bizrobo.com/hc/ja/articles/360053253091
開発者向けユーザー会BizRobo! CAMPUS!!
※要ログイン
(BizRobo)MC上でスケジュール実行したロボットエラー情報をログデータベースから抽出する方法
https://note.com/yg_1004/n/nb58f1e3b73d7
その他
「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典
https://wa3.i-3-i.info/word12428.html