kintone café 福岡 vol.2(kintone rest api・excel連携)

50
kintone Café 福岡 Vol.2 2014年7月11日 kintone公認エバンジェリスト 山下 竜 #kintonecafe Twitter: @yamaryu0508 FB: https://www.facebook.com/ryu.yamashita.3 Blog: http://yamaryu0508.hatenablog.com/

Upload: ryu-yamashita

Post on 21-Jun-2015

2.051 views

Category:

Software


9 download

DESCRIPTION

「kintone Café 福岡 Vol.2」で利用したスライドです。  ・kintoneの概要(振り返り)  ・「kintone REST APIs」について(予備知識)  ・Excel連携(イベントプロージャによるkintoneレコードルックアップ)の事例・デモ 関連記事 http://yamaryu0508.hatenablog.com/entry/2014/07/16/094724

TRANSCRIPT

Page 1: kintone Café 福岡 Vol.2(kintone REST API・Excel連携)

kintone Café 福岡 Vol.2

2014年7月11日 kintone公認エバンジェリスト 山下 竜

#kintonecafe

Twitter: @yamaryu0508 FB: https://www.facebook.com/ryu.yamashita.3 Blog: http://yamaryu0508.hatenablog.com/

Page 2: kintone Café 福岡 Vol.2(kintone REST API・Excel連携)

• kintoneの概要(振り返り)

• 「kintone REST API」について(予備知識)

• Excel連携事例(デモ・ハンズオン)

• 今始めると美味しいkintoneビジネスについて(サイボウズ 佐藤さま)

• 今月のアップデートと進化するkintoneカスタマイズデモ(サイボウズ 後迫さま)

• Tipsの現状と未来(サイボウズ 北川さま)

• サイボウズでのkintoneの使われ方(サイボウズ 札辻さま)

Menu for today

※太字:私のパート

Page 3: kintone Café 福岡 Vol.2(kintone REST API・Excel連携)

kintoneの概要

Page 4: kintone Café 福岡 Vol.2(kintone REST API・Excel連携)

•コンセプト

•「ファストシステム」

•「3分で業務改善アプリ」

•構成要素

•データ

•ワークフロー

•コミュニケーション

kintone基本概要

「サイボウズプロダクト=チームを強くするツール」の中でも汎用性と専門性を行き来しながら、様々な 業務シーンで活用出来るクラウドデータベース(WebDB)サービス

(出典:「kintone公式サイト」)

Page 5: kintone Café 福岡 Vol.2(kintone REST API・Excel連携)

• REST API

• レコードやスペースの操作(登録・更新・削除等)、バルクAPI

• ユーザ・組織の操作

• JavaScript/CSSカスタマイズ

• 各種イベントハンドル、情報取得

• プロキシによる外部API連携

• URL指定によるライブラリの読み込み(HTTPS対応)

kintoneカスタマイズ機能(スタンダードコース)

データ レコード スペース ユーザ

UI

基幹システム Excel

他のクラウドREST API

kintone.proxy

Page 6: kintone Café 福岡 Vol.2(kintone REST API・Excel連携)

「kintone REST API」 について

(参考:「cybozu.com developer network > kintone API」)

Page 7: kintone Café 福岡 Vol.2(kintone REST API・Excel連携)

• kintoneアプリのレコードやスペースの操作

kintone REST APIの概要

kintone REST APIの用途

プロトコル

• HTTPSプロトコル

フォーマット

• JSON

文字コード

• UTF-8

認証認証

• ユーザ認証(パスワード、APIトークン)

• Basic認証

その他

• 同時処理レコード数100件

• API同時アクセス10件

Page 8: kintone Café 福岡 Vol.2(kintone REST API・Excel連携)

• https://{subdomain}.cybozu.com/k/v1/{command}.json【通常】

• https://{subdomain}.cybozu.com/k/guest/{space id}/v1/{command}.json【ゲストスペース】

kintone REST APIの概要(続き)URI

