cybozu developer network

カテゴリー内の他の記事

ScanSnap × kintone 名刺連携ソリューション

Index

(著者:サイボウズ 藤原、 近本)
(監修:株式会社PFU)

はじめに

株式会社PFUのスキャナ ScanSnap で取り込んだ名刺データを kintone と連携する方法をサンプルと共に紹介します。

概要

ScanSnap 名刺管理ソフトウェアの CardMinder と ScanSnap SDK が用意されています。
これらを利用して kintone のユーザーログイン名の入力とボタンクリックのみで名刺データを kintone の名刺管理アプリに取り込む連携プログラムを作成します。

ScanSnap の詳細はこちら
CardMinder の詳細はこちら 
ScanSnap SDK の詳細はこちら

連携のイメージ

以下の4つのステップで連携します。

  1. ScanSnap で名刺をスキャン
  2. CardMinder を起動
  3. 連携プログラムから kintone へ名刺データを登録
  4. kintone の名刺管理アプリに名刺データが登録されていることを確認

事前準備

デバイスの準備

  • ScanSnap 実機の購入(今回は iX500 を使用)
  • ScanSnap iX500 ドライバダウンロード(こちらから必要なファイルをダウンロード)
  • CardMinder のダウンロードはこちら(※1)
  • ScanSnap SDK のダウンロードはこちら(※1,※2)

注意事項

※1: CardMinder 及び ScanSnap SDK のダウンロードには株式会社PFUの個人情報の利用目的に従い、「ユーザー登録」を行う必要があります。必ず利用規約を確認してください。
※2: ScanSnap SDK に関してお問い合わせがある場合は有償のサポートサービスをご利用ください。

