コマンドラインツールを使って複数テーブルのダウンロード

背景・実現したいこと

お世話になります。初めての投稿につき、不慣れな点がありますが、ご容赦下さい。

アプリ内のすべてのデータ(フィルターを「すべて」にして)を「ファイルの書き出し」を使い、すべての項目を書き出す作業をコマンドラインツールを使って行いたいのですが、手動で書き出したデータとコマンドラインツールを使って書き出したデータの件数が一致しません。

これについてご教授願いたく存じます。

 

エラー情報 (開発者ツールのコンソール)

複数のテーブル(正確には1レコードに5つテーブルがあります)があるアプリに対してコマンドラインツールでダウンロードを実行。CSVは作成されます。

しかし、アプリから操作して(手動)ダウンロードした件数と一致しません。

 

利用したソースコード

cli-kintone.exe --export -a アプリ -d ドメイン -u ユーザー -p パスワード > CSVファイル名 

SKH_大西さん

こんにちは。

 

オプションに指定したユーザーが一部レコードに権限を持っていないということはないでしょうか。

以下のようにAPIトークンで実行してみていかがでしょうか。

cli-kintone.exe --export -a アプリID -d サブドメイン名.cybozu.com -t APIトークン -e sjis > export.csv

koichi様

迅速なアドバイスありがとうございます。

コマンドラインツールで使用するユーザーとアナログで対応したユーザーは同じもので使っております。

またライトプランにつき「APIトークン」が使えないため、何とかこの方法で実現したいのですが、方法はありますでしょうか?

すみません、私の認識が違っていました。

複数の「テーブル」の件数が異なるでしたね。

 

「ファイルに書き出す」から出力したCSVはテーブル別に行が分かれます。

1つのレコード内にテーブル1が3行、テーブル2が6行あれば、出力結果は計9行になるはずです。

 

しかし、コマンドラインツールcli-kintoneで出力したCSVでは同じ行に入るようで

上記の例ですと、一番行数の多い6行になるはずです。

 

レコードとしては全て出力できますが、行数が異なるというのは上記の通り、仕様の違いと思われます。

再度、出力結果を確認されてみてください。

koichi様

ありがとうございます。

おっしゃる通り「ファイルに書き出す」の場合はテーブル内のレコードは「そのレコードのみ」のレコードで出力されるのに対し、コマンドラインツールの場合、テーブル内のレコードが一番多い件数に合わせて出力されているようです。

ただし、コマンドラインで

cli-kintone.exe --export -a アプリ -d ドメイン -u ユーザー -p パスワード > CSVファイル名

cli-kintone.exe --import -a アプリ -d ドメイン -u ユーザー -p パスワード  -e sjis -f CSVファイル名

と立て続けに実行するとなぜかデータが抜け落ちたり、データの出力順序が変わります(エラーは出ず、インポートもエクスポートもできます)

トラブルシューティングの内容が変わる場合は改めて立て直してコメントにしようと思いますが、これについても「仕様」と捉えるしかないのでしょうか、、、?

cli-kintone.exeの内部でAPI処理を行っているはずですので、データが抜け落ちるのは、そのAPI処理に失敗している可能性があります。

 

データの出力順序が変わるのも仕様だと思います。

オプション「-c」でフィールドを指定すれば、この順で出ます。

 

例)

-c “$id,タイトル,日付,テーブル1,テーブル2,テーブル3,テーブル4,テーブル5”

koichi様

ありがとうございます。

>cli-kintone.exeの内部でAPI処理を行っているはずですので、データが抜け落ちるのは、そのAPI処理に失敗している可能性があります。

これについては失敗を確認して対応する方法はあるのでしょうか?

データの出力順序が変わる事については承知しました。

途中で失敗した結果は出ないと思います。

cli-kintoneの開発者に向けてGithub上でIssueを投稿すれば何か助言いただけるかもしれません。

koichi様

色々と対応ありがとうございました。

検討してみます。