リクエストヘッダ

• Host: {subdomain}.cybozu.com:443

• Content-Type:application/json

• 認証情報

Page 9: kintone Café 福岡 Vol.2(kintone REST API・Excel連携)

リクエスト例(GET/records)

QWRtaW5pc3RyYXRvcjpwYXNzd29y

GETメソッドではContent-Typeは不要

Basic認証を使用していない場合にも空欄で入れておく分には問題ない様子

https://{subdomain}.cybozu.com/k/v1/records.json?app={app id}

 【認証方法の記述】 X-Cybozu-Authorization : {BASE64-encoded "id:password"} Authorization : Basic {BASE64-encoded "id:password"} ※例の{base64-encoded "id:password"}はidをAdministrator、passwordをpasswordとした場合の値としています

HTTPクライアント設定画面

※以降、Google Chromeのアドオン「POSTMAN」を利用しています

Page 10: kintone Café 福岡 Vol.2(kintone REST API・Excel連携)

リクエスト例(GET/records:続き)リクエスト詳細

https://{subdomain}.cybozu.com/k/v1/records.json?app={app id}

QWRtaW5pc3RyYXRvcjpwYXNzd29yZA==

{subdomain}.cybozu.com

{app id}

Page 11: kintone Café 福岡 Vol.2(kintone REST API・Excel連携)

リクエスト例(GET/records:続き)レスポンス

"{field code}": { "type" : "{field type}", "value" : "{value}" }

各フィールドはこのように記述されます ・複数値を取りうる{value}は配列になります ・POST/PUTの際はtypeが不要です

フィールドの記述

Page 12: kintone Café 福岡 Vol.2(kintone REST API・Excel連携)

リクエスト例(POST/records)

HTTPクライアント設定画面

QWRtaW5pc3RyYXRvcjpwYXNzd29y

https://{subdomain}.cybozu.com/k/v1/records.json

Page 13: kintone Café 福岡 Vol.2(kintone REST API・Excel連携)

リクエスト例(POST/records:続き)リクエスト詳細

POST/PUTメソッドではContent-Lengthが必要(自動補完してくれない言語・ライブラリを利用する場合は要注意)

https://{subdomain}.cybozu.com/k/v1/records.json

QWRtaW5pc3RyYXRvcjpwYXNzd29yZA==

{subdomain}.cybozu.com

Page 14: kintone Café 福岡 Vol.2(kintone REST API・Excel連携)

リクエスト例(POST/records:続き)

レスポンス

【POSTのレスポンス】 ・ids(レコードID)とrevisions(リビジョン) 【PUTのレスポンス】 ・revisions(リビジョン)

Page 15: kintone Café 福岡 Vol.2(kintone REST API・Excel連携)

• まずはエラーメッセージからヘッダかボディかを判別するところからだと思います

• ボディっぽい時には「ブラウザHTTPクライアント」に手組みでJSON入力していきながら試行錯誤となります

• リクエストヘッダ・ボディを可視化するのも有効に感じます

• 面倒ですが「ブラウザHTTPクライアント」と「kintone JavaScript API」と簡単なスクリプト言語の3者意見で絞り込めることもあります

kintone REST API エラー潰し

Page 16: kintone Café 福岡 Vol.2(kintone REST API・Excel連携)

Excel連携事例

Page 17: kintone Café 福岡 Vol.2(kintone REST API・Excel連携)

Excelとkintoneを共存させるメリット

【Excel】 ・導入企業が多いオフィスツール ・ユーザーも扱いに馴染みがある

【kintone】 ・とにかく共有に強い - テキスト、ファイル - 人と人、人とモノ、社内外等 ・場所やデバイスを選ばない

Page 18: kintone Café 福岡 Vol.2(kintone REST API・Excel連携)

Excelとkintoneを共存させるメリット(続き)

ありがちな課題/得失 kintone Excel

同じようなデータを複数のExcelで重複管理されている。データも散在状態になっている

○ (共有)

