kintoneからBigQueryとSpreadSheetに連携するシステムを構築しました!

Posted date at 2024-09-21

Node.js

GAS

GoogleCloud

title.png

 kintoneアプリのレコード情報をBigQueryとスプレッドシートに定期的に更新する仕組みを構築しましたので共有します。LookerStudioや将来的にはAIでの分析業務に使用できればと思います。受注データと受注データ1~22が連携済みです。もちろんアプリ開発にも使用できると思います。


🚀成果物の場所

 以下の場所に、成果物を置いています。BigQueryはプロジェクトにユーザまたは特定のユーザグループを登録すれば、LookerStudioから接続できます。

🐡BigQueryの場所

bq_location.png

 参考:実際のテーブルの画面

bq_location2.png


🐡スプレッドシートの場所

sp_location.png

 


🚀開発したもの

 kintoneからレコードを取得し、BigQueryとスプレッドシートに書き込むスクリプトを作成しCloud環境にデプロイしました。

 A@受注データ1~22はGASでシンプルにデプロイし、トリガで定期実行しています。A@受注データはレコード数が膨大であったため、Node.jsでスクリプトを書き、CloudRun(ジョブ)でデプロイし、CloudSchedulerで定期実行しています。

 他のアプリもこれらのスクリプトを複製すれば比較的簡単に連携ができると思います。

scripts.png


🐡ApplicationIntegrationについて

 高すぎます。システム課なのでコードを書きましょう。

reason.png


🐡スプレッドシートの限界

 スプレッドシートで開発をしている方、知ってましたか?

sp_limit.png


 

🚀30万件のデータをどうやって連携する?

 大量の受注データをどうやって連携したかを記します。カーソルのタイムアウトが解消できず、シンプルなオフセットでレコード番号をなめていく方法で連携しました。最初から答えが出たわけではなく試行錯誤がありました。また、取得と書き込みを交互に行うことでメモリの消費量を減らしました(課金コストを減らすため)。

失敗例①

failure1.png

失敗例②

failure2.png

成功例

success.png

 


🚀連携を構築する上で面倒なこと

 テーブル定義の作成と連携時の型エラーの修正に時間がかかります。

points.png

 


🚀まとめ

 受注データの30万件をどう連携したらいいか試行錯誤するのに時間がかかってしまいました。一つの答えは出たので、あとはこれを横展開すればいいと思っています。GASは上記のフォルダにありますし、Node.jsは林のリポジトリにありますので、同じことをしたい方は言ってください。

 連携先のBigQueryとスプレッドシートは今回のものに追加してください。

←ホームに戻る