Help us understand the problem. What is going on with this article?

kintoneコマンドラインツールでサブテーブルを操作してみた

More than 1 year has passed since last update.

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行)

レコード登録画面はこんな感じ

フィールド名とフィールドコードを同じにしています

img_20151224213920.png

レコードを登録してみよう

こんな感じでサブテーブルにもデータを登録します。

img_20151224214211.png

コマンドラインツールに必要な情報は控えておく

パラメータ ここで実験する値
-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

読み込めました!
img_20151224224905.png

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 というファイルです。
img_20151224215913.png

さいごに

いかがでしたでしょうか。WindowsやLinuxの定期タスクを使うとことで、定期的にデータの出し入れができ、基幹システムのフロントにkintoneを使うこともできそうです。

ushiron
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away