接続の確立
CData Cmdlets ユーザーは、データモジュールをインストールし、接続プロパティを設定してスクリプトを開始できます。このセクションでは、CSV インポートおよびエクスポートcmdlet などのネイティブPowerShell cmdlet でKintone Cmdlets を使用する例を示します。
インストールおよび接続
PSGet がある場合は、PowerShell Gallery から次のコマンドを使ってcmdlet をインストールできます。CData サイトからセットアップを取得することもできます。
Install-Module KintoneCmdlets
プロファイルに以下を追加すると、次のセッションでcmdlet がロードされます。
Import-Module KintoneCmdlets;
Connect-Kintone cmdlet を使って、別のcmdlet に渡すことができる接続オブジェクトを作成します。
$conn = Connect-Kintone -User 'myuseraccount' -Password 'mypassword' -URL 'http://subdomain.domain.com' -GuestSpaceId 'myspaceid'
Kintone への接続
認証値に加えて、下記のパラメータを使いKintone に接続しデータを取得します。
- Url:アカウントのURL。
- GuestSpaceId:オプション。ゲストスペースを使用するときに設定。
Kintone への認証
Kintone は、以下の認証メソッドをサポートしています。
パスワード認証
Kintone への認証には、以下を設定する必要があります。
- User:アカウントのユーザー名。
- Password:アカウントのパスワード。
- AuthScheme:AuthScheme をPassword に設定。
API トークン
Kintone への認証には、以下を設定する必要があります。
- APIToken:API トークン。
API トークンを生成するには、特定のアプリにアクセスして歯車アイコンをクリックしてください。[設定]->[APIトークン]に移動します。[生成する]ボタンをクリックすると、API トークンが生成されます。 APIToken をカンマ区切りで複数指定することもできます。
- AppId:アプリID。
AppId はkintone UI ダッシュボードの[アプリ]内に並んだ特定のアプリの番号です。 AppId をカンマ区切りで複数指定することもできます。
- AuthScheme:AuthScheme をAPIToken に設定。
追加のセキュリティ
これまでに説明した認証スキームに加えて、Kintone はBasic 認証ヘッダーおよびSSL 証明書の形で追加のセキュリティを提供します。
クライアントSSL の使用
認証情報に加えて、リクエストの受け入れにSSL 証明書が必須となるようKintone を設定することができます。そのためには、次を設定してください。
- SSLClientCert:SSL 証明書の証明書を含むファイル。または、クライアント証明書のための証明書ストア名。
- SSLClientCertType:証明書の種類。
- SSLClientCertSubject:(オプション)証明書ストアで証明書を検索する際に、ストア内でこのプロパティの値を含むサブジェクトを検索します。
- SSLClientCertPassword:証明書ストアでパスワードが必要とされる際に、このプロパティを使用してパスワードを指定し、証明書ストアにアクセスできます。
Basic
Basic 認証を使用しているkintone 環境では、追加のBasic 資格情報を渡す必要があります。そのためには、次を設定してください。
- BasicAuthUser:Basic ログイン名。
- BasicAuthPassword:Basic パスワード。
データの取得
Select-Kintone cmdlet はデータを取得するためのネイティブなPowerShell インターフェースを提供します。
$results = Select-Kintone -Connection $conn -Table "Comments" -Columns @("CreatorName, Text") -Where "AppId='1354841'"Invoke-Kintone cmdlet はSQL インターフェースを提供します。このcmdlet を使うと、Query パラメータを介してSQL クエリを実行できます。
cmdlet 出力のパイプ処理
cmdlet は行オブジェクトをパイプラインに一度に一行ずつ返します。以下は、結果をCSV ファイルにエクスポートします。
Select-Kintone -Connection $conn -Table Comments -Where "AppId = '1354841'" | Select -Property * -ExcludeProperty Connection,Table,Columns | Export-Csv -Path c:\myCommentsData.csv -NoTypeInformation
Select-Kintone からの結果をSelect-Object cmdlet にパイプして、Export-CSV cmdlet にパイプする前にいくつかのプロパティを実行していることがわかるでしょう。これをする理由は、CData Cmdlets は接続、テーブル、およびカラムの情報を結果セットの各行オブジェクトに追加しますが、必ずしもその情報がCSV ファイルに必要ではないからです。
ただし、これによってcmdlet の出力を別のcmdlet にパイプすることが容易になります。以下に、結果セットをJSON に変換する例を示します。
PS C:\> $conn = Connect-Kintone -User 'myuseraccount' -Password 'mypassword' -URL 'http://subdomain.domain.com' -GuestSpaceId 'myspaceid' PS C:\> $row = Select-Kintone -Connection $conn -Table "Comments" -Columns (CreatorName, Text) -Where "AppId = '1354841'" | select -first 1 PS C:\> $row | ConvertTo-Json { "Connection": { }, "Table": "Comments", "Columns": [ ], "CreatorName": "MyCreatorName", "Text": "MyText" }
データの削除
以下は、抽出条件に合うあらゆるレコードを削除します。
Select-Kintone -Connection $conn -Table Comments -Where "AppId = '1354841'" | Remove-Kintone
データの変更
cmdlet はデータクレンジング同様、データの変換を容易にします。次の例は、レコードがすでに存在するかどうか、挿入する前に更新が必要かどうかをチェックしてから、CSV ファイルのデータをKintone にロードします。
Import-Csv -Path C:\MyCommentsUpdates.csv | %{ $record = Select-Kintone -Connection $conn -Table Comments -Where ("Id = `'"+$_.Id+"`'") if($record){ Update-Kintone -Connection $conn -Table Comments -Columns @("CreatorName","Text") -Values @($_.CreatorName, $_.Text) -Where "Id = `'$_.Id`'" }else{ Add-Kintone -Connection $conn -Table Comments -Columns @("CreatorName","Text") -Values @($_.CreatorName, $_.Text) } }