🗂

kintoneデータを一括でCSVバックアップするバッチファイル作成手順

2025/02/07に公開

記事概要

kintoneの複数アプリを指定して、一括でCSVにバックアップを取るバッチを作成したので構成を忘れないように記事にしました。予めバックアップを取りたいアプリ一覧をエクセルで準備しておくだけで、あとは勝手にバックアップを取ってくれるので結構便利かもしれません。

自社でもこの記事の内容を実現してみたい。という方がおみえでしたら、kintoneスポット開発無料相談フォームから、ぜひお問い合わせください。

運用イメージ

  1. バックアップ対象アプリのリストをエクセルで作ってCSVで保存します。
    CSVファイルイメージ
    項目は、ドメイン、アプリ番号、APIToken、バックアップ保存ファイル名の4項目。
    CSVファイルの中身

  2. バッチファイルを動かします。下図では手動で動かしていますが、Windowsのタスクスケジューラから自動で動かしてもよいです。指定してアプリについて1個ずつ自動でバックアップが取られます。

バッチファイル動作画面

  1. 当日日付のフォルダが作成されて、その中にkintoneのデータがCSVでフルバックアップされます。ファイル名には予め指定したファイル名とアプリ番号が入ります。

kintoneコマンドラインツール(cli-kintone)を使います。

kintoneコマンドラインツールをダウンロードして使用します。
ダウンロード方法、使用方法は下記を参照ください。
https://cybozu.dev/ja/id/76b6fac0aa419889bcafa67d/

完成版のファイル構成

下図3ファイルにより構成されます。
3ファイル名

  • BackupList.csv
     事前定義するアプリ一覧です。
  • cli-kintone.exe
     kintoneコマンドラインツール本体です。
  • kintone-backup.bat
     バッチファイル本体です。

バッチファイルの流れ

大まかなバッチファイルの流れです。

  1. 当日日付のフォルダを作成
  2. BackupList.csvをFor分でループ取込み
  3. 各項目を変数代入
  4. cli-kintone.exe に変数で引数を渡して実行
  5. エラーの時はエラーとわかるファイルを出力

個別要素記述控え

  1. 当日日付のフォルダを作成
    当日日付を取得して、mkdirでフォルダ生成します。
set "today=%date:~0,4%%date:~5,2%%date:~8,2%"
mkdir "%today%"
  1. BackupList.csvをFor分でループ取込み
    4項目を取り込む記述です。表題はスキップします。
for /f "skip=1 tokens=1-4 delims=," %%a in (BackupList.csv) do (
  1. For文の中で各項目を変数代入
    項目ごとに変数代入をします。
set "domain=%%a"
set "app=%%b"
set "token=%%c"
set "BackpFileName=%%d"
  1. cli-kintone.exe に変数で引数を渡して実行
    取得した変数をうまくつかって、cli-kintone.exeに渡します。出力はCSVに出します。
cli-kintone.exe record export --base-url !domain! --app !app! --api-token !token! > !today!\!BackpFileName!-!app!.csv
  1. エラーの時はエラーとわかるファイルを出力
if errorlevel 1 (
    echo Backup failed for !domain! !app!
    echo Failed > !today!\!BackpFileName!-!app!-Failed.csv
)

結果フォルダを見ればエラー発生が一目でわかるので安心ですね。
エラーファイルイメージ

まとめと所感

  • しばらくバックアップ運用をまわしてみたいと思います。
  • アプリ1個ずつにAPI Tokenを発行・設定する必要があるのが少し面倒な場合は、kintone ID/PASSWORDで作り変えてもいいかもですが、設定ファイルにID/PASSRODを記載していくのがセキュリティ的に嫌な方もいるかもしれません(API Tokenも同じといえば同じですが)。
  • 大量レコードをバックアップする場合、時間もかかりますし、kintoneのサーバー側にそれなりの負荷もかかると思いますので、適度な頻度で動かしましょう。

https://www.qloba.com/forms/9841

Discussion