× (重複・散在)

データを集中管理し、安全に同時入力したい ○ (同時入力可)

× (同時入力不可)

ユーザーがExcelに慣れているとツールの変更に協力を得づらいことがある ー ○

(馴染み)既存の決まった帳票フォーマットがあり、ExcelやWordで存在する ー ○

(馴染み)Excel導入済み企業が多く、kintoneの共有機能をネイティブアプリ(実行環境の追加等が不要)として使える

○ (共有)

○ (裾野・馴染み)

Page 19: kintone Café 福岡 Vol.2(kintone REST API・Excel連携)

今回のアプリ作成シナリオ(物品貸出)

物品確認 書類作成

②発送準備 ③物品情報 ステータス変更

①貸出依頼 ④発送

⑥返送⑦物品返却⑧物品一覧 ステータス変更

依頼

⑤貸出(申込書・貸出票)

• 負担無き管理

• 手間無き書類作成

効率化のポイント(写真等含めてkintoneで

一覧を管理中)

Page 20: kintone Café 福岡 Vol.2(kintone REST API・Excel連携)

業務フローの課題

物品確認 書類作成

②発送準備 ③物品情報 ステータス変更

①貸出依頼 ④発送

⑥返送⑦物品返却⑧物品一覧 ステータス変更

依頼

⑤貸出(申込書・貸出票)

ステータスを1つ1つ変更するの面倒

貸出管理アプリを帳票出力する方法が考えれるが、Excelに慣れている

(写真等含めてkintoneで 一覧を管理中)

Page 21: kintone Café 福岡 Vol.2(kintone REST API・Excel連携)

課題解決

物品確認 書類作成

②発送準備 ③物品情報 ステータス変更

①貸出依頼 ④発送

⑥返送⑦物品返却⑧物品一覧 ステータス変更

依頼

⑤貸出(申込書・貸出票)

赤字部分を 『Excel⇔kintone連携』

で負担軽減!

(写真等含めてkintoneで 一覧を管理中)

Page 22: kintone Café 福岡 Vol.2(kintone REST API・Excel連携)

デモ

※Windows8.1(64bit)、Excel2013(64bit)の環境で動作確認しています

Page 23: kintone Café 福岡 Vol.2(kintone REST API・Excel連携)

書類作成とステータス変更するExcelシート

物品情報 ステータス変更物品情報ルックアップ

顧客情報ルックアップ

Page 24: kintone Café 福岡 Vol.2(kintone REST API・Excel連携)

書類作成とステータス変更するExcelシート(続き)顧客情報

①会社コードを入力

②kintone「顧客情報」アプリからルックアップ

顧客情報のルックアップ

Page 25: kintone Café 福岡 Vol.2(kintone REST API・Excel連携)

書類作成とステータス変更するExcelシート(続き)物品情報

①管理番号を入力

物品情報のルックアップ

②kintone「物品一覧」アプリからルックアップ

Page 26: kintone Café 福岡 Vol.2(kintone REST API・Excel連携)

書類作成とステータス変更するExcelシート(続き)物品情報物品情報のステータス変更

ボタンで対象物品のステータスを変更

Page 27: kintone Café 福岡 Vol.2(kintone REST API・Excel連携)

アプリの関係性

ルックアップ

顧客情報 物品管理

ルックアップ

ステータス変更

Page 28: kintone Café 福岡 Vol.2(kintone REST API・Excel連携)

サンプルダウンロード①「https://github.com/yamaryu0508/kintone-Cafe-Fukuoka-2」にアクセス

②「Download ZIP」をクリックして、 ファイル一式をダウンロード

Page 29: kintone Café 福岡 Vol.2(kintone REST API・Excel連携)

ルックアップ元のkintoneアプリ

フォーム項目 フィールドの種類 フィールドコード

会社名 文字列(1行) companyName

会社コード 文字列(1行) (重複禁止) companyCode

郵便番号 文字列(1行) zipCode