開発環境の準備

 今回のTipsでは Visual Studio 2015 (Visual C#) を使用して開発を行います。

名刺管理アプリの準備

連携先の名刺管理アプリの準備をします。以下のアプリテンプレートを基に、 kintone に名刺管理アプリを作成してください。
※一覧は任意。

ScanSnap_template.zip

フィールドの設定

フィールドタイプ フィールド名 フィールドコード その他
 日付 登録日付 登録日付  
 ユーザー選択 登録者 登録者 必須項目にチェックを入れます。
※連携プログラムで間違ったユーザー名を入力した場合にエラーを出すため。
 文字列(1行) 氏名 氏名  
 文字列(1行) 氏名フリガナ 氏名フリガナ  
 文字列(1行) 会社名 会社名  
 文字列(1行) 会社名フリガナ 会社名フリガナ  
 文字列(1行) 部署名 部署名  
 文字列(1行) 役職名 役職名  
 文字列(1行) 国/地域名 国_地域名  
 文字列(1行) 郵便番号 郵便番号  
 文字列(1行) 住所 住所  
 文字列(1行) 住所(都道府県) 都道府県  
 文字列(1行) 住所(市区町村) 市区町村  
 文字列(1行) 住所(番地以降) 番地以降  
 リンク(電話番号) 携帯電話 携帯電話  
 リンク(電話番号) 電話番号 電話番号  
 リンク(電話番号) FAX番号 FAX番号  
 文字列(1行) URL URL  
 文字列(1行) 電子メール 電子メール  
 文字列(複数行) メモ メモ  
 添付ファイル 名刺画像データ 名刺画像データ  

フィールド配置例

連携プログラムの作成

今回作成する連携プログラムを以下の手順で作成します。

設定ファイルの変更

ScanSnap SDKの以下のディレクトリの ini ファイルをエディターで開きます。(※ini ファイルの配置先は変更になる可能性があります。)

\ScanSnapSDK_V10L33JP\PC\win\ScanSnapSample\ini\CardMinder\CardConnections.ini

以下の通りに設定値を書き換えます。

フレームワークの変更

ScanSnap SDKの以下のディレクトリのソリューションファイルを Visual Studio で開きます。(※ソリューションファイルの配置先は変更になる可能性があります。)

\ScanSnapSDK_V10L33JP\PC\win\ScanSnapSample\src\CardMinder\VC#2005\CardConnections.sln

CardConnections 及び CardSettings プロジェクトファイルの対象のフレームワークを変更します。

  • メニュー[プロジェクト]⇒[プロパティ]を選択。
  • [アプリケーション]を開き、[対象のフレームワーク]を .NET Framework 4.5.2 に変更。

ライブラリの参照

Visual Studio で以下のライブラリの参照を追加します。

  • Microsoft.CSharp.dll
  • System.Net.Http.dll
  • Newtonsoft.dll(Newtonsoft.Json)

Microsoft.CSharp.dll
System.Net.Http.dll
メニュー[プロジェクト] ⇒ [参照の追加] より追加。

Newtonsoft.dll(Newtonsoft.Json)
メニュー[プロジェクト] ⇒[NuGet パッケージ管理]⇒[参照]タブより「Newtonsoft.Json(詳細はこちら)」の最新版をインストール。

処理内容

ソリューションファイル内の以下のファイルに変更を加えます。

  • FormCardConnections.cs
  • FormCardConnections.Designer.cs

FormCardConnections.cs

usingディレクティブに以下を追加します。

名刺データはXMLファイルで保持されているため、kintoneに取り込むために一度Json形式に変換し、エスケープ処理を加えます。

kintone クラスを追加し、以下のメソッドを記載します。
CreateBody メソッド : kintoneに取り込むための登録データのBody部分を作成します。
GetFileKey メソッド : 名刺の画像データのファイルキーを取得します。取得の際にはAPIトークンを利用しています。
PostCardData メソッド :kintoneに名刺データをPOSTします。

連携プログラムの Import ボタンをクリックした際の動作を記載します。
登録先の kintone のサブドメイン、アプリ番号、APIトークンを入力する必要があります。

その他ボタン動作を記載します。

ダイアログ画面の作成

連携プログラムのダイアログ画面を作成します。

FormCardConnections.Designer.cs

上記2点のファイルの変更が完了した後、ビルドを行います。
「CardConnections.exe」ファイルと「CardSettings.exe」ファイルが出力されることを確認します。
上記ファイルの出力先は「出力」コンソールに表示されたディレクトリを参照してください。

レジストリー登録

連携プログラムを実行する端末のレジストリー設定を行います。

必要なファイル

ファイル名 概要
CardConnections.exe ScanSnap から kintone に連携するための実行ファイル
CardSettings.exe CardConnections.exe の設定画面用の実行ファイル
CardConnections.ini CardConnections.exeの設定ファイル
Newtonsoft.Json.dll JSONを取り扱うためのライブラリ
favicon.ico アプリケーションのアイコンファイル
  1. Cドライブ直下に「C:\ScanSnap\kintone」ディレクトリを作成し、上記[必要なファイル]群を配置する。
  2. 管理者権限で regedit.exe を実行し、以下のディレクトリを開く。
    ・32bit の場合
     HKEY_LOCAL_MACHINE \ SOFTWARE \ PFU \ CardMinder \ ScanSnap Extension \ kintone
    ・64bit の場合
     HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ PFU \ CardMinder \ScanSnap Extension \ kintone
    ※対象のディレクトリに ScanSnap Extension フォルダ、 kintone フォルダが存在しない場合、新規作成が必要となります。
  3. 以下の項目を登録する。
    レジストリーの値 種類 内容 データ
    (既定) REG_SZ CardConnections.exe のフルパス C:\ScanSnap\kintone\CardConnections.exe
    Config REG_SZ CardConnections.iniのフルパス C:\ScanSnap\kintone\CardConnections.ini
    Path REG_SZ 実行アプリケーションのインストールフォルダー C:\ScanSnap\kintone\
  4. レジストリー登録が完了した後、PCの再起動を行います。

以上で連携プログラムの作成及び設定が完了となります。
アイコンファイル及び今回作成した連携プログラムは下記よりダウンロードいただけます。

ScanSnap_sample.zip

対象ファイル一覧

  • FormCardConnections.cs
  • FormCardConnections.Designer.cs
  • CardConnections.ini
  • favicon.ico

実行手順

STEP 1 ScanSnap で名刺をスキャン

名刺を裏面にして ScanSnap にセットし、スキャンします。

STEP 2 CardMinder の起動

名刺をスキャンすると CardMinder が起動します。
kintone に登録したい名刺データを選択し、ヘッダー部分の連携プログラムのアプリケーションのアイコンをクリックしてください。

STEP 3 連携プログラムから kintone アプリに登録

連携プログラムのチェックリストに CardMinder で選択された名刺データが表示されます。
Login Name に kintone のログイン名を入力し、[Import]ボタンをクリックすると、
kintone への取り込みを開始します。
取り込み中の処理状況は、Log に出力されます。

項目名 機能
Check All ボタン 名刺データファイル全てにチェックを入れる
UnCheck All ボタン 名刺データファイル全てのチェックを外す
Login Name テキストボックス kintoneのログイン名を入れる
Import ボタン チェックの入った名刺データをkintoneに取り込む
Log テキストボックス Import ボタン実行時のログを出力する
Close ボタン ダイアログを閉じる 

STEP 4 登録された名刺データの確認

kintone アプリに名刺データが登録されていることを確認します。

注意事項

  • 本Tipsのサンプルプログラム及びテンプレートは、その動作を保証するものではありません。
  • 本Tipsのサンプルプログラム及びテンプレートについて、技術的なサポート等は行っておりません。
  • 本Tipsの連携プログラムは Windows8, Windows10 で動作確認済みです。
  • CardMinder 及び ScanSnap SDK のダウンロードには株式会社PFUの個人情報の利用目的に従い、「ユーザー登録」を行う必要があります。
    必ず利用規約を確認してください。
  • 記事内で使用している CardMinder のバージョンは V5.3 L10 です。
  • ScanSnap SDK に関してお問い合わせがある場合は株式会社PFUの有償のサポートサービスをご利用ください。

終わりに

いかがだったでしょうか?
今回のTipsでは kintone のアプリに名刺データを取り込むところまでを記載しました。
kintone に取り込んだ名刺データをどのように活用するか、考えてみると面白いかもしれません。
また、今回は利用しませんでしたが CardSettings.exe を改修すると設定画面で認証情報やサブドメインなどの情報も持たせることができますので是非挑戦してみてください。

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

記事のコメント欄は記事に対するフィードバックをする場となっております。
右の記事フィードバックのためのガイドを参照してコメントしてください。
記事のリンク切れなど、気になる点がある場合も、こちらのフォームからフィードバックいただけますと幸いです。

Avatar
三科伸次

記事の通りいろいろ試みましたが、CardMinderの廃版もあり上手く動作できませんお知恵いただけますでしょうか?

Avatar
cybozu Development team

三科伸次様

お世話になっております。developer network事務局です。

>CardMinderの廃版もあり上手く動作できません
廃盤とのことですが、対応リストにCardMinderがございました。
一度現在使用されているスキャナ、OSでCardMinderが使用可能かどうか、ご確認をお願いいたします。

■販売中の機種向け ソフトウェア 対応OS 詳細
 http://scansnap.fujitsu.com/jp/dl/os.html 

■ドライバダウンロード
 http://scansnap.fujitsu.com/jp/dl/

また、その他外部サービスに関する詳細はサービス提供者様へお問い合わせいただければと思います。

Avatar
takashi

いつも役立つ記事をありがとうございます。

本記事の連携を一年程使わせて頂いておりましたが、今週から下記のエラーが出力されるようになり、kintoneへの取り込みができなくなってしまった状態です。

Error:この要求の送信中にエラーが発生しました。-2146233088
1件目の名刺データの登録時に例外が検出されました。処理を中断します。

こちら側でのkintone設定における変化点はないはずなのですが、考えられる原因をご教示頂けないでしょうか?
もしくは、原因調査の方法についてお知恵を頂けると幸いです。

 

 

 

Avatar
Yoshinori Noda

takashiさん

名刺データ送信時のエラーですが、弊社でも同じ現象が発生しており調べたところ、TLS1.0の無効化が原因のようでした。
https://www.cybozuconf.com/-/cloud

対処方法ですが、TLSのSecurityProtocolを上げることで解決しました。
具体的には記事サンプルコードFormCardConnections.csの42行目のtry前に下記を宣言しました。


ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;

※usingにSystem.Netも追加

Avatar
cybozu Development team

takashi 様

フィードバックをいただきありがとうございます。

エラーメッセージはkintoneが出しているものではなく、ScanSnap側から出ているもののように見受けられます。
恐れ入りますが、ScanSnap のご提供元へお問い合わせいただけますでしょうか?

なお、サイボウズでは TLS 1.0 の無効化を 6/10(日) に実施しております。

サイボウズにおけるTLS 1.0無効化 連携サービス・個別カスタマイズへの影響について

こちらの影響につきましても、合わせてご確認いただければ幸いです。

Avatar
cybozu Development team

Yoshinori Noda 様

情報をご提供いただきまして誠にありがとうございます。

 

takashi 様

やはりTLS 1.0 無効化が関係している恐れがありますので、先ほどの Noda 様の情報をお試しください。

Avatar
takashi

Nodaさん

ご教示頂いた内容で修正したところ、無事動作するようになりました!
誠にありがとうございました。

Avatar
Nagata

こちらの記事を参考にさせていただき、

登録画面で取得者・場所・日付等の情報を追加できるようカスタマイズしました。

とても役立つサンプル、誠にありがとうございました。

社外でも運用できるよう、Basic認証の追加を試みておりますが、

力及ばずでうまくいきません。

お力添えいただけないでしょうか?

Avatar
cybozu Development team

Nagata 様

ご活用いただいているとのこと、ありがとうございます。

こちらのコメント欄ですが、記事への使い勝手や不具合報告などのフィードバック目的となっております。

技術的なご質問はぜひコミュニティをご活用ください。

よろしくお願いいたします。

Avatar
Nagata

承知しました。ありがとうございます。

Avatar
鈴木陽

お世話になっております。

「実行手順 → STEP 3 連携プログラムから kintone アプリに登録」
上記のステップまで進めることができたのですが、名刺データがCardConnections.exeの
ファイル一覧(画面左側、checkedListBox1)に1件も表示されません。

CardConnections.exeのプログラムが対応しているCardMinderのバージョンはいくつになりますでしょうか?
win10用の最新版5.3 L40を使用して動作確認を行っております。


ちなみにですが、ソースコードを解析しましたところCardMinderからCardConnections.exeへ渡されるパラメータは
INIファイルのパスである前提でプログラムが実装されております。
ただ、実際に渡されるパラメータは名刺データ(XML)ファイルのパスとなっており、ファイル一覧(画面左側、checkedListBox1)に
表示するためのファイル数やファイル名が取得できておりません。
(パラメータで渡されたXMLファイルに対して、GetPrivateProfileIntとGetPrivateProfileStringを実行し、ファイル数取得とファイル名取得を
試みているが、ファイル数0、ファイル名空文字となっており、ファイル一覧には何も表示されない。)

■CardMinderからCardConnections.exeへ渡されるパラメータ
「C:\~~~\Documents\CardMinder\Temp\~cm0000.xml」


お手数をおかけしますがご教示のほど、よろしくお願いいたします。

Avatar
cybozu Development team

鈴木陽 様

お世話になっております。cybozu developer network 運営事務局でございます。

>CardConnections.exeのプログラムが対応しているCardMinderのバージョンはいくつになりますでしょうか?

記事作成時に動作確認した Card Minder のバージョンは V5.3 L10 となっています。
こちらのバージョンでの動作確認はできておりますので、お手数ですがこちらのバージョンで動作確認いただけますでしょうか。

よろしくお願い致します。

Avatar
鈴木陽

cybozu developer network 運営事務局 様

お世話になっております。鈴木陽です。
回答ありがとうございます。
現在入手できるCardMinderのバージョンが V5.3L30もしくはV5.3L40となっており、
どちらもCardConnections.exeとの連携に失敗していることを確認しております。
上記2バージョンでの動作確認は取れていないということでよろしいでしょうか?

よろしくお願いいたします。

Avatar
cybozu Development team

鈴木陽 様

お世話になっております。cybozu developer network 運営事務局でございます。

>上記2バージョンでの動作確認は取れていないということでよろしいでしょうか?

大変申し訳ございませんが、記事公開当初のバージョン(V5.3L10)のみ動作確認がとれており、その後のバージョンでは動作確認致しておりません。

どうぞよろしくお願い致します。

Avatar
鈴木陽

cybozu developer network 運営事務局 様

お世話になっております。鈴木陽です。

>バージョン(V5.3L10)のみ動作確認がとれており、その後のバージョンでは動作確認致しておりません。
承知いたしました。

1点お願いです。
「デバイスの準備」欄や「注意事項」欄などに動作確認済みのバージョン情報を追記いただくことは可能でしょうか?
バージョン情報の記載がないために、「現況においてCardConnections.exeの使用は不可、代替案の必要あり。」という
結論に至るまで非常に時間がかかってしまった次第です。
お手数をおかけしますがご検討ください。
よろしくお願いいたします。

サインインしてコメントを残してください。