見出し画像

「はじめようkintone コマンドライン」でCSVファイルを取り込もう

2023.01.25追記
この記事は ver. 0.x.x の cli-kintone の使い方です。ver.1.0.0 以降の cli-kintone の使い方は、こちらを参照してください。

kintoneにはCSVファイルを取り込む事ができる「cli-kintone」というコマンドラインツールがあります。

コマンドラインツールを使ってみよう!

このツール、すごく高機能で、CSVファイルの入出力に加え添付ファイルの操作も可能です。

>cli-kintone.exe
Usage:
 cli-kintone.exe [OPTIONS]
Application Options:
 -d=            Domain name (specify the FQDN)
 -a=            App ID (default: 0)
 -u=            User's log in name
 -p=            User's password
 -t=            API token
 -g=            Guest Space ID (default: 0)
 -o=            Output format. Specify either 'json' or 'csv' (default: csv)
 -e=            Character encoding. Specify one of the following ->
                'utf-8'(default), 'utf-16', 'utf-16be-with-signature',
                'utf-16le-with-signature', 'sjis' or 'euc-jp' (default: utf-8)
 -U=            Basic authentication user name
 -P=            Basic authentication password
 -q=            Query string
 -c=            Fields to export (comma separated). Specify the field code name
 -f=            Input file path
 -b=            Attachment file directory
 -D             Delete records before insert. You can specify the deleting
                record condition by option "-q"
 -l=            Position index of data in the input file (default: 1)
     --import   Import data from stdin. If "-f" is also specified, data is
                imported from the file instead
     --export   Export kintone data to stdout
 -v, --version  Version?of?cli-kintone
Help Options:
 -h, --help     Show this help message

。。。が、高機能すぎてパラメータなどちょっと複雑。^^;

もちろんdeveloperには、詳しい情報が掲載されていますが、てっとり早く業務で使える風まで動かしてみたい。そう最短で。^-^;

業務で使える感じとなると、おそらく以下2点が、やりたいことの上位になるのではないでしょうか(いや、たんに私がそうだっただけですが^^;)。

1.CSVファイルをコマンドでkintoneに取り込みたい(ゆくゆくは自動で)
2.追加だけでなく、CSVファイルでkintoneのデータの更新もしたい

で、以下サンプルアプリを作成

アプリ名:くだもの
フィールド名(フィールドコードも同じ)
文字列(1行):年月
数値:みかん、りんご、バナナ

サブドメイン:piyo
アプリID:1234
APIトークン:ABCdefgHijklMnOpqrstuVwxYzAbcdefgHiJkLmN

画像1

1.CSVファイルをコマンドでkintoneに取り込みたい

サンプルデータは以下のものを作成。

くだもの.csv

"年月","みかん","りんご","バナナ",
"202010","10","15","20",
"202011","5","6","7",

developer からダウンロードした cli-kintone.exe と、くだもの.csv を、同じフォルダにおいて、コマンドプロンプトより入力する。

コマンドは、ズバリこれ!

cli-kintone.exe --import -a 1234 -d piyo -t ABCdefgHijklMnOpqrstuVwxYzAbcdefgHiJkLmN -e sjis -f くだもの.csv

>cli-kintone.exe --import -a 1234 -d piyo -t ABCdefgHijklMnOpqrstuVwxYzAbcdefgHiJkLmN -e sjis -f くだもの.csv
[2020-11-23 23:30:12]: Start from lines: 1 - 3 => SUCCESS
[2020-11-23 23:30:13]: DONE
画像2

