カテゴリー内の他の記事

第2回 レコードの登録・削除をしてみよう

フォローする

(著者:Cstap 瀧ヶ平 充

はじめに

こんにちは、第2回から「はじめようkintoneコマンドラインツール」シリーズを担当させていただきます。サイボウズスタートアップスの瀧ヶ平です。

前回の記事で、cli-kintoneの導入とレコードの取得について理解していただけたと思います。
※この先kintone コマンドラインツールはcli-kintoneと表記します。

今回も引き続きフィールドコードをカスタマイズした顧客リストアプリを利用して、レコードの追加と削除のやり方を紹介します。

レコードの追加

STEP1 追加するレコードのデータをCSVファイルで用意する

まずは追加するレコードのデータのCSVファイルを作成しましょう。

このとき、必須項目以外のフィールドは入力しなくても問題ありません。

今回はこの内容をcustomers.csvとし、文字コードをShift-JISにして保存します。

STEP2 レコードを追加する

レコードを追加するときは、認証のオプションに加えて -f オプションでファイルを指定して追加します。

このとき作成したレコードのファイルのエンコーディングを出力時と同様に -e オプションで指定します。

今回はShift-JISで作成したのでsjisを指定しましょう。

実行ファイルと同じ場所に customers.csv を保存した場合

customers.csv のファイルパスを指定する場合

レコードを削除した後にレコードを追加

STEP1 全てのレコードを削除してからレコードを追加する

cli-kintoneでレコードを削除してからレコードを追加する際には -f オプションを利用した上で -D オプションを利用します。

このときクエリで絞り込みをしない場合すべてのレコードを削除してからレコードが追加されます。

STEP2 クエリで絞り込みをしたレコードを削除してからレコードを追加する

レコード追加前に一部のレコードのみを削除したい場合、-q オプションを使って削除対象レコードをクエリで絞り込んでから実行する必要があります。

クエリの書き方は前回の取得の時と同様にこちらを参考にしてください。

今回は担当者名に「瀧ヶ平」を含む最新5件のレコードを削除してから、新たにレコードを追加してみましょう。

STEP3 レコードの追加をせず削除のみ行う

空のCSVファイルを作成し、-f オプションで指定した上で -D オプションを利用すればレコードを追加せずに削除することができます。

空のCSVファイルempty.csvはWindows環境では

とすることで、

MacやLinux環境では

または

とすればコマンドライン上で作成できます。

テーブルを含むレコードを追加する

こちらも前回と同様交通費申請アプリを使って確認しましょう。

STEP1 テーブルを含むレコードのCSVファイルを作成する

テーブルを含むレコードを追加する場合は、テーブルを含むレコードを取得したCSVと同じように、フィールドコードの行と各レコードの1行目の最初に*,を追加します。

既にあるレコードをcli-kintoneでエクスポートしたものを参考にCSVを作成すると間違いなく作れるかと思います。

この内容をsubtable.csvとしてShift-JISで保存しましょう。

STEP2 CSVファイルを指定してレコードを追加する

テーブルを含まない場合と同様に、 -f オプションでファイルを指定してレコードを追加します。

注意ポイント:チェックボックスや複数選択で複数チェックが入る場合のCSV表現

今回のサンプルアプリにはありませんでしたが、フィールドに複数の値が含まれる場合は "" 内に改行区切りで選択される値を表記する必要があります。

Excelなどで確認するとセルの中で改行されている形で表示されるかと思います。Excelで編集する場合はAlt + Enterを押すことでセル内で改行することができます。

テーブル内でも同様で、テーブルの行内当該のフィールドの値を "" 内改行区切りで選択される値を表記します。

CSV表現の例

records_contains_checkbox_multiselect.PNG

上の画像のレコード2件の場合、次のCSVで表現できます

▼ エクセルで表示した場合

records_contains_checkbox_multiselect_excel.PNG

CSV表現の例(テーブル内のフィールドの場合)

records_contains_checkbox_multiselect_table.PNG

上の画像のレコード2件をCSVで表現する場合以下になります。

▼ エクセルで表示した場合

records_contains_checkbox_multiselect_table_excel.PNG

レコードが正しく追加されてない場合のデバッグ方法

概ねエラーメッセージに対応すればエラーは解消されるとは思いますが、cybozu.com 共通管理から実行されたリクエストを見ると問題が特定しやすいです。

kintoneの右上の歯車のマークのメニューから「cybozu.com共通管理」へ移動し、左のカラムの「システム管理」内「監査ログ」の「閲覧とダウンロード」に移動します。

こちらの監査ログの一覧を見ると、レコード操作やその成否が、また表左の「i」マークをクリックすると詳細なレコード操作の内容が確認できます。

こちらを見て、cli-kintoneからリクエストが届いているか、どのようなエラー内容が出ているかを見ることでうまくいかない原因を探しやすくなりますね。

第2回はここまでです。レコード追加と削除、いかがでしたでしょうか?
次はレコードの更新をやっていきます、お楽しみに。

記事に関するフィードバック

直接的に記事と関連がないご質問はcybozu developer コミュニティをご活用ください。

Avatar
林田平祐
林田平祐により編集されました
Avatar
i.ohishi

テーブルデータのインポートをしてみたのですが、

”*”の有無にかかわらず、1行=1レコードとして登録されてしまいました。

権限の問題で監査ログを見ることもできません。

CSV作成の際、注意することはありますか?

Avatar
瀧ヶ平

i.ohishiさん
cstapの瀧ヶ平です。

こちらでは再現していないのですが、可能であればCSV及びアプリのフォーム設定など教えていただけますでしょうか?

コメント欄では"*"が全角になっていますが、半角の"*"であれば問題なくインポート出来るはずです。
エラーが出ているのではなく1行1レコードとなってしまっているのであればおそらくCSV自体の書き方は問題ないはずなので、テーブル化する*の部分の問題かと思います。

Avatar
h.yamada

STEP1 全てのレコードを削除してからレコードを追加する の質問です。

cli‐kintoneコマンドで-Dオプションを利用すると、DB上の既存レコードが全て削除されますが、次に追加レコードのレコード番号は、更新されていき-Dオプションで削除されたレコード番号は、欠番になる動作仕様のようです。ある意味、当たり前の動作だと思いますが、レコード番号をリセットしたい場合があります。

cli‐kintoneコマンドで -Dオプションで全レコードを削除後に、レコード番号=1にリセットし、追加登録する方法をご存知の方がいれば教えてください。

 

 

Avatar
瀧ヶ平

h.yamadaさん
cstapの瀧ヶ平です。

レコード番号をリセットしたいのであれば、-Dオプションで全て削除してから行うのではなく、新たに登録するID1から始まるレコードをレコードの更新によって行い、
レコードを更新した後、更新したレコードを除くレコードを-qオプションのクエリで絞り込み、-Dオプションで削除する方法で実現するのが良いかと思います。

この方法ではリビジョンなどの情報はリセットされず、これを実行した後に新たに登録する場合はレコードIDは削除済みのレコードのID+1の値から始まります。
そもそもkintoneでは削除したレコードのIDを埋めるようにレコードを作成するのは無理そうなので、これが限界かと思います。

欠番が出ることが問題なのであれば、自動採番プラグインを用いてレコードIDとは別の番号で管理するなどの代替案はどうでしょうか?

参考になれば幸いです。

 

Avatar
h.yamada

cstap:瀧ヶ平さん、

レコード番号をリセット設定するコマンドや設定手段はやはりなさそうですね。

レコード削除があってもレコード番号で綺麗に欠番なく管理するプログラムは少し面倒そうなので、アドバイスを受けた方法などで工夫してみます。

> そもそもkintoneでは削除したレコードのIDを埋めるようにレコードを作成するのは無理そう

アドバイス、ありがとうございした。

 

ログインしてコメントを残してください。
Powered by Zendesk