api:script キーワードのlanguage アトリビュートを設定して、Python をスクリプト言語として定義します:
組み込みオブジェクトインターフェース
Sync のPython 実装は、以下に示す組み込み変数を公開し、スクリプティングコンテキストへのアクセスを可能にする2つの主要なインターフェースを提供します。- SyncScriptContext
- SyncScriptItem
SyncScriptContext
このインターフェースは、Sync でのPython スクリプトの主要なスクリプティングコンテキストを表します。アイテムへの辞書のようなアクセスを提供し、ロギング機能を備えています。このインターフェースは_ctx 変数を公開しており、スクリプティングコンテキストへのアクセスと管理に使用します。
このインターフェースで利用可能なメソッドは以下のとおりです:
pushlog
SyncScriptItem
このインターフェースは、Sync のスクリプティング環境内の個々のデータアイテムを表します。アトリビュートへの辞書のようなアクセスを提供し、各アイテムの値のリストを保持します。以下の変数は、自動的に利用可能な、あらかじめインスタンス化されたSyncScriptItem オブジェクトです:_inputoutput
getclear
SyncScriptContext とSyncScriptItem の仕組み
SyncScriptContext とSyncScriptItem インターフェースは連携して、スクリプト内でのデータのアクセスおよび処理方法を管理します。_ctx 変数はスクリプティングコンテキスト全体を表し、アイテムへのアクセスや定義を可能にします。_ctx.itemname という構文を使用して、スクリプト内で新しいアイテムを動的に作成したり、既存のアイテムにアクセスしたりできます。
_input 変数とoutput 変数は、スクリプティングコンテキスト内のデータのコンテナとして機能します。_input 変数は受信データを保持して公開し、output 変数は送信データを保持して定義します。
このモデルでは、スクリプトは通常、_input からデータを読み取り、_ctx を使用してアイテムにアクセスまたは整理し、output から結果を書き込みます。
詳細については、組み込み変数およびオペレーションを参照してください。
組み込み変数
組み込み変数(_ctx、_input、output)は、スクリプティング環境におけるメッセージコンテキストの中核へのアクセスを提供します。これらの変数を使用して、スクリプティングエンジンで利用可能なアイテムを操作します。
_ctx
_ctx 変数は、スクリプティング環境にアクセスする主要な方法です。スクリプト内で利用可能なすべてのアイテムへのアクセスを提供し、新しいアイテムの作成、アイテムのプッシュ、アプリケーションログへのエントリの書き込みを可能にします。
次の例では、_ctx 変数のlog メソッドを使用して、INFO レベルでアプリケーションログにエントリを書き込んでいます:
_input
_input 変数は、スクリプティングエンジンの読み取り専用の入力アイテムを表します。利用可能なアトリビュートは、イベントを記述するコンテキストによって異なります。例えば、ジョブの後に実行されるイベントでは、以下の入力が利用可能です:
ConnectorIdWorkspaceIdMessageIdFilePathFileNameAttachment#Header:*
output
output 変数は組み込みアイテムであり、1つのアウトプットのみが必要な場合に、独自のアイテムを作成してプッシュする代わりに使用できます。アウトプットとして送信するためにpush() メソッドを明示的に呼び出す必要があるカスタムアイテムとは異なり、output アイテムはスクリプトが完了すると自動的にプッシュされます。プロパティを変更するだけで、スクリプトの実行完了後に追加のpush() 呼び出しを行うことなく、自動的にアウトプットとしてプッシュされます。
アイテムに直接アトリビュートを設定することも、辞書(dict)を使用して定義することもでき、自分で定義したアイテムでも同じことができます。次の例では、いくつかのデータを含むアウトプットファイルをプッシュします:
オペレーション
スクリプティング環境では、スクリプティングコンテキストおよびアイテムを操作するために、以下のオペレーションを利用できます。cleargetlogpush
clear
clear() オペレーションは、メソッドが呼び出されたSyncScriptItem をクリアします。アイテム自体は残りますが、空になります。
get
get(attr) オペレーションは、SyncScriptItem 上の指定したアトリビュートの値を返します。このオペレーションは、名前によってアイテムのアトリビュートにアクセスするプログラム的な方法を提供します。これは、ドット記法を使用してアトリビュートに直接アクセスする方法(例:_input.myattr)や、辞書形式でアクセスする方法(例:_input.get('myattr'))と機能的に同等です。
次の例では、item オブジェクトのtags アトリビュートの値のリストを、現在のスクリプトのログファイルに出力します:
log
_ctx 変数で利用できるlog(level, message) オペレーションは、Sync アプリケーションログに直接エントリを書き込むことができます。利用可能なログレベルは、DEBUG、INFO、WARNING、ERROR です。
次の例では、特定のコネクタでデータ評価が失敗した際に、Python のロギングコンテキストを使用してエラーレベルのメッセージを記録します:
push
push(item) オペレーションは、指定したアイテムをスクリプトのアウトプットとしてプッシュします。アイテムが指定されていない場合、現在のアウトプットアイテムがプッシュされます。
次の例では、SyncScriptContext に新しいアイテム(foo)を作成し、データとファイル名を割り当てた後、プッシュしています。