# 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