接続の確立
CData Cmdlets ユーザーは、データモジュールをインストールし、接続プロパティを設定してスクリプトを開始できます。このセクションでは、CSV インポートおよびエクスポートcmdlet などのネイティブPowerShell cmdlet でOdoo Cmdlets を使用する例を示します。
Odoo への接続
接続するには、URL にOdoo インスタンスURL、User およびAPIToken にユーザー資格情報、Database にOdoo データベース名を設定します。
API トークン(Odoo 14 以降でのみ利用可能)を使用していない場合、代わりにAPIToken フィールドにパスワードを直接入力することができます。
クイックスタート:Odoo Online への接続
以下の手順は、Odoo Online に接続するための一般的な設定です。
- OdooEdition をOnline に設定します。
- URL をhttps://mycompany.odoo.com のようなOdoo インスタンスの完全なURL に設定します。
- User をお使いのOdoo ログイン(E メールまたはユーザー名)に設定します。
- APIToken をAPI キーまたはパスワードに設定します。
- Database をデータベース名に設定します(Odoo Online ではオプション、On-Premises では必須)。
Note:On-Premises Odoo の場合も手順は同様ですが、必ずDatabase を指定し、サーバーが本製品 にアクセス可能であることを確認する必要があります。Odoo Online の場合、データベースは自動的に検出される場合がありますが、設定することをお勧めします。
Odoo エディション
OdooEdition プロパティは、接続の確立方法を決定します。Odoo は2種類の環境を提供しており、この設定は本製品 にどちらを使用しているかを伝えます。
- Online:odoo.com でOdoo のクラウドホスティングされたSaaS 版を利用する場合
- OnPrem:Odoo を自社サーバーにインストールして使用する場合
もし不明な場合は、yourcompany.odoo.com のようなWeb アドレスからOdoo にアクセスする場合、Online を使用してください。組織が独自のOdoo サーバーを管理している場合(カスタムドメインやローカルネットワーク経由でアクセスすることが多い)は、OnPrem を使用してください。
データベース
Odoo は同じサーバーで複数のデータベースをサポートします。接続するデータベースの名前を指定する必要があります。
- Odoo Online の場合:データベース名はWeb アドレスに含まれていることが多く、Database が空白の場合、本製品 が自動的に検出できる可能性があります。 ただし、データベースがURL に表示されず、手動で指定しなければならない場合もあります。信頼性のために、この値を設定することを常に推奨します。
- Odoo On-Premises の場合:Database プロパティを設定する必要があります。この場合、本製品 はデータベースを自動検出できません。
データベース名の調べ方(Odoo Online)
- Odoo Online アカウントにログインします。
- 右上のプロフィールアイコンをクリックし、My Databases を選択します。
- データベース名がテーブルに表示されます。
また、URL のサブドメインにデータベース名が表示されていることもよくあります。アドレスがhttps://mycompany.odoo.com の場合、データベース名はおそらくmycompany です。
アクセス権
Odoo で利用可能なモデル(テーブル)を検出するために、本製品 は内部のir.model.access テーブルをチェックします。このテーブルは、ユーザーが閲覧できるモデルを定義しています。
デフォルトでは、Odoo 管理者だけがこのテーブルを読み取る権限を持っています。管理者以外のユーザーにアクセス権を与えるには、新しいグループを作成します。
- 管理者としてログインし、Odoo の設定でdeveloper mode を有効にします。
- Groups ページ(Users ドロップダウンの下)を開いて新しいグループを作成します。
- Application をAdministration に設定し、グループ名を"Service Access" とします。
- Users タブの下にアクセスが必要なユーザーを追加します。
- Access Rights タブで、ir.model.access(またはModel Access)の権限を追加し、Read にチェックを入れ、Inspect Models と名前を付けます。
この方法でアクセスを許可できない場合は、CheckPermissions プロパティをfalse に設定します。これにより、権限チェックが無効になり、ユーザーが明示的なアクセス権を持っていなくても、本製品 がすべての利用可能なモデルをリストできるようになります。
トラブルシューティング
データベースが見つからない、または認証に失敗するなどのエラーが発生した場合は、次の手順を試してください。
- 特にオンプレミス環境では、Database の値を再確認してください。
- Odoo に直接ログインして、ユーザー資格情報が有効であることを確認してください。
- Odoo Online を使用している場合、Database を空白にして自動検出を許可してみてください。
- 正しいOdooEdition が設定されていること(Online か OnPrem か)を確認してください。
接続オブジェクトの作成
Connect-Odoo cmdlet を使って、別のcmdlet に渡すことができる接続オブジェクトを作成します。
$conn = Connect-Odoo -User 'MyUser' -APIToken 'MyToken' -URL 'https://MyOdooSite/' -Database 'MyDatabase'
データの取得
Select-Odoo cmdlet はデータを取得するためのネイティブなPowerShell インターフェースを提供します。
$results = Select-Odoo -Connection $conn -Table "res_users" -Columns @("name, email") -Where "company_name='Company Inc.'"
Invoke-Odoo cmdlet はSQL インターフェースを提供します。このcmdlet を使うと、Query パラメータを介してSQL クエリを実行できます。
cmdlet 出力のパイプ処理
cmdlet は行オブジェクトをパイプラインに一度に一行ずつ返します。以下は、結果をCSV ファイルにエクスポートします。
Select-Odoo -Connection $conn -Table res_users -Where "company_name = 'Company Inc.'" | Select -Property * -ExcludeProperty Connection,Table,Columns | Export-Csv -Path c:\myres_usersData.csv -NoTypeInformation
Select-Odoo からの結果をSelect-Object cmdlet にパイプして、Export-CSV cmdlet にパイプする前にいくつかのプロパティを実行していることがわかるでしょう。これをする理由は、CData Cmdlets は接続、テーブル、およびカラムの情報を結果セットの各行オブジェクトに追加しますが、必ずしもその情報がCSV ファイルに必要ではないからです。
ただし、これによってcmdlet の出力を別のcmdlet にパイプすることが容易になります。以下に、結果セットをJSON に変換する例を示します。
PS C:\> $conn = Connect-Odoo -User 'MyUser' -APIToken 'MyToken' -URL 'https://MyOdooSite/' -Database 'MyDatabase'
PS C:\> $row = Select-Odoo -Connection $conn -Table "res_users" -Columns (name, email) -Where "company_name = 'Company Inc.'" | select -first 1
PS C:\> $row | ConvertTo-Json
{
"Connection": {
},
"Table": "res_users",
"Columns": [
],
"name": "Myname",
"email": "Myemail"
}
データの削除
以下は、抽出条件に合うあらゆるレコードを削除します。
Select-Odoo -Connection $conn -Table res_users -Where "company_name = 'Company Inc.'" | Remove-Odoo
データの変更
cmdlet はデータクレンジング同様、データの変換を容易にします。次の例は、レコードがすでに存在するかどうか、挿入する前に更新が必要かどうかをチェックしてから、CSV ファイルのデータをOdoo にロードします。
Import-Csv -Path C:\Myres_usersUpdates.csv | %{
$record = Select-Odoo -Connection $conn -Table res_users -Where ("id = `'"+$_.id+"`'")
if($record){
Update-Odoo -Connection $conn -Table res_users -Columns @("name","email") -Values @($_.name, $_.email) -Where "id = `'$_.id`'"
}else{
Add-Odoo -Connection $conn -Table res_users -Columns @("name","email") -Values @($_.name, $_.email)
}
}