# How to ガイド - ファイル / ドキュメントのダウンロード
ここでは、ターゲットアプリケーションでオブジェクトをダウンロードするアクションの作成について説明します。一般には、GET
HTTP 要求メソッドを使用して、オブジェクトをダウンロードする要求を送信します。
# サンプルコネクター - Egnyte
{
title: 'My Egnyte connector',
# More connector code here
actions: {
download_object: {
title: 'Download file from selected folder',
description: lambda do |input, picklist_label|
"Download <span class='provider'>file</span> in <span class='provider'>Egnyte</span>"
end,
help: 'Download file contents from selected folder in Egnyte.',
input_fields: lambda do |object_definitions|
[
{
name: 'file_path',
label: 'File path',
hint: 'Select path of file.',
optional: false,
control_type: 'tree',
pick_list: 'file_path',
toggle_hint: 'Select file',
toggle_field: {
name: 'file_path',
type: 'string',
control_type: 'text',
label: 'File path',
optional: false,
toggle_hint: 'Use file path',
hint: "Provide complete path of file. Example: <b>/Private/Sample/file.csv</b>"
}
}
]
end,
execute: lambda do |connection, input|
file_path = input['file_path']&.gsub(/%2F/, '/')
{
"content": get("/pubapi/v1/fs-content/#{file_path}").headers('Accept' => '*/*').
after_error_response(/.*/) do |_code, body, _header, message|
error("#{message}: #{body}")
end.response_format_raw.encode('ASCII-8BIT')
}
end,
output_fields: lambda do |object_definitions|
[
{ name: 'content' }
]
end,
sample_output: lambda do |connection, input|
{ "content": 'Hello World!' }
end
}
# More connector code here
}
# ステップ1 - アクションのタイトル、サブタイトル、説明、ヘルプ
よいアクションを実行するための最初のステップでは、アクションが何をどのように実行するかを適切に伝え、ユーザーにさらなるサポートを提供します。そのために Workato では、アクションのタイトル、説明を定義し、アクションのヒントを提供できるようにしています。簡単に言えば、タイトルはアクションのタイトルにし、サブタイトルにはアクションの詳細情報を指定します。したがってアクションの説明には、アクションが実行する内容について、および接続するアプリケーションに関する仕様と説明が含まれます。最後に、ヘルプセグメントでは、アクションをうまく機能させるために必要な追加情報をユーザーに提供します。
このステップの詳細については、当社の SDK リファレンスを参照してください。
# ステップ2 - 入力フィールドの定義
input_fields: lambda do |object_definitions|
[
{
name: 'file_path',
label: 'File path',
hint: 'Select path of file.',
optional: false,
control_type: 'tree',
pick_list: 'file_path',
toggle_hint: 'Select file',
toggle_field: {
name: 'file_path',
type: 'string',
control_type: 'text',
label: 'File path',
optional: false,
toggle_hint: 'Use file path',
hint: "Provide complete path of file. Example: <b>/Private/Sample/file.csv</b>"
}
}
]
end
ファイルのダウンロードの入力フィールド
このコンポーネントは、オブジェクトの取得を試みるユーザーにどのフィールドを表示するかを Workato に指示します。たとえば Zuora でアカウントを取得する場合、ユーザーはダウンロードしたいファイルの file_path
を入力する必要があります。
オブジェクトの定義
object_definitions
は引数として渡されることに注意してください。Workato では、コネクタービルダーが「object_definitions」キー内でオブジェクトを別々に定義できます。このキーは、オブジェクトの定義が非常に大きいか、オブジェクトの定義を動的に取得できる場合に使用されます。
この詳細については、当社の SDK リファレンスを参照してください。
# ステップ3 - execute キーの定義
execute キーでは、要求の送信先のエンドポイントと、どの HTTP 要求メソッドを使用するかを Workato に通知します。この例では、Get
メソッドを使用して要求を /pubapi/v1/fs-content/#{file_path}
に送信します。要求には after_error_response
および response_format_raw
メソッドも付加します。前者は、エラーを捕捉し、それらをユーザーに表示して、レシピ作成時のデバッグに役立てます。
この GET アクションでは、まずユーザーが生成した file_path
をフォーマットします。このためには、URL のエンコードされた値を実際に意図された文字に置き換えます。ここでは、%2F
を /
に置き換えます。その後、フォーマットされた file_path
を API エンドポイントに付加し、Workato、さらには Egnyte に、ダウンロードする特定のファイルを指示します。
この例では、要求に response_format_raw
も付加し、Workato に RAW フォーマットでの応答を期待するよう指示します。これは、応答としてバイナリデータ (PDFや画像など) を期待しているためです。
execute: lambda do |connection, input|
file_path = input['file_path']&.gsub(/%2F/, '/')
{
"content": get("/pubapi/v1/fs-content/#{file_path}").headers('Accept' => '*/*').
after_error_response(/.*/) do |_code, body, _header, message|
error("#{message}: #{body}")
end.response_format_raw.encode('ASCII-8BIT')
}
end,
execute キーの詳細については、当社の SDK リファレンスを参照してください。
# ステップ4 - 出力フィールドの定義
このセクションでは、トリガーの出力として表示するデータピルを示します。各データピルの name
属性は、execute
キーの出力のキーに一致します。
output_fields: lambda do |object_definitions|
[
{ name: 'content' }
]
end,
ファイルのダウンロードの出力フィールド
出力フィールドキーの詳細については、当社の SDK リファレンスを参照してください。
オブジェクトの定義
object_definitions
は引数として渡されることに注意してください。Workato では、コネクタービルダーが「object_definitions」キー内でオブジェクトを別々に定義できます。このキーは、オブジェクトの定義が非常に大きいか、オブジェクトの定義を動的に取得できる場合に使用されます。
この詳細については、当社の SDK リファレンスを参照してください。
# ステップ5 - サンプル出力の定義
サンプル出力キーは、コネクターに対する補足的なコンポーネントですが、それでも、ユーザーに一般的なデータ型と期待される出力フィールドのフォーマットを伝えることで、ユーザーエクスペリエンスは大幅に向上します。これにより、ユーザーはより迅速にレシピを作成できます。
sample_output: lambda do |connection, input|
{ "content": 'Hello World!' }
end
サンプル出力キーの詳細については、当社の SDK リファレンスを参照してください。
Last updated: 2023/8/31 1:07:14