Kintoneと外部DB等よりマスターの流し込みや逆にデータの抽出が必要になったため触ってみました。
手動でCSVファイルのやり取りはできるのですがPHPを使ってスケジューラで自動実行したく手法を下記にまとめました。
<手法>
サイボウズより cli_kintone(読みはクリキントン?)というアプリケーションが提供されており
これにより、PHPやJavaScriptのコマンドによりファイルのアップ・ダウンロードが実行可能となります。
また、CData社のODBCのドライバー(有償)の手法もご紹介します。
<Kintoneコマンドツールのダウンロードとインストール>
ダウンロードサイト:
https://github.com/kintone/cli-kintone/releases
Linux版 cli-kintone-v1.1**.**_linux.zip
Windows版 cli-kintone-v1.1**.**_win.zip
インストール作業はありません。ダウンロードファイルを解凍し実行させるフォルダーに配置させるだけです。
Linux版の場合、実行ファイル(cli_kintone)に実行権限chmod 755 設定が必要。
<実行コマンド>
インポート
・ID / パスワードで接続時
cli-kintone record import --base-url https://*********.cybozu.com --app **
-u *****@*******.co.jp -p ********* --file-path /ファイルのあるパス/*****.csv
--update-key "********"
・APIキー接続
cli-kintone record import --base-url https://*********.cybozu.com --app **
--api-token **************** --file-path /ファイルのあるパス/*****.csv
--update-key "sectionID"
・オプション
--base-urlは、サービス提供されているkintoneのURL
--appは、アプリの番号
-uは、kintone管理者のID
-pは、パススワード
--file-pathは、アップロードファイルのパスとcsvファイル名
--update-keyは、重複させないフィールド名
(データが存在するときはupdate、ないときはinsertとなる)
--api-tokenは、APIキー
※Windowsの場合は、cli_lintone → cli_kintone.exe としてください。
また、PHP等コマンド記載記載時は実行ファイルを配置しているフルパスの記載を忘れずに!
・ID / パスワードとAPIキー接続の使い分け
他のアプリをルックアップで連携している場合は、APIキーでは接続できません。
ID / パスワードにての接続となります。またルックアップ参照先のフィールドには別途アクセス権の
設定も必要となります。
・ファイルの項目名
このフィールド名がCSVファイル1行目の
項目名になります。
エクスポート
・コマンド例
cli-kintone.exe record export --base-url https://*********.cybozu.com --app **
--api-token **************** > ファイルの保存先パス/******.csv
データ削除
・コマンド例
全てのレコード削除
cli-kintone.exe record delete --base-url https://*********.cybozu.com --app **
--api-token ****************
一部のレコード削除
cli-kintone.exe record delete --base-url https://*********.cybozu.com --app **
--api-token ****************
--file-path 削除ファイルの保存先パス/******.csv
この削除ファイルとは削除するレコード番号が記載されたファイル
1行冥は見出し行で2行目以降削除するレコード番号フィールドのフィールドコードを記述します。
あとは、exec()関数を使ったプログラムをcrontabやwindowsならタスクスケジューラーの登録で自動化されます。
サイボウズ社のマニュアル
https://cybozu.dev/ja/kintone/sdk/backup/cli-kintone/
今回CData社のKintone用ODBCドライバーを触る機会がありましたのでまとめました。ネットではなかなかマニュアルに辿り着けなく四苦八苦したので
インストール手法、接続確認のツール、接続およびSQLコマンド、テーブル名、カラム名がどのようになっているか記述しております。
ちなみにこの製品は、cli_KintoneがCSVファイルベースでの連携でしたが、SQLでの連携が可能でより細かいデータのやりとりができます。
<ODBCドライバーのダウンロードとインストール>
CData社のサイトで https://www.cdata.com/jp/drivers/kintone/odbc/ より30日間のトライアルがダウンロードできます。もちろん製品版も可能です。
・インストール(Limux)
ダウンロードしたRPMファイルをLinux端末に配置し実行
$ rpm -ivh setup.x86_64.rpm
インストール後ライセンスのアクティベーションが必要です。
$ cd /opt/cdata/cdata-odbc-driver-for-kintone/bin/
$ sudo ./install-license.x64
※評価版をアクティベートするにはkeyの入力を省略します。
・インストール(Windows)
ダウンロードしたファイルを解凍しWindows端末に配置しexeファイルを実行
インストール後、C:\Program Files\CData\CData ODBC Driver for Kintone\ConfigureODBC.exeを
管理者で実行。この画面で一度接続しておく必要があります。
・PHPからの接続
$conn = odbc_connect("DRIVER={CData ODBC Driver for Kintone};
User=myuseraccount;Password=mypassword;Url=http://AAAAAAAAA.cybozu.com/",
"BBBB@BBBBBBBB.co.jp", "**********");
AAAAAAAAは接続先URL、BBBBBはユーザアカウント、*******はパスワード
※kintoneのフィールドコードを項目名として参照できるようにするには、
for Kintone};の後にMiscellaneous UseCodeForFieldName = true; を追記
・クエリ
$stmt = odbc_exec($conn, "SELECT * FROM 部署マスター WHERE AppId = '**'");
while ( = odbc_fetch_array($stmt)) {}
**はアプリID
・テーブル
kintoneのアプリ名
・フィールド名
kintoneのフィールド名 ※フィールドコードも接続コマンドで項目名として利用可能
・注意事項
Windows 取り扱い文字コードはsjis-winとなる。よって接続PGはSJISで記述、表示やDB取込はUTF-8
に変換は必須です。
Linux 取り扱い文字コードはUTF-8となる。よって接続PGはUTF-8で記述します。
・CData社マニュアル
https://cdn.cdata.com/help/EKJ/jp/odbc/default.htm (ODBC の使用を参照)
https://cdn.cdata.com/help/EKJ/jp/odbc/RSBKintone_p_UseCodeForFieldName.htm
・管理ツール A5:SQL Mk-2 (Windows版) フリーソフト
本ツールをによりテーブル一覧の表示、各テーブルのカラムやデータを確認することができます。
<インストールと設定>
上記アプリケーション名で検索しダウンロード、インストールはなくファイルの配置のみとなります。
起動は配置したA5M2.exeをクリック
<接続設定>
上部メニュー「データベース」をクリックし「データベースの追加と削除」を選択
「+追加(A)」をクリック後、最下段にある「汎用接続(OLE DB、ODBC)(A) 」を選択
接続文字列右にある「_」のボタンをクリック
データリンクプロパティが表示され
「MicroSoft OLE DB Provider for ODBC Drivers」を選択し「次へ」
1.データソース名を指定します:
◉データソース名を使用する(D)
「Cdata Kintone Sys」を選択
2.サーバへのログオンに必要な情報を入力します:
ユーザ名(N):とパスワード(P):を入力
「接続のテスト」をクリック
成功すると「接続テストに成功しました。」と表示 このポップアップの「OK」をクリック
データリンクプロパティの「OK」をクリック
これで設定が完了です。
メイン画面の左ペインにデータベースの下に >CData Kintone Sys が表示されます。
Kintoneの情報確認はこの >CData Kintone Sys をクリックで左ペインに
∨ CData Kintone Sys
∨ Kintone
∨ テーブル
各テーブルが表示
このテーブルをクリックするとデータやカラム、インデックス等の情報が表示されます。