kintone コマンドラインツールの使い方

フォローする

(著者:サイボウズ KADOYA Ryo

コマンドラインツールのダウンロード

kintoneのコマンドラインツールはこちらからダウンロードできます。Windows/MacOSX/Linux向けの実行ファイルが用意されています。ダウンロードしたら任意のフォルダに解凍してください。ここではWindowsでの利用を想定します。

Releases kintone/cli-kintone (Github)

使ってみる

引数をなにも指定せずに実行すると、利用可能なオプションが表示されます

 

オプション 説明
-d ドメイン名(必須)cybozu.comは省略可能です。
FQDNを指定することで、cybozu.com 以外のドメイン(kintone.com, cybozu.cn) を利用することも出来ます。
-a アプリID(必須)
-u ログイン名(APIトークンかログイン名のいずれかが必須)
-p パスワード
-t APIトークン(APIトークンかログイン名のいずれかが必須)
-g ゲストスペース内アプリの場合、ゲストスペースのIDを指定します。
-o 出力形式。'json'もしくは'csv'が指定できます。デフォルトは'json'です。
-e エンコーディング方式。デフォルトはUTF-8です。Shift-JISで入出力する場合は'sjis'を指定します。
-U BASIC認証ユーザー名
-P BASIC認証パスワード
-q 条件式。条件式の書き方はこちらを参照してください。
-c 出力するフィールド名をカンマ区切りで指定できます。
-f データインポート時、インポートするファイル名を指定します。
-b 添付ファイルのダウンロード先、アップロード元ディレクトリを指定します。
-D インポート時にこのオプションを指定すると、既存のレコードをすべて削除してからデータをインポートします。

※セキュアアクセス環境には対応していません。

ユーザー名/パスワードでkintoneのデータを表示する

ドメイン名をsample.cybozu.com、アプリIDが999の場合の例

bozumanユーザーのパスワードを入力すると、CSV形式ですべてのフィールドのデータが出力されます。JSON形式で表示するには、-o jsonを指定します。途中で中断する場合は、CTRL+Cを押してください。

結果は以下のようになります

APIトークンを利用する

APIトークンを利用すると、パスワードを入力しなくてもデータを入出力することができます。APIトークンは、アプリの設定 > APIトークンから取得できます。実行する操作にあわせて、APIトークンに適切な権限を設定してください。

Shift-JISでCSVファイルに出力する

kintoneではデフォルトでUTF-8で文字列データが出力されます。-eオプションを使うことで、出力する文字エンコーディングを指定することができます。この例ではsample.csvというファイルに出力しています。

出力するフィールドを指定する

-cオプションを使うことで、出力するフィールドを指定できます。

絞り込み条件と並び順を指定する

-qオプションを使うことで、絞り込み条件と並び順を指定できます。条件式の書き方はこちらを参照してください。

ファイルからデータをインポートする

既存のデータを更新する

既存のデータを更新するには、CSVファイルに$idカラムを用意します。

加藤さんの所属を企画部に、山田さんの所属を人事部に変更するCSVファイルの例

 

レコード番号以外の特定のフィールドでレコードを更新するには、CSVファイルのヘッダ行にあるフィールドコードの先頭に更新キーを表すマーク"*"をつけます。このとき、更新キーとなるフィールドは値の重複を禁止する設定にする必要があります。
顧客コードでレコードを更新するCSVファイルの例

新規にデータを登録する

CSVファイルに$idカラムが存在しない場合や、$idカラムの値が空文字列の場合、新規にレコードが登録されます。

ここまでの結果は以下のようになります。

 

既存のデータを削除して登録する

-Dオプションを指定すると、既存のレコードをすべて削除してからデータを追加します。

テーブルの書き出し、読み込み

書き出し

テーブル付きのレコードを書き出す場合、1レコードの内容が複数行に分けて書き出され、CSVデータの出力は以下のようになります。

この例では異動年月日と異動部署がテーブルになっています。 書き出したCSVの1行目には1列目に"*"マークが出力され、その後フィールドコード名が並びます。2行目以降で"*"マークがついていない行は、テーブル内の2行目以降のデータになります。上記のCSVデータの場合、5レコード出力されています。レコード番号5番の『異動年月日』と『異動部署』を含むテーブル内に2行分のデータが入っているため、CSVでも2行分のデータが出力されています。

読み込み

読み込みも同様に、2行目以降で"*"マークがついていない行は、テーブル内の2行目以降のデータとして扱われます。先頭列に"*"がついていない行の、テーブルの行以外の値は無視されます。

添付ファイルのダウンロード、アップロード

ダウンロード

-bオプションに、ダウンロード先のフォルダ名を指定します。フォルダが存在しない場合は、自動的に作成されます。ここでは「写真」フィールドのフィールドタイプが添付ファイルに設定されているものとします。

添付ファイルは、downloadフォルダ以下の<添付ファイルのフィールドコード>-<レコード番号>フォルダにそれぞれ保存されます。

-bオプションを指定したとき、添付ファイルフィールドの値はダウンロードされたファイルのダウンロードフォルダからの相対パスとなります。

アップロード

ダウンロードと同様に、-bオプションでアップロードするフォルダを指定します。CSVファイルに記述する値はアップロードフォルダからの相対パスとなります。複数の添付ファイルを指定するときは、CR文字(Microsoft Excelの場合はALT+Enterキーで入力)でファイルを区切ります。

おわりに

コマンドラインツールはREST APIを使用するため、スタンダードライセンスが必要です。大量のデータ操作はkintoneに負荷がかかり、パフォーマンスに影響が出ることがありますのでご注意ください。

このTipsは、kintone-ci Ver 0.5 と2016年2月版で確認したものになります。

関連Tips

コメント

Avatar
Hiroyoshi Hirano

既存システムとkintoneへのデータ移行や、同期のため、APIプログラムを個別開発していましたが、
これで楽になりますね。その他ERPパッケージシステムとのCSV連携にも利用できますね。

Avatar
芝野

こんにちは
キントーンコマンドツールを利用させて頂いています。
Releases kintone/kintone-ci (Github)

Windows版で公開されているのが64ビット版のみなのですが、32ビット環境で利用する必要がでてきたので、ソースとビルドの手順が公開されているので自分で32ビット版を作成しようと試みました。

しかし、
https://github.com/kintone/kintone-ciの「How to Build」の手順でbuild(go build)を実行すると。

「import code.google.com/p/go.text/encoding: c:\go\src\kintone-ci\main.go:4:2: package could not be found loccally」
のエラーが発生してbuildが失敗してしまいます。

ビルドの正しい手順もしくは、Windows32ビット版のexeがあれば教えて頂けませんでしょうか。

Avatar
atsunori74

Go言語、Git、Mercurialをそれぞれインストールし、環境設定をして手順に従ってビルドすれば、32ビット版のexeが出来ましたよ。

Avatar
芝野

色々とアドバイス頂き、Go言語を再インストールして再度ビルドした所、32ビット版作成できました。
ありがとうございました。

Avatar
田中

64bit版同様に、32bit版のソースとビルドの手順も公開して頂けないでしょうか。
よろしくお願いいたします。

Avatar
ichino

macosx版のv.0.1とv.0.2を使用してCSV出力をしてみましたが、
1行目が「フィールド名」ではなく「フィールドコード」が書き出されてしまいます。
(そのため、出力したCSVを再度kintoneに取込む際にフィールドの対応付けが自動的に行われません)
「フィールド名」を出力するオプションは無いのでしょうか。

Avatar
かん

コマンドラインツールを利用し、サブテーブルのフィールドデータを、
エクスポート、および、インポートすることは可能でしょうか?

Avatar
cybozu Development team

かんさん
お世話になっております。cybozu.com developer network事務局です。
下記をご参考いただければと思います。
http://qiita.com/ushiron/items/f7f66632710b9b0834c5

Avatar
mhit

カテゴリー項目が出力されなくて困っております。カラム名で指定しても出てこないので仕様なのかな?とおもっているのですが、なにか手段は有りますでしょうか??

Avatar
uehara

PDF等のファイルを一括で登録したいのですが、コマンドラインツールでも可能でしょうか。
データの取込は問題なく出来たので、後はそのデータに紐づく各種書類ファイルを登録したいと考えております。

Avatar
鈴木佑介

いつも良質な記事ありがとうございます。

2点ほど確認・教えて頂きたいのですが、
・文字列内にカンマが含まれる場合には、ダブルコーテーションで文字列を囲えば正しく文字列として判断される?
・文字列内にダブルコーテーションが含まれる場合には、ダブルコーテーションで文字列を囲えば正しく文字列として判断される?
という認識で宜しかったでしょうか?

教えて頂ければ幸いです。
宜しくお願い致します。

Avatar
Kenji Narizuka

コマンドラインからRESTを使って添付ファイルをUPする方法を検討していましたが、

コマンドラインはShift-JIS、kintoneはutf-8ということでファイルのタイトルが文字化けしていました。

本ツールを使うことで解決しました。助かります!

Avatar
hiryukij

コマンドラインから、サブテーブルとルックアップフィールドを含むCSVを取込もうとしたら、

「APIトークンを使用する場合、ルックアップフィールドを編集できません。」のエラーがでました。

たしかにルックアップを使用しており、そこには、紐付くマスタのIDが格納されております。

ルックアップのもととなるマスタに対して編集するわけではなく、単純にIDセットしたいだけなのですが、

どのように回避したらよいでしょうか?

Avatar
cybozu Development team

hiroyukijさん

ご質問いただきありがとうございます。cybozu developer network運営チームです。以下回答させていただきます。
APIトークンはそのアプリ固有の認証コードになります。
ルックアップをする場合は、他のアプリから参照することになるので、APIトークンでは参照先アプリの認証を突破できません。
そのため記載いただいたエラーが出ているものと思われます。
APIトークンではなく、ユーザー認証を使った方法に変更いただくと処理が通るようになります。
ご確認よろしくお願いします。また何か追加で疑問点などありましたらコメントください。

Avatar
hiryukij

cybozu.com developer network事務局さん

ユーザー認証で試してみたらいけました!大変助かりました。ありがとうございました。

Avatar
hiryukij

コマンドラインから、プロセス管理されているステータスを更新する方法はどうすればよいのでしょう。

[$id]と[ステータス]の項目をもつCSVを取込もうとしています。

Avatar
GP-KIYO

-c $id,処理状況 や -c $id,ステータス では拾ってくれませんね・・・。 私も このステータス項目の一覧をだしたいです

Avatar
cybozu Development team

hiryukijさん、GP-KIYOさん

ご質問いただきありがとうございます。cybozu developer network運営チームです。

コマンドラインツール(cli-kintone)ではJSON形式でステータス情報の取得はできますが、ステータスの更新はできません。
ステータス更新につきましては、レコードのステータスの更新APIをお使いいただいて処理を記述することになります。
https://cybozudev.zendesk.com/hc/ja/articles/204791550
ご確認よろしくお願いします。


他にも疑問点がありましたらお知らせください。

Avatar
hiryukij

cybozu.com developer network事務局さん

なるほど了解しました。残念です。。今後検討して頂けるとありがたいです。

Avatar
mi-iwasaki

こんにちは。1つ質問です。

cli-kintone でダウンロードできるデータの最大件数(制約)などはありますか?

Avatar
cybozu Development team

岩崎充宏さん

ご質問いただきありがとうございます。cybozu developer network運営チームです。

コマンドラインツールでは、入っているレコードデータを全件取得するようになっています。

取得する上限を決めたい際は、「query」パラメータにlimitを指定してください。指定の仕方は以下をご参照ください。
https://cybozudev.zendesk.com/hc/ja/articles/202331474#step2

因みに途中で処理を中断させたい場合は、CTRL+Cを押して停止することが可能です。

ご確認よろしくお願いします。また何か疑問等ありましたらお気軽にご質問ください。

Avatar
mi-iwasaki

cybozu developer network運営チームさん

ご回答ありがとうございます。

もう1点教えていただけますか?

cli-kintoneは、内部的にREST APIを呼んでいるという記事を見たことがある気がしています。

その場合、1日のリクエストの制限に引っかかったりして、レコード全件が取得できない(途中でエラーとなる)

といったことはありますか?

Avatar
GP-KIYO

CLIで ステータス="ABC" のレコードを抽出する事はできませんか?

Avatar
GP-KIYO

-b で添付ファイルを出力するのに、 -qオプションを 指定してレコードを指定した添付ファイルを取得しようとしているのですが、-b -q "$id=1"とすると、 -qというフォルダを作成して 全ファイルを出力してしまいます。

 

逆に -q "$id=1" -b とすると実行できません。

 

どのように実行したら条件に応じたファイル出力ができますでしょうか

Avatar
cybozu Development team

岩崎充宏さん

ご質問いただきありがとうございます。cybozu developer network運営チームです。

岩崎さんのおっしゃる通り、内部的にはREST APIを呼び出しています。
現時点では1アプリあたり1日10000リクエストを上限としていますが、
エラー処理やリクエストを止めるなどの処理をサイボウズ側では行っておりません。

※超過した日の翌日9:00頃に「サイボウズドットコム ストア」の
 管理者メールアドレス宛に警告メールが送信されるようになっています。
http://faq.cybozu.info/alphascope/cybozu/web/kintone/Detail.aspx?id=1874&isCrawler=1

リクエスト数のカウント方法につきましては以下をご参照ください。
コマンドラインツールのソース内では一度のAPIコールで取得する上限値を以下の通り設定しています。
実際にはこれをループさせて全件取得するようになっています。
https://github.com/kintone/cli-kintone/blob/master/main.go

const IMPORT_ROW_LIMIT = 100
const EXPORT_ROW_LIMIT = 500

ご確認よろしくお願いします。

Avatar
cybozu Development team

GP-KIYOさん

ご質問いただきありがとうございます。cybozu developer network運営チームです。

●一つ目のご質問
[絞り込み条件と並び順を指定する]の項目にある通り記載していただくとステータスがABCのレコードを抽出することが可能です。
https://cybozudev.zendesk.com/hc/ja/articles/202957070

具体的には以下のような記述になります。
-q "ステータス=\"申請中\""

●二つ目のご質問
ダウンロード先のファイル名を指定していただくと上手くいくかと思います。
-b download -q "$id=1"

ご確認よろしくお願いします。

Avatar
oota

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

証明書が入っているドメインに対してコマンドラインツールは利用可能でしょうか?

Avatar
inagi

コマンドラインツールを使用しようとしてエラーになっていましたが、環境変数HTTPS_PROXYを設定することで使用できました。

知っている人には当たり前だと思いますが、情報を展開しておきます。

 

(状況)

社内ネットワークの制限で、ポート443による通信が抑止される環境で使用しています。

当初、以下のようなメッセージが出てエラーになりました。

2017/02/16 12:00:00 Get https://×××.cybozu.com/k/v1/form.json: dial tcp XXX.XX
X.XXX.XXX:443: connectex: No connection could be made because the target machine
actively refused it.

メッセージより、このツールはポート443を直接指定して通信しようとしていると判断しました。

 

 

(前提)

このツールはGo言語で作られている。

Goはデフォルトでは環境変数HTTP_PROXYかHTTPS_PROXYを参照する。

試行していたPCは環境変数のHTTP_PROXYもHTTPS_PROXYも設定していなかった。

社内ネットワークにプロキシサーバーは存在する。

 

 

(対応)

システムで環境変数を設定するか、ツール実行前にset文で環境変数を設定する。

 

set文の例:set HTTPS_PROXY=https://xxx.xxx.xxx.xxx:pppp

(xxx.xxx.xxx.xxxは社内ネットワークのプロキシサーバーアドレス。ppppはプロキシサーバのポート番号)

inagiにより編集されました
Avatar
カキ氷

ootaさん

>証明書が入っているドメインに対してコマンドラインツールは利用可能でしょうか?

セキュアアクセスが有効になった状態でも利用可能かとおもいます。

当方に確認環境がないため動作を見れていませんが、ドメイン名設定の「-d」オプションで ".s" 付きURLを設定してみてお試しください。

 例:">cli-kintone.exe -a 999 -d sample.s.cybozu.com -u bozuman -c "$id,氏名,写真" -b download

 

■参考

コマンドラインのオプションについて:https://cybozudev.zendesk.com/hc/ja/articles/115000297083

セキュアアクセス時のURLの違いについて:https://help.cybozu.com/ja/general/admin/secureaccess.html

Avatar
Seki

コマンドラインツールを使ってkintoneからデータをGETしようとしていますが、
セキュアアクセスを設定した場合失敗してしまいます。

上のコメントの通りには試してみましたが…

試した内容は以下の通りです。

・セキュアアクセスを利用しない場合
 実行コマンド:cli-kintone -a 1 -d [ドメイン] -u [ユーザ]
 →GETできます。

・セキュアアクセスを利用する
(IPアドレス制限をすべて"拒否"としクライアント証明書で認証する使い方にした場合)
 実行コマンド:cli-kintone -a 1 -d [ドメイン] -u [ユーザ]
  →失敗「HTTP error: 403 Forbidden」
 実行コマンド:cli-kintone -a 1 -d [ドメイン].s.cybozu.com -u [ユーザ]
  →失敗「HTTP error: 400 Bad Request」

テストしているPCから、ブラウザでクライアント証明書で認証してkintoneの利用は出来る状態です。
何か解決方法はあるでしょうか?

 

Sekiにより編集されました
ログインしてコメントを残してください。
Powered by Zendesk