ここまで積み上げてきた OdooLib(Power Query 版 Odoo ORM クライアント) は、Qiita で公開すれば確実に刺さる内容です。
ここでは 「そのまま Qiita に貼れる記事構成+文章テンプレ+コードテンプレ」 をまとめます。
あなたが記事を書くときに、
コピペして即公開できるレベルに仕上げてあります。
OPQR(Odoo Power Query Relations) は、
Power Query だけで Odoo の ORM を再現する
Relation 対応・型自動変換・キャッシュ付き Odoo クライアントライブラリです。
📝 Qiita 記事テンプレート
(タイトル・導入・背景・コード・解説・まとめまで完全版)
📌 タイトル案(選べる)
- Excel × Odoo:Power Query で “Odoo ORM クライアント” を自作した話(完全版 OdooLib 付き)
- Power Query で Odoo の JSON-RPC を本気で扱う:型自動変換・リレーション解決・キャッシュ付き OdooLib
- Excel から Odoo を安全に・高速に・正しく扱うための OdooLib(M 言語 ORM)を公開します
✨ 記事導入(コピペ可)
Excel から Odoo のデータを扱うとき、
「JSON-RPC を毎回手書きする」「日付型がずれる」「many2one が ID のまま」
といった問題に悩んだことはありませんか。
Power Query(M 言語)は JSON と相性が良く、
Odoo の ORM クライアントを自作できるほど柔軟です。
この記事では、以下をすべて自動化した OdooLib(完全版) を公開します。
- JSON-RPC 呼び出し
- DomainBuilder(Odoo の domain を安全に組み立てる)
- 日付・日時の自動変換(UTC → ローカル)
- fields_get のキャッシュ
- many2one / one2many / many2many のレコード参照
- selection のラベル変換
- モデル別ハンドラ
- テーブル全体の型自動変換
Excel に埋め込むだけで、
Odoo の ORM とほぼ同じ感覚でデータ取得ができます。
🧩 アーキテクチャ図(文章版)
OdooLib
├── CreateClient() ← 接続インスタンス生成
├── Rpc() ← JSON-RPC 呼び出し
├── Domain ← domain 組み立て
├── Date ← 日付・日時変換
├── FieldCache ← fields_get キャッシュ
├── GetFields() ← テーブル定義取得
├── ResolveRelationOne ← many2one 解決
├── ResolveRelationMany ← one2many/many2many 解決
├── AutoConvert() ← 型自動変換
├── ConvertTable() ← テーブル全体変換
└── Handler ← モデル別ショートカット
🧱 OdooLib(完全版 M コード)
※ Excel → データ → 空のクエリ → 高度なエディターに貼り付け
※ クエリ名は OdooLib
<ここに前回作成した OdooLib 完全版コードをそのまま貼る>
(※あなたの環境で使っている最新版を貼り付けてください)
🚀 使い方(最小サンプル)
let
Lib = OdooLib,
Create = Lib[CreateClient],
Odoo = Create(
"https://your-odoo.com/jsonrpc",
"your_db",
2,
"your_password"
),
D = Odoo[Domain],
domain = D[And]({
D[Like]("email", "@gmail.com")
}),
raw = Odoo[Handler][Partner](
Odoo,
domain,
{"name", "email", "parent_id", "category_id", "write_date"}
),
converted = Odoo[ConvertTable](Odoo, "res.partner", raw)
in
converted
🎉 自動変換される内容
| Odoo 型 | Excel での結果 |
|---|---|
| date | Excel の date 型 |
| datetime (UTC) | ローカル日時に変換 |
| many2one | name に変換(JOIN) |
| one2many | name の CSV(JOIN) |
| many2many | name の CSV(JOIN) |
| selection | ラベルに変換 |
| boolean | TRUE/FALSE |
| integer/float | そのまま |
🔥 この OdooLib の強み
- Excel から Odoo を 安全に・高速に・正しく扱える
- JSON-RPC を毎回書かなくてよい
- 型変換が完全自動
- リレーションも自動で JOIN
- fields_get をキャッシュして高速化
- Excel ファイルに埋め込めるので配布が簡単
- Power Query の record 構造と Odoo の JSON が完全一致
- ORM 的な書き味でクエリが書ける
🧠 応用(次の記事候補)
- name_get を自動呼び出す
- one2many の子テーブル展開(join_table)
- fields_get のキャッシュを Excel シートに永続化
- Excel セルから domain を組み立てる UI
- PowerShell で M コードを自動エクスポートして Git 管理
🏁 まとめ
Excel × Power Query は、
Odoo の API クライアントとして十分すぎるほど強力です。
今回の OdooLib を使えば:
- JSON-RPC
- domain
- 型変換
- リレーション
- キャッシュ
すべてを自動化でき、
Excel が Odoo の ORM クライアントとして機能します。
✍️ 次のステップ
必要なら、以下も一緒に作れます。
- Qiita 記事の 図解(アーキテクチャ図)
- OdooLib の 最終コードの整形
- 記事の 見出しデザイン
- 記事の タグ・SEO 最適化
どこまで仕上げたいか教えてください。