担当者 文字列(1行) inCharge

電話番号 文字列(1行) tel

メール 文字列(1行) mail

フォーム項目 フィールドの種類 フィールドコード

物品種別 ドロップダウン type

メーカ ドロップダウン maker

型式 文字列(1行) model

レコード番号 - recordNum

管理番号 文字列(1行) (重複禁止) id

稼働区分 ドロップダウン operationStatus

貸出・提供先 文字列(1行) ownerLocation

顧客情報 物品管理

※Vol.1で作った「顧客情報」アプリの修正で対応可能です

Page 30: kintone Café 福岡 Vol.2(kintone REST API・Excel連携)

• kintone REST APIを利用した基本的なレコード操作(Excel-VBAではMS XML)

• Excel-VBAのイベントプロージャ(セル値変更)でExcelからkintoneのレコードをルックアップ

• Excel-VBAでJSONパースにJSON-Libを利用(64bit版で廃止になったScriptControlの代用)

• 運用に耐えられるアプリらしいExcel

• ロックで入力セルを限定することで、ユーザーに対して入力箇所をガイドし、不用意なシートの変更をさせない

• オフライン時等のエラー処理

• 直近のステータス変更チェック(今回は運用フローでフォロー)

ポイントまとめ

Page 31: kintone Café 福岡 Vol.2(kintone REST API・Excel連携)

今回のExcel-VBAの部分説明

Module1

ThisWorkbook

今回はJSONパース用に「JSONLib」をインポートします(Tipsを参考にします)

VB画面

イベントプロージャの記述

標準的な記述

Page 32: kintone Café 福岡 Vol.2(kintone REST API・Excel連携)

今回のExcel-VBAの部分説明ライブラリ読み込み (環境によっては不要)

①「ツール」-「参照設定」をクリック

②「Microsoft XML v*」と「Microsoft Scripting Runtime」にチェック(*は環境によって異なるバージョン番号で、画面中は6.0)

③「OK」をクリック

Page 33: kintone Café 福岡 Vol.2(kintone REST API・Excel連携)

今回のExcel-VBAの部分説明(続き)IsOnline()関数@Module1

Modulue1冒頭でライブラリ等の準備

Module1後半でインターネット接続状況を確認する関数を定義

Page 34: kintone Café 福岡 Vol.2(kintone REST API・Excel連携)

今回のExcel-VBAの部分説明(続き)Book全体の定数の宣言@Module1

「Public」でThisWorkbook側でも参照可能になります

[]で括ったパラメータは適宜置き替えください

Page 35: kintone Café 福岡 Vol.2(kintone REST API・Excel連携)

今回のExcel-VBAの部分説明(続き)マクロ@Module1

ApplyRental()を登録

オフライン時は終了

貸出/返却に対応する2つのマクロを記述します。実態はchangeStatus()関数です。

StopRental()を登録

Page 36: kintone Café 福岡 Vol.2(kintone REST API・Excel連携)

• 引数・戻り値

• 引数:貸出状態(貸出中/未使用)[String]

• 戻り値:なし

• 説明

• 貸出中/未使用(kintone側のドロップダウンフィールドに対応)のいずれかを引数として渡し、PUT/recordsでレコードの状態を変更する

今回のExcel-VBAの部分説明(続き)changeStatus()関数@Module1の概要

Page 37: kintone Café 福岡 Vol.2(kintone REST API・Excel連携)

今回のExcel-VBAの部分説明(続き)changeStatus()関数@Module1のコード

②お客さま名と貸出状態を更新

・・・

①PUT/recordsを行うためのJSON文字列の作成

Page 38: kintone Café 福岡 Vol.2(kintone REST API・Excel連携)

今回のExcel-VBA部分説明(続き)changeStatus()関数@Module1のコード

④レスポンスに応じて、メッセージボックスを表示する

③HTTPリクエストを行う (requestHttp()関数については後述)

Page 39: kintone Café 福岡 Vol.2(kintone REST API・Excel連携)