おおっ!ちゃんと取り込まれてる!!(^^;
将来的には、バッチファイルを作成して自動的にやりたいですね。

2.追加だけでなく、CSVファイルでkintoneのデータの更新もしたい

一回追加しただけで終わりなら、標準機能で追加でも別にいいんですが、定期的に行うためには、データの更新も必要になってきます。

いらないデータだけ削除してから必要なデータを追加したい!!
11月のデータだけ、以下に洗い替えてみます。

くだもの11月.csv

"年月","みかん","りんご","バナナ",
"202011","333","456","877",

同じく cli-kintone.exe と、くだもの11月.csv を、同じフォルダにおいて、以下コマンドを入力!!

あ、\(バックスラッシュ)は、半角の¥(円マーク)のことなので、入力時に読みかえてください。

cli-kintone.exe --import -a 1234 -d piyo -t ABCdefgHijklMnOpqrstuVwxYzAbcdefgHiJkLmN -q "年月 = \"202011\"" -e sjis -D -f くだもの11月.csv

>cli-kintone.exe --import -a 1234 -d piyo -t ABCdefgHijklMnOpqrstuVwxYzAbcdefgHiJkLmN -q "年月 = \"202011\"" -e sjis -D -f くだもの11月.csv
[2020-11-23 23:33:31]: Start from lines: 1 - 2 => SUCCESS
[2020-11-23 23:33:31]: DONE
画像3

おおっ!! レコード番号12の 11月データ が削除されて、レコード番号13のデータが追加されているっ!!(^-^;;

ちなみに削除は、からっぽのCSVファイルを用意して、同じ要領で以下コマンド実行でOKです!

cli-kintone.exe --import -a 1234 -d piyo -t ABCdefgHijklMnOpqrstuVwxYzAbcdefgHiJkLmN -e sjis -D -f からっぽ.csv

>cli-kintone.exe --import -a 1234 -d piyo -t ABCdefgHijklMnOpqrstuVwxYzAbcdefgHiJkLmN -e sjis -D -f からっぽ.csv
[2020-11-23 23:35:05]: DONE

ここまで確認できたら、あとはじっくりdeveloperの情報を読むのもよいでしょうし、システム部門の人たちに相談するのもよいでしょう。

いずれにせよ「多分できると思うけど、できないかもしれない」の不安からは脱出できます。^^

エラーコレクション

もちろん最初からすんなりいくはずもなく、エラーや間違いもたくさんしましたよ!例えば。。。

タイトル行の ”バナナ” を、間違えて ”えびふりゃー" にしてしまった!

"年月","みかん","りんご","えびふりゃー",
"202012","3","0","15",

画像4

バナナの12月は空白。
1行目ヘッダがフィールドコードと一致してないとデータが入らないみたいです。

ほかにもいろいろ。。。

HTTP error: 404 Not Found

サブドメインがちがう!

AppError: 403 [GAIA_AP15] APIトークンとアプリ(id: 1235)の組み合わせが正しくありません。

アプリIDがちがう!!

AppError: 520 [GAIA_IA02] 指定したAPIトークンは、アプリで生成されたトークンと異なります。アプリのAPIトークンの設定を確認してください。設定が正しい場合、APIトークンの設定がアプリに反映されていない場合があります。アプリの 設定を更新し、APIトークンの設定をアプリに反映します。 

APIトークンがちがう!!!

AppError: 403 [GAIA_NO01] このAPIトークンでは、指定したAPIを実行できません。

APIトークンに適切な権限がない!!!!

record on line 3: wrong number of fields

CSVファイルの3行め、一番最後がカンマでおわってなかった。
このへんは、Go 言語の パッケージ csv からのエラーみたい。。。

parse error on line 1, column 2: bare " in non-quoted-field

エラーメッセージの意味とはちがってて、原因は、CSVファイルの文字コードがちがってた(sjisじゃなくてutf-8だった)。

Get https://piyo.cybozu.com/k/v1/form.json: dial tcp xxx.xx.xx.xx:xxx: i/o timeout

家では動いたのに会社では動かなかった(実行後、固まってしまった)とかの場合はプロキシ経由の影響かもしれませんので、わからなければシステム部門に聞いてみましょう。以下リンクに詳しく記載があります。
コマンドとしては、
set HTTPS_PROXY=xxx.xx.xx.xx:xxxx
とかになります。

>c:\cli-kintone>cli-kintone.exe --import -a 1234 -d piyo -t ABCdefgHijklMnOpqrstuVwxYzAbcdefgHiJkLmN -q "年月 = \"202011\"" -e sjis -D -f くだもの11月.csv
[2020-11-23 23:40:47]: Start from lines: 1 - 2 => SUCCESS
[2020-11-23 23:40:47]: DONE

>c:\cli-kintone>c:\cli-kintone>cli-kintone.exe --import -a 1234 -d piyo -t ABCdefgHijklMnOpqrstuVwxYzAbcdefgHiJkLmN -e sjis -f くだもの.csv
'c:\cli-kintone' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

>c:\cli-kintone>cli-kintone.exe --import -a 1234 -d piyo -t ABCdefgHijklMnOpqrstuVwxYzAbcdefgHiJkLmN -e sjis -f くだもの.csv
アクセスが拒否されました。

上記はおまけですが、「今まで動いていたのに急に動かなくなった!!」現象です。焦りますよね。原因はなんでしょう??

< 答え >

私の実環境では、
c:\cli-kintone>
のパス配下で色々作業してたんですが、コマンドをコピペする際に、パスごとコピペしてしまって、
c:\cli-kintone>c:\cli-kintone>cli-kintone.exe
で、cli-kintone.exeをリダイレクトで消してしまったんですね。^^;

そのほか

あとは、必要なければ、アプリの高度な設定で「レコードの変更履歴を記録する」チェックを外す事をおすすめします。また、アプリ管理で、1日のAPIリクエスト数管理もチェックしておかないと、大量データ時に制限値を超えてしまうかもしれません。

また、実運用には、セキュアアクセスでの制限や、セキュリティ関連製品からのブロック、自社のセキュリティポリシーに関係してくる事もあるかもしれませんので、ご注意ください。

皆さんのやりたいことや、Windows環境なのかLinux環境なのかによってもちがってきますし、文字コードや、パラメタ、エラーメッセージも色々だとは思います。

一応、「私の環境で動いた一例」として、参考になればうれしいです。

もっと良い方法や、考慮しないといけないポイントがあるかもしれません。アドバイスあればよろしくお願いします!

追記

コメント欄にご質問ありましたので、実際の結果をアップするのが一番だと思い追記します。

フィールドの設定

画像5

コマンド

C:\cli-kintone>cli-kintone.exe --export -a 1234 -d piyo -t ABCdefgHijklMnOpqrstuVwxYzAbcdefgHiJkLmN -e sjis -c "$id,mikan" > test.csv

結果

"$id","mikan"
"171","2"
"170","2"
"169","10"
"168","2"
"167","5"
"166","10"
"165","6"
"164","4"

とくに問題なく動作しました。今一度フィールドコードの記載を確認されてはいかがでしょうか。フィールドコードは日本語でも大丈夫ですが、はじめての際には、なるべく動かない可能性となるような要素は省くようにした方がよいので、半角英文字にしてトライするのはよい方法だと思います。又転記ミスを防ぐため実際のkintoneの設定のフィールドコード(赤枠)をコピペすることをオススメします。

この記事が気に入ったらサポートをしてみませんか?