kintone のデータを外で集計する前に|画面の件数と合計を控えて、取り出した数と合わせる
kintone のデータを表計算・BI・BigQuery で集計するときは、取り出す前に kintone の画面で全件の件数と合計を控え、取り出したデータと照らし合わせます。レコードをまとめて受け取る問い合わせは一度に500件までで、1回だけ500件まで頼む作りでは、エラーにならないまま500件で止まり、合計は約6割足りませんでした。取り出している途中で更新が入り、取り終えた直後の件数とは合ったまま合計がずれた例も示します。
目次 クリックで開く
たとえば、週の営業会議の前に、kintone の受注明細を表計算や BI のツールに取り込み、月ごとの売上を集計しているとします。取り込みは毎朝自動で動き、表はきれいに埋まっている。ただ、その合計が kintone の画面で見える合計と同じかどうかは、誰も確かめていない――。
説明のために、当社の検証用の kintone に架空の受注明細を1,200件入れたアプリを作り、取り出し方を変えてデータを取り出してみました。このあとの当社の画面と数字は、このアプリのものです。1回の問い合わせで500件まで頼む作りでは、取れたのは 500件、金額の合計は 120,323,100円で、全件の 300,104,800円より 179,781,700円(約6割)少ない数字でした。件数を指定しないと、100件で止まりました。どちらもエラーにはならず、返ってきたデータに「足りない」と知らせる項目もありませんでした。レコードをまとめて受け取る問い合わせでは、全件の数は頼んだときにだけ返り、この2回は頼んでいたので「1200」が返っていました。取れた行の数をその全件の数と比べないかぎり、足りないことには気づけません。
kintone 向けのプラグインを提供し、kintone と外のツールの連携も手伝っている当社がこの記事で書くのは、取り出したデータを受け取って集計する人が、全件そろっているかを自分で確かめるやり方です。取り出す前に kintone の画面で件数と合計を控え、取り出したデータと照らし合わせます。
集計したい数字を、kintone の画面でも同じ範囲で数えられるようにする
最初に決めるのは、外で出したい数字が、どのアプリの、どの範囲の、どの項目の合計かです。ここでは「受注明細のアプリの、全期間の、金額の合計と件数」にします。月ごとに集計するなら、月の区切りを受注日にするのか、登録した日にするのかも決めておきます。
範囲を先に決めるのは、kintone の画面で控える数字と、外で集計する数字の範囲をそろえるためです。範囲が違えば、どんなに丁寧に照らしても数字は合いません。この記事では、全期間の件数と合計を控えて照らします。
取り出す前に、件数と合計を控える
件数は、一覧の右上に出ています。この画面では「1 – 20 (1200件中)」でした(①)。
合計は、kintone のグラフの「表」で出します。kintone ヘルプの「グラフを作成する」と、設定例の「当月の売上額を集計する」に書かれている流れは、一覧の画面で「集計する」のアイコンを押し、グラフの種類に「表」を選び、「集計方法」を「合計」と金額の項目にして、「保存する」か「適用」を押す、というものです。表は「レコードを分類せずに集計する」こともでき(「グラフの種類と使い分け」)、分類しなければ、全件の合計が1つの数で出ます。「保存する」のボタンはアプリの管理権限がある人にだけ出て、権限が無ければ「適用」で、その場限りの表として見られます。
当社が控えに使った表は、分類を付けずに、レコード数と金額の合計を並べたものです。全件の件数と合計が1行に出ます(①)。この表は上の画面の手順ではなく、アプリの設定を変える仕組みで作りました。
ヘルプには、グラフで集計されるのは、表示する人が閲覧の権限を持つレコードやフィールドだ、とも書かれています。控える人と、取り出しに使うアカウントで見られる範囲が違えば、その分だけ数字は合わなくなります。控えるのは、取り出しに使うアカウントと同じ範囲を見られる人にします。
受注日の月で分類した表も作りました。月ごとの件数と合計は、9か月とも元のデータから数えた値と一致しましたが、全体の総計の行は出ませんでした。全件の控えは分類を付けない表で取り、月別の表は、外の集計を1か月ずつ合わせるときに使います。ヘルプによると、分類に使う項目が空のレコードは集計に入らないので、受注日が空のレコードがあれば、月別の表を足しても全件の合計にはなりません。どちらの表も「保存する」で残しておけば、次からは開くだけです。
控えは、表計算に「照らし合わせの表」を1枚作って書いておきます。行は件数と金額の合計の2つ、列は画面で控えた値・取り出したデータ・差の3つで、表の上に、控えた時刻、取り出し終えた時刻、アプリ、一覧の絞り込みを書きます(照らし合わせの節の図と同じ形です)。控えるのは、取り出す直前にします。控えてから取り出し終えるまでの間に誰かが入力すると、その分だけ数字がずれるからです。その間に直されたレコードがあるかは、レコードの「更新日時」が2つの時刻の間に入るかで見分けられます(消されたレコードは、これでは分かりません)。
取り出し方を選ぶ。1回だけ取る作りは、エラーにならずに500件か100件で止まる
kintone からデータを取り出す道は、大きく2つあります。1つは、一覧の右上の「…」から「ファイルに書き出す」を選んで、CSV ファイルにする方法です。一覧を「(すべて)」にしたまま、既定の設定で書き出すと、1,200件、金額の合計 300,104,800円で、控えと一致しました。
書き出しの画面には、書き出されるレコードは「レコード一覧画面で適用されている絞り込み条件に応じます」と書かれています(①)。範囲を絞って集計するなら、一覧の絞り込みを、最初に決めた範囲と同じにしてから書き出すことになります。文字コードの既定は Shift-JIS で(②)、取り込む先によっては文字が化けます(BigQuery に入れる場合は日本語の CSV の文字化けを確かめる記事に書きました)。日付は「2026/09/16」の形で書き出され、このあとの問い合わせで取った日付(「2026-09-16」)とは形が違いました。2つの取り方のデータを混ぜるときは、日付の形をそろえてから合わせます。書き出したファイルは「出力されたファイル」の画面に置かれ、削除される日時が書き出しの3日後と表示されていました。
もう1つは、自作の仕組みや、連携のツールのつなぎ込みのように、kintone に問い合わせてデータを受け取る方法です。当社が試したのは、自分で書いた問い合わせです。ここで知っておきたいのが、レコードをまとめて受け取る問い合わせ(cybozu developer network の「複数のレコードを取得する」)は、一度に返すのが500件までで、件数を指定しなければ100件、という決まりです。500件を超えるアプリから全件を取るには、レコード番号の小さい順のように並べ方を決めて続きを順に取るか、取り出す対象を最初に固定して少しずつ受け取る作りが要ります。
取り出し方ごとの結果が、次の図です。続きを順に取った2つ目は、レコード番号の小さい順を指定して、500件ずつ3回に分けて取りました。
図の下の2つが、1回だけ取った場合です。500件より多く頼んだときは「500 以下の値を指定してください」というエラーで止まりましたが、足りないときはエラーになりません。
しかも、どの500件が取れるかは並べ方で変わります。並べ方を指定しないと、kintone は新しく登録した順に返し(公式の言い方では「レコードIDの降順」)、取れたのは新しいほうの500件でした。明細番号の小さい順に並べて取ると、取れる500件は入れ替わり、合計は 127,381,400円になりました。取り出した表だけを見ていると、どちらの場合も「データはある」ように見えます。
表計算・BI・BigQuery の連携のツールが、中でどう取っているかは、取り出したデータの側からは分かりません。だから、取り出したあとに、控えと照らし合わせて確かめます。
取り出したら、件数と合計の両方で控えと照らし合わせる
取り出したデータの行数と、金額の列の合計を出し、照らし合わせの表の「取り出したデータ」の列に書きます。差の列で見るのは、件数の差と合計の差の2つです。
差が0なら、そのデータで集計に進みます。差があったら、会議の資料には使わず、次の順に見ていきます。一覧の絞り込みと、外で取り出した範囲が同じか。控えてから取り出し終えるまでに、入力や更新が無かったか。取り出し方が全件を取る作りになっているか。上の図の左のように、取り出した件数がちょうど500件や100件で止まっていれば、3つ目を疑います。
月ごとに集計する場合は、外の月別の合計を kintone の月別の表と1か月ずつ並べると、どの月で差が出ているかまで分かります。全件の差が0でも、月の区切り方(受注日か登録日か)が違えば、月ごとの数字はずれます。
取り終えたあとの件数と比べるだけでは見逃す。取り出している途中で更新が入ったとき
件数だけでなく合計も照らすのは、件数が合っていても中身がずれていることがあるからです。並べ方を指定せずに(つまり新しい順で)500件ずつ続きを取り、1回目と2回目の間に、kintone の側で1件の金額を直し、1件を足してみました。上の図で全件と一致した、レコード番号の小さい順を指定する取り方とは、並べ方が違います。
取れた行数は 1,201件でした。取り終えた直後の kintone の件数(一覧でも、問い合わせが返す全件の数でも 1,201件)と比べると、同じです。このあとの節で書く、取り終えたときに kintone が返す全件の数と比べる仕組みなら、ここで「合っている」と判断したはずです。ところが中身を見ると、1回目の最後に取った D0701 を2回目の最初にもう一度取り、足した1件は取れていませんでした。新しい順なので、足した1件は先頭に入り、それまでの順番が1つ後ろへずれたと考えられます。重複と取りこぼしが1件ずつで件数は合ったまま、合計は、取り終えた直後の kintone の合計 300,254,800円より 41,000円少ない 300,213,800円でした。
前の節の手順で控えるはずの、取り出す前の値と比べるとどうなるか。記録の控え(1,200件・300,104,800円)と取れた値(1,201件・300,213,800円)の差を計算すると、件数は1件、合計は109,000円多く、差は出ます(記録の値から計算したもので、この比べ方を画面で行ったわけではありません)。ただ、この差には、途中で入力された分と、取り方がずれた分が混ざっていて、差だけでは見分けられません。見分けるには、取り終えた直後にもう一度画面で控え、その値とも並べます。取り終えた直後の値と比べて合計だけがずれていれば、取っている最中の入力で、取れたレコードがずれたか、取ったあとに値が直されたとみて、取り出しをやり直します。
取り出す対象を最初に固定して少しずつ受け取る作りなら、受け取るのは「作成した時点で取得対象だったレコード」だと公式に書かれています。ただし、項目の値は受け取った時点のものが返ります(「カーソルからレコードを取得する」)。途中で金額が直されれば、その分は控えとずれうるということです。
だから、取り出すのは入力の少ない時間にし、控えは取り出しの直前に取ります。
毎週回すなら、全件を取る作り・取り出す時刻・照らし合わせを仕組みに入れる
毎週・毎朝の取り込みを、そのたびに手で照らし合わせるのは手間がかかります。ただ、今回の取り出しで kintone が一緒に返したのは全件の件数まで(まとめて受け取る問い合わせでは頼んだとき、対象を固定する取り方では固定したとき)で、金額の合計は返ってきませんでした。件数の照らし合わせは仕組みに入れられますが、前の節のとおり、取り終えたときの件数と比べるだけでは途中の更新を見逃しますし、合計の控えは、画面の表を開いて書く手作業が残ります。そこで仕組みには次の3つを入れ、合計で照らす回数が少ない分を、取り出す時刻と取り出し方で補います。
- 全件を取る作り。レコード番号の小さい順を指定して500件ずつ続きを取るか、対象を固定して受け取る。取り終えたら、取った件数を、kintone が一緒に返す全件数と比べる。
- 取り出す時刻。入力や更新が止まっている時間(夜中や早朝)に取り出す。前の節のずれは、取り出している最中の入力から起きたものです。止まっている時間は、レコードの「更新日時」が集まっていない時間帯から決めます。
- 照らし合わせ。取り出した直後に件数と合計を出し、照らし合わせの表を、控えた時刻と取り出し終えた時刻を付けて1枚ずつ残す。件数が全件数と違えば、その日の集計は止めて知らせる。合計は週に1回、取り出しの直前と取り終えた直後に画面の表で控え、その回の表に書き入れる。
連携を業者や社内の担当に頼んでいるなら、次の3つを聞いてみてください。答えが曖昧なら、取り出した件数と kintone の件数を1回並べてみるだけでも確かめられます。
- 500件を超えるアプリから、全件を取る作りになっていますか(レコードをまとめて受け取る問い合わせは、一度に500件まで、指定しなければ100件。公式の解説は、全件を取る方法として「レコードIDを利用する方法」「カーソルAPIを利用する方法」と、開始位置 offset をずらして取る方法を挙げています)。
- 取った件数を、kintone が返す全件数(totalCount)と、どの時点で比べていますか。違ったときは止まりますか、知らせが来ますか。
- 件数が1万件を超えたとき、取り出しの途中で更新が入ったときは、どう扱いますか(offset をずらして取る方法は、開始位置が1万件までです。2020年7月の定期メンテナンス以降に作られた環境が対象です。1万件を超えるときの取り方も、同じ公式の解説にあります)。
取り出したあと BigQuery に入れて集計する場合の、止まりやすい所と集計の間違いはkintone と BigQuery の連携の記事に、控えた合計と取り込んだデータを突き合わせる同じ考え方を広告のデータでやった例はYahoo!広告のデータを BigQuery に入れる記事に書きました。
この照らし合わせが受け持たないこと
照らし合わせで分かるのは、取り出したデータの件数と合計が、控えたときの kintone と同じかどうかまでです。件数と合計が両方合っても、見えない差は残ります。途中の更新で起きた重複と取りこぼしは、2件の金額が違ったので合計に出ましたが、同じ金額の2件で起きていれば、件数も合計も合ったはずです。担当や商品区分のような金額以外の項目の取り違えや、月の割り振りのずれも、全件の件数と合計には出ません。月ごとに使う数字なら月別の表と並べるように、使う切り口の数字は、その切り口で照らします。kintone に入っている値そのものが事実と合っているかも、この照らし合わせの外です。
当社が試したのは、1,200件のアプリだけです。控えに使ったグラフの表は2つとも API で作ったので、合計の表を作る画面の手順は kintone ヘルプによるもので、当社は画面では作っていません。レコード数と合計を1つの表に並べる画面の設定も確かめていません。一覧やグラフで範囲を絞ったときの控え方、一覧で絞り込んで書き出したときの件数、画面からの書き出しで1つのファイルに出る件数の上限、表計算・BI・BigQuery の連携のツールで取れる件数、「更新日時」で途中の更新を見分けたり、入力の止まる時間を決めたりする方法も、試していません。続きを順に取って全件と一致したのはレコード番号の小さい順を指定したときで、ほかの並べ方では試していません。途中の更新は、並べ方を指定しない取り方の途中に入れただけで、レコード番号の小さい順に取る途中や、対象を固定する作りの途中に更新が入った場合、1万件を超えるアプリからの取り出しは試していません。
この画面と図の作り方
当社の検証用の kintone に、明細番号・受注日・担当・商品区分・金額の5つの項目を持つアプリを作り、受注日が2026年1〜9月、金額が1,000〜499,900円のレコードを1,200件、乱数で入れました。取り出しは2026年10月17日に、操作ごとに1回ずつ行い、途中の更新も1回です。控えに使ったグラフの表2つ(分類なしと、受注日の月で分類したもの)は、アプリの設定を変える REST API で作っています。取り出しに使ったのは、画面の「ファイルに書き出す」(既定の設定)と、画面の中から呼んだ REST API です。「複数のレコードを取得する」では、query の limit を書かない場合(100件)、limit 500(500件)、limit 501(エラー GAIA_QU01「limit には 500 以下の値を指定してください。」)、order by 明細番号 asc limit 500(D0001〜D0500)、order by $id asc で limit 500 の offset を 0・500・1000 と3回です。limit を書かない場合と limit 500 の2回は totalCount を true にして呼び、どちらも全件数「1200」が返りました(false か省略なら null が返る、と公式にあります)。対象を固定する取り方は、「カーソルを作成する」(size 500)のあと「カーソルからレコードを取得する」を3回で、カーソルの作成でも totalCount「1200」が返りました。途中の更新は、並べ方を指定せずに limit 500 の offset で取る1回目と2回目の間に入れ、取り終えた直後の全件の件数と合計は、カーソルで全件を取り直して出しました。
まずは、次に集計する前に件数と合計を控える
次に kintone のデータを外で集計するとき、取り出す前に、一覧の件数と、グラフの表の合計を照らし合わせの表に書いてください。取り出したデータの行数と合計をその横に並べれば、足りているかどうかは差の列で分かります。
取り出すたびに件数と合計を照らし、差が出たら止めて知らせるところまでを毎週の仕組みに組み込むなら、当社のデータ分析・BI の支援で一緒に作れます。
kintone導入・内製化支援
kintoneを現場の業務に合わせて設計・構築し、Excelや紙業務の置き換え、他システムとのデータ連携、社内メンバー自身が改修・運用できる内製化までを支援します。