• 引数・戻り値

• 引数:JSON文字列[String]

• 戻り値:Excelオブジェクト[Object]

• 説明

• JSONLibを用いたJOSNパーサ

今回のExcel-VBAの部分説明(続き)parseJSON()関数@Module1の概要

Page 40: kintone Café 福岡 Vol.2(kintone REST API・Excel連携)

• 引数・戻り値

• 引数:クエリ文字列[String]

• 戻り値:URIエンコード文字列[String]

• 説明

• URIエンコードを行う

今回のExcel-VBAの部分説明(続き)URI_Encode()関数@Module1の概要

Page 41: kintone Café 福岡 Vol.2(kintone REST API・Excel連携)

parseJON()関数@Module1のコード

今回のExcel-VBAの部分説明(続き)

URI_Encode()関数@Module1のコード

(引用:「cybozu.com developer network > Tips > kintone × Excel」)

Page 42: kintone Café 福岡 Vol.2(kintone REST API・Excel連携)

• 引数・戻り値

• 引数:メソッド[String]、URI[String]、ヘッダ[Dictionary]、ボディ[Variant]

• 戻り値:Excelオブジェクト[Object]

• 説明

• HTTPリクエストを行う

今回のExcel-VBAのポイント解説(続き)requestHttp()関数@Module1の概要

Page 43: kintone Café 福岡 Vol.2(kintone REST API・Excel連携)

requestHttp()関数@Module1のコード

今回のExcel-VBAの部分説明(続き)

下記を引数として渡し、レスポンスをObjectとして返す関数  ・メソッド(GET/POST/PUT等)[String]  ・リクエストURI[String]  ・リクエストヘッダ[Dictionary]  ・リクエストボディ[Variant]

Page 44: kintone Café 福岡 Vol.2(kintone REST API・Excel連携)

ShowErrMsg()関数@Module1のコード

今回のExcel-VBAの部分説明(続き)

エラーの種類に応じてメッセージを表示

Page 45: kintone Café 福岡 Vol.2(kintone REST API・Excel連携)

今回のExcel-VBAの部分説明(続き)イベントプロージャ@ThisWorkbook

シート変更イベントプロージャで、Excel中の値が変更された際に 発動する処理を記述していく

オフライン時は終了

Page 46: kintone Café 福岡 Vol.2(kintone REST API・Excel連携)

今回のExcel-VBAの部分説明(続き)管理番号によるルックアップ@ThisWorkbook

①ルックアップパラメータが範囲(単一セルでなく複数セル)で渡されることを想定して、イベントの対象ブロックを限定する

Page 47: kintone Café 福岡 Vol.2(kintone REST API・Excel連携)

今回のExcel-VBAの部分説明(続き)管理番号によるルックアップ@ThisWorkbook

②ルックアップパラメータが入力されたら、kintoneからGET/recordsでレコードを取得し、Excelのセルにルックアップ値をセットする

③レスポンスが空の時は終了

Page 48: kintone Café 福岡 Vol.2(kintone REST API・Excel連携)

デモに関連する内容は以上です

Page 49: kintone Café 福岡 Vol.2(kintone REST API・Excel連携)

• 開発コミュニティサイト「cybozu.com developer network」[https://cybozudev.zendesk.com/hc/ja]

• コミュニティ(質問等)、リファレンス、Tips、サンプル、開発者ライセンス申込

• 「kintone REST APIs」[https://cybozudev.zendesk.com/hc/ja/articles/200812990-kintone-REST-APIs]

• kintone REST APIsの公式情報(cybozu.com dev. nw.内)

• 「cybozu.com developer network > Tips > kintone × Excel」[https://cybozudev.zendesk.com/hc/ja/sections/200377340-kintone-Excel]

• Excel連携のTips(cybozu.com dev. nw.内)

参考情報

Page 50: kintone Café 福岡 Vol.2(kintone REST API・Excel連携)

ご清聴ありがとうございました。