カテゴリー内の他の記事

第1回 Excelとkintoneを連携させよう

フォローする

(著者:株式会社ジョイゾー 四宮靖隆

はじめに

はじめまして!この度、kintoneエバンジェリストに指名いただきました株式会社ジョイゾーの四宮と申します。
弊社ではkintoneを便利に使う方法を紹介するブログ」
というkintone専門のブログを運用しており、週一のペースでkintoneに関する操作方法や技術情報を公開していますが、こちらのdeveloper networkでもTipsを紹介していきたいと思いますのでよろしくお願いします。

記念すべき1回目のネタですが、弊社でもいくつか実績があるExcelkintoneの連携方法について書かせて頂きます。

お客様から「kintoneの競合製品って何ですか?」と聞かれると「Excelですかねー」と答える事がありますが、これは半分正解で半分間違えです。

確かに1つのExcelファイルで顧客情報の管理をしていて、それを複数の営業マンで使っているといった場合は、kintoneに移行する事で業務効率が上がります。

一方、kintoneで情報共有はやりやすくなったけど、今まで使っていた見積書や請求書はそのまま使いたいというケースもあります。kintoneは現時点ではどうしても帳票機能が弱いため、kintone単体で見積書や請求書を発行するのは難しいです。

そういう時は、kintoneExcelのイイトコどりをして「情報共有やデータの一元管理はkintone、帳票印刷はExcel」とすればあっさり問題解決です!

kintoneのREST APIを使えば、javaやPHP、.NETなどプログラム言語に縛られずにデータ連携ができます。
Excelも例外ではなく、Excelに搭載されているVBAを利用することでkintoneとのデータ連携ができてしまいます。

今回は、第1回と第2回にわたってExcel VBAからkintoneAPIを使ってデータを検索し、検索した値をセルに入れるサンプルをご紹介します。
※Excel
のバージョンは2007以降で動作確認をしています。

事前準備をする

まず、事前準備として、REST APIが実行できるようにVBAの参照設定に「Microsoft XML,v?.?」というライブラリを追加します。
Excel
Visual Basic Editorを開き、「ツール」から「参照設定」を選択して、「Microsoft XML,v?.?」にチェックをつけて、「OK」を押して下さい。

※キャプチャではv6.0を選択しています。

kintoneにレコード取得用APIをコールする

REST APIはHTTP(HTTPS)通信ですので、XMLHTTPオブジェクトを使いますが、その前にアクセスするURLを作成します。

今回はデータを検索してレコードを取得しますので「レコードの一括取得(クエリで条件を指定)」にあるように

https://(サブドメイン名).cybozu.com/k/v1/records.json

というURLを指定します。
さらに records.json の後に検索対象のアプリIDを「app=<アプリID>」という形式でパラメータとして渡します。
アプリIDはkintoneで該当のアプリを開いた際に表示されるURLの /k/ の後に表示されている数字になりますので、URLから確認するのが早いです。

画像の例では43がアプリIDとなりますので、アクセスURL

https://(サブドメイン名).cybozu.com/k/v1/records.json?&app=43

となります。

続いて検索条件を指定します。検索条件はSQL文のような記述が可能で、URLにパラメータとして渡します。
例えば、「顧客名(フィールドコード:customer)がジョイゾーのデータを検索する」という場合は、
customer = “
ジョイゾー
という記述方法になります。

検索条件はURLエンコードをしなければいけませんので、VBAでは以下の様なエンコード用の関数を作って実装します。

VBAでURLエンコードをする方法はググるとScriptControlを使ってjavascriptの関数を呼ぶ方法を紹介しているサイトがいくつか見つかりましが、ScriptControlが64bit版Excelでは使えないため、上記の方法をオススメします。(これもググるとでてきます) エンコード用の関数を作ったら検索条件をエンコードしてアクセスするURLを完成させます。

検索条件はパラメータではなくJSON形式でリクエストボディに含めることができるのですが、VBAの仕様なのかHTTPメソッドがGETの場合は、リクエストボディを送ってくれないためVBAでは必ずURLのパラメーターとして指定する必要があります。
URLができたらいよいよkintoneAPIをコールします。

まず、REST通信するためにXMLHTTPオブジェクトを生成します。さらに今回はGETでの接続になりますので、先に作成したURLkintoneGETリクエストを行います。

次にリクエストヘッダーに認証情報等の必要な情報をセットします。

認証情報はログイン認証とベーシック認証がありますが、ベーシック認証は接続先のkintoneでベーシック認証設定をしている時だけ設定すればOKです。

認証情報は「ログイン名:パスワード」という形式の値をBASE64でエンコードする必要があります。
ただ、Excelの関数でBASE64エンコードを行ってくれる関数が無いため、今回は手動でBASE64エンコードした情報をセットします。
※簡単にBASE64エンコードした値を作成してくれるサイトもありますので「BASE64 エンコード」などでググってみてください。

例えば、ログイン名がAdministratorでパスワードがpasswordの場合、「Administrator:password」という値をBASE64エンコードすると「QWRtaW5pc3RyYXRvcjpwYXNzd29yZA==」という値になりますので、これをログイン認証やベーシック認証用ヘッダーにセットします。

あとはkintoneGETリクエストを投げ、レスポンスを受け取ります。

レスポンスをMsgBoxで表示させてみましょう。

レスポンスはJSON形式ですが、この段階ではただの文字列であるため、パースしてオブジェクトとして扱えるようにしてあげます。

こちらは第2回にて解説しますのでお楽しみに!

最後に今回紹介したコードをまとめたものを以下に記しておきます。

このTipsは、2014年4月版で確認したものになります。

第2回 Excelとkintoneを連携させよう>>

記事に関するフィードバック

直接的に記事と関連がないご質問はcybozu developer コミュニティをご活用ください。

ログインしてコメントを残してください。
Powered by Zendesk