見出し画像

kintone制限値チャレンジ4 – ファイル読み込みの上限値。「ヘッダ行にハマる…」

今回調べたこと

制限値を超える行を持ったファイルの読み込みについて

kintoneのヘルプ「制限値一覧」では、読み込むCSVファイルは100MB 10万行まで、読み込むExcelファイルは1MB 1,000行までと書かれています。

例によって、「それ以上のファイル読み込みをさせたらどうなるのか?」
「エラーが出るのか出ないのか?」「制限値いっぱいまでは読み込んでくれるのか?」が知りたくなって、ファイルを作って読み込ませてみることにしました。

確認方法

まずは10万と1行のCSVファイルを作る

Excelで1行だけ作って、10万行コピペするのもアリですが、指が疲れるので、ExcelVBAを書いてマクロで作ってみようと思います。
読み込ませるアプリはkintoneアプリストアにある「顧客リスト」にしました。下記のURLで見つけることが出来ますよ。

https://{使ってるドメイン名}.cybozu.com/k/#/market/app/797

プログラムを考えるのが面倒なんで、ChatGPTくんにプログラム考えてもらいました。質問文はこんな感じ。

ExcelVBAで、次の項目を101行出力するプログラムを考えてください。
項目と値は、次の通りです。
項目:レコード番号, 値:1からの連番
項目:会社名, 値:"金都運総研"7桁の数字連番
項目:部署名, 値:"情報システム部"固定
項目:担当者名, 値:"金都太郎"固定
項目:郵便番号, 値:"5010001"固定
項目:住所, 値:"東京都××××"固定
項目:TEL, 値:"090-××××-××××"固定
項目:FAX, 値:"050-××××-××××"固定
項目:メールアドレス, 値:"kinto_taro@example.com"固定
項目:備考, 値:"hogehoge"固定
項目:顧客ランク, 値:"A"固定

出てきたプログラムはこんな感じ。(ちょこっとだけ修正しました。)

Sub ikkatsuSyutsuryoku()
    Dim ws As Worksheet
    Dim rowNumber As Long
    Dim recordNumber As Long
    Dim companyName As String
    Dim postalCode As String
    Dim address As String
    Dim tel As String
    Dim fax As String
    Dim email As String
    
    Set ws = ThisWorkbook.Sheets("Sheet1") ' データを書き込むシートの名前
    rowNumber = 2 ' データを書き込む行番号の初期値
    recordNumber = 1 ' レコード番号の初期値
    
    ' ヘッダー行書込
    ws.Range("A1:K1").Value = Array("レコード番号", "会社名", "部署名", "担当者名", "郵便番号", "住所", "TEL", "FAX", "メールアドレス", "備考", "顧客ランク")
    
    ' データを生成し書込
    Do While rowNumber <= 100002
        companyName = "金都運総研" & Format(recordNumber, "0000000")
        postalCode = "5010001"
        address = "東京都××××"
        tel = "090-××××-××××"
        fax = "050-××××-××××"
        email = "kinto_taro@example.com"
        
        ws.Cells(rowNumber, 1).Value = recordNumber
        ws.Cells(rowNumber, 2).Value = companyName
        ws.Cells(rowNumber, 3).Value = "情報システム部"
        ws.Cells(rowNumber, 4).Value = "金都太郎"
        ws.Cells(rowNumber, 5).Value = postalCode
        ws.Cells(rowNumber, 6).Value = address
        ws.Cells(rowNumber, 7).Value = tel
        ws.Cells(rowNumber, 8).Value = fax
        ws.Cells(rowNumber, 9).Value = email
        ws.Cells(rowNumber, 10).Value = "hogehoge"
        ws.Cells(rowNumber, 11).Value = "A"
        
        rowNumber = rowNumber + 1
        recordNumber = recordNumber + 1
    Loop
    
    MsgBox "データの生成が完了!"
End Sub

上記をExcelのVBAの標準モジュールにコピペしてマクロ「ikkatsuSyutsuryoku」を実行すれば、1分かからずに10万と1行が出来上がりました。ファイル名で名前を付けて保存で、拡張子を*.csvにすれば、10万1行のデータが入ったcsvファイルの完成です!

レコード番号を連番で出したので、ちゃんとデータが10万①行あることがわかります。

ファイルを読み込ませてみる

次に[顧客リスト]アプリの[オプション]ボタンをクリックし、[ファイルから読み込む]メニューをクリックします。

※もしメニューが出なかったら、アプリのアクセス権を確認してみてください。

[ファイルから読み込む]ページが表示されるので、[参照]ボタンをクリックします。

※この画面はまだ”イマドキ”のkintone画面になっていないんですねー。。。

[開く]ダイアログが表示されるので、作ったcsvファイルを選択して、[開く]ボタンをクリックします。

お!読み込めなかった・・・画面左上に小さく[一度に読み込める行数の上限(100,000行)を超えています。行数を減らしてください。]とメッセージ表示がされました。

ボタンがイマドキでないから、メッセージもイマドキのじゃなかったです。ちょっとだけ残念~。

ここまででわかったこと

制限値を超えるcsvファイルの読み込みは、[読み込み]ボタンをクリックする手順より前に、行数がチェックされてエラーメッセージが表示されることがわかりました。10万行分は読み込んでくれるとかではないんですねー。

次に10万行のCSVファイルを作る

次は制限値ギリギリを読み込ませてみます。csvファイルは先ほどのファイルの最終行を1行だけ削除したものを使います。

データ数はきっちり10万行です。

ファイルを読み込ませてみる-その2

先ほどと同じ方法で[顧客リスト]アプリに読み込ませてみました。
・・・しかしながら結果は下図のとおりです(泣

結果が変わらない!

盲点だった”見出し行”の存在

原因は下図の赤枠部分にありました。

つまり制限値の「10万行」というのは、見出しとかデータとかに関係なく、「とにかく行数が10万行」ということなんです。だから続けるには、下記のどちらかを選択しなければなりません。

  1. 見出しを削って、データのみの10万行のファイルにする。

  2. データを削って、データが99,999行のファイルにする。

よほどのことがない限り、データ削るなんてありえないので、上記1の見出しを削って、データのみの10万行のファイルにすることを選択します。そうすると、次のステップで、アプリのフィールドと対応するファイルの列をすべて指定しなければなりません。

項目数が多いと苦行でしかないですー(汗

Excelブック形式(*.xlsx)でも同じか確認


同じでした。
ただメッセージがちょっと親切で、ヘルプに飛べるようになってました。

まとめ

kintoneアプリにファイルからデータを読み込むには制限があり、
予めそれを超えないようにファイルを用意しないとダメってことがわかりました。
また見出しも1行にカウントされるというのが、ハマりどころですね。

次回予告

じゃあ10万行のデータを読み込ますことは出来ないのでしょうか?
コマンドで kintone のレコード情報を入出力できるツール「cli-kintone」なら出来そうな気がします。
次回
cli-kintoneで10万行のデータを読ませられるか? 
にチャレンジ☆彡

この記事が気に入ったらサポートをしてみませんか?