2017年10月10日火曜日

PowerShell から FileMaker ODBC 経由で索引を作成・削除。|FileMaker ODBC|CREATE INDEX , DROP INDEX|PowerShell

PowerShell から FileMaker ODBC 経由で索引を作成・削除。|FileMaker ODBC|CREATE INDEX , DROP INDEX|PowerShell

FileMaker 16 SQL リファレンスガイド
https://fmhelp.filemaker.com/docs/16/ja/fm16_sql_reference.pdf#page=23

FileMaker xDBC クライアントドライバ が必要。


PowerShell Script|索引作成
[void][System.Reflection.Assembly]::LoadWithPartialName('System.Data');
$connectionString = 'driver={FileMaker ODBC};server=localhost;database=FileName;uid=admin;pwd=;';

$cmd = "CREATE INDEX ON TableName.FieldName";

$odbc_con = New-Object System.Data.Odbc.OdbcConnection($connectionString);
$odbc_con.Open();
$odbc_cmd = New-Object System.Data.Odbc.OdbcCommand;
$odbc_cmd.Connection = $odbc_con;
$odbc_cmd.CommandText = $cmd;

$Result = $odbc_cmd.ExecuteNonQuery();

$odbc_cmd.Dispose();
$odbc_con.Close();
$odbc_con.Dispose() ;
$Result;

PowerShell Script|索引削除
[void][System.Reflection.Assembly]::LoadWithPartialName('System.Data');
$connectionString = 'driver={FileMaker ODBC};server=localhost;database=FileName;uid=admin;pwd=;';

$cmd = "DROP INDEX ON TableName.FieldName";

$odbc_con = New-Object System.Data.Odbc.OdbcConnection($connectionString);
$odbc_con.Open();
$odbc_cmd = New-Object System.Data.Odbc.OdbcCommand;
$odbc_cmd.Connection = $odbc_con;
$odbc_cmd.CommandText = $cmd;

$Result = $odbc_cmd.ExecuteNonQuery();

$odbc_cmd.Dispose();
$odbc_con.Close();
$odbc_con.Dispose() ;
$Result;

memo|FileMaker 16 SQL リファレンスガイド

memo
FileMaker 16 SQL リファレンスガイド :
https://fmhelp.filemaker.com/docs/16/ja/fm16_sql_reference.pdf

CREATE INDEX ステートメント|索引を作成
DROP INDEX ステートメント|索引を削除

2017年10月9日月曜日

DropBox API Upload files |PowerShell |FileMaker

DropBox API Upload files |PowerShell
DropBox API v2

PowerShell で DropBox へファイルをアップロード。
FileMaker からアップロード可能。


動作検証
Windows 10
FileMaker Pro 16
※FMP15以下でも大丈夫。

Dropbox API v2 を使用する準備は、以下を参照
https://qbxxdp.blogspot.jp/2017/10/filemaker-pro-16-dropbox.html

PowerShellスクリプト
$TargetFilePath="/v3.png"
$SourceFilePath="C:\Users\User\Desktop\v3.png"
$arg = '{ "path": "' + $TargetFilePath + '", "mode": "add", "autorename": true, "mute": false }'
$authorization = "Bearer " + "your access token"
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Authorization", $authorization)
$headers.Add("Dropbox-API-Arg", $arg)
$headers.Add("Content-Type", 'application/octet-stream')
Invoke-RestMethod -Uri https://content.dropboxapi.com/2/files/upload -Method Post -InFile $SourceFilePath -Headers $headers


上記PowerShellスクリプトが、フィールド:Script に設定されている場合、
FileMaker プラグイン:ScriptMakerPS を使用して

変数を設定 [$Result; 値:SMPS_Exe( SMPS::Script  )]

成功した場合、以下のような値が返ってきます。
@{name=v34.png; path_lower=/v34.png; path_display=/v34.png; id=id:QCkWs_iH.....; client_modified=2017-10-09T13:43:42Z; server_modified=2017-10-09T13:43:42Z; rev=335d...; size=448533; content_hash=df60d1b113049f5ba.....}