2015年の kintone Advent Calendarで「cybozu.com developer networkの使い方(その2)」を紹介したところ、「kintoneコマンドラインツールを使うとサブテーブルが読み込めるんですか?」というお問い合わせをいただきました。おそらく、ブラウザ画面からサブテーブルの読み込みができないので、他の手段を使っても読み込めるようにしたいということかと思います。他の手段ですが、kintoneのREST APIを使えばできますが、もっと便利なツールがあればそれを使いたい!ということで、kintoneコマンドラインツールの使い方を紹介します!
簡単!便利!「kintoneコマンドラインツール」
次のようなことが Windows, Linux, Macからできるコマンドツールです。
kintone コマンドラインツールをダウンロードしましょう。
- アプリのレコード取得、登録、更新、削除ができる
- CSV形式とJSON形式で出力できる
- クエリー文字列も指定して絞り込み取得できる
- 認証はユーザー認証、APIトークン認証、Basic認証にも対応している
- UTF-8、Shit-JISなどの文字コードも指定できる
それでは使い方です。
サブテーブルを書き出してみる
はじめに、サブテーブルが含まれているアプリを作りましょう。
その前に、kintoneの環境を持っていない!という方、cybozu.com developer networkで無償の開発者ライセンスを取得しておきましょう。
アプリの構成
| フィールドコード | フィールドタイプ |
|:-----------|:------------|
| Title | 文字列(1行)|
| Number | 数値 |
| SubTitle | 文字列(1行)|
レコード登録画面はこんな感じ
※フィールド名とフィールドコードを同じにしています
レコードを登録してみよう
こんな感じでサブテーブルにもデータを登録します。
コマンドラインツールに必要な情報は控えておく
| パラメータ | 値 |ここで実験する値 |
|:----------|:----------------|:------------|
| -a | アプリID |82 ※IDはURLに表示されています。 |
| -d | サブドメイン名 |sample.cybozu.com ※サブドメイン名は各自異なります。
| -t | APIトークン |igvyXy87s9i1TvwBERABCnxZlNYXsba7d9zM6N7w ※アプリの管理画面から発行できます。|
それぞれの値は環境によって異なります。
データを取得してみる
ここでは Linux上で実行してみました。
$ ./cli-kintone -a 82 -d sample -t igvyXy87s9i1TvwBERABCnxZlNYXsba7d9zM6N7w
「Permission denied」となったら、実行権限が問題かもしれませんので、おまじないを。
$ chmod +x cli-kintone
実行してみましょう。
$ ./cli-kintone -a 82 -d sample -t igvyXy87s9i1TvwBERABCnxZlNYXsba7d9zM6N7w
*,"$id","$revision","SubTitle","Title","Number"
*,"1","1","サブタイトル1","タイトル","100"
,"1","1","サブタイトル2","タイトル","100"
表示されました!
先頭の「*」が行単位を示していますね。
いよいよ本題!サブテーブルに読み込んでみる
読み込むCSVファイルの中身はこんな感じ。ファイル名は「import.csv」
*,"Title","Number","SubTitle"
*,"タイトル2","200","サブタイトル2-1"
,"タイトル2","200","サブタイトル2-2"
実行してみる。
$ ./cli-kintone -a 82 -d sample -t igvyXy87s9i1TvwBERABCnxZlNYXsba7d9zM6N7w -f import.csv
CSVに書き出してみる
>> output.csv を追加するだけです。
$ ./cli-kintone -a 82 -d sample -t igvyXy87s9i1TvwBERABCnxZlNYXsba7d9zM6N7w >> output.csv
CSVが文字化けする・・・
「-e sjis」を追加しましょう。
$ ./cli-kintone -a 82 -d sample -t igvyXy87s9i1TvwBERABCnxZlNYXsba7d9zM6N7w -e sjis >> output.csv
応用でシェルスクリプトにしてみよう
定期的にCSVファイルに出力するためにスクリプトファイルを作ってみましょう。
Linux の場合
以下のシェルスクリプトをUTF-8で保存しましょう。
ここでのファイル名は「output.sh」にしておきます。
#!/bin/sh
# set config
APP_ID="82"
SUB_DOMAIN="sample"
API_TOKEN="igvyXy87s9i1TvwBERABCnxZlNYXsba7d9zM6N7w"
#OUTPUT_TYPE="sjis"
OUTPUT_TYPE="utf-8"
CLI_FILES="cli-kintone"
# find files
BASE_DIR=$(cd $(dirname $0); pwd)
if [ ! -f "$BASE_DIR/$CLI_FILES" ]; then
echo "Not found $CLI_FILES files."
exit 1
fi
# select fields
OUTPUT_FIELDS="" #select all fields
#OUTPUT_FIELDS="\$id" #sample:\$id,Title,Number,...
# set datetime file
DATETIME=`date +%Y%m%d%H%M%S.%2N`
OUTPUT_FILE="output$DATETIME.csv"
OUTPUT_PATH=$BASE_DIR/$OUTPUT_FILE
# excute
./$CLI_FILES -a $APP_ID -d $SUB_DOMAIN -t $API_TOKEN -e $OUTPUT_TYPE -c "$OUTPUT_FIELDS" >> $OUTPUT_PATH
echo "Output file: $OUTPUT_FILE"
echo "Finished."
シェルスクリプトを実行してみる
$ ./output.sh
できた!!
output2015~.csv というファイルです。
さいごに
いかがでしたでしょうか。WindowsやLinuxの定期タスクを使うとことで、定期的にデータの出し入れができ、基幹システムのフロントにkintoneを使うこともできそうです。