# How to ガイド - オブジェクトのアップロード

ここでは、ターゲットアプリケーションでオブジェクトをダウンロードするアクションの作成について説明します。一般には、POST HTTP 要求メソッドを使用して、オブジェクトをダウンロードする要求を送信します。

# サンプルコネクター - Egnyte

{
  title: 'My Egnyte connector',

  # More connector code here
  actions: {
    upload_object: {
      title: 'Upload file',
      description: "Upload <span class='provider'>file</span> in <span class='provider'>Egnyte</span>",
      help: 'Upload file to a selected folder in Egnyte. Use this action to upload file of size <b>less than 100 MB only</b>.',

      input_fields: lambda do |object_definitions|
        [
          {
            name: 'folder_path', label: 'Folder', control_type: 'tree',
            tree_options: { selectable_folder: true },
            pick_list: :folders,
            optional: false,
            hint: 'Select path to upload file.',
            toggle_hint: 'Select folder',
            toggle_field: {
              name: 'folder_path',
              type: 'string',
              control_type: 'text', optional: false,
              label: 'Folder path',
              sticky: true,
              toggle_hint: 'Use folder path',
              hint: 'Provide complete path of a folder to upload. Example: <b>/Private/Sample</b>'
            }
          },
          {
            hint: 'Provide filename that you want to upload. Example: <b>Contacts.csv</b>',
            name: 'file_name',
            label: 'File name',
            optional: false
          },
          { name: 'file_content', optional: false }
        ]
      end,

      execute: lambda do |connection, input|
        file_path = input['folder_path']&.gsub(/%2F/, '/')

        post("/pubapi/v1/fs-content#{file_path}/#{input['file_name']}").
          request_body(input['file_content'])
      end,

      output_fields: lambda do |object_definitions|
        [
          { name: 'path' },
          { name: 'checksum' },
          { name: 'group_id' },
          { name: 'entry_id' }
        ]
      end
    }
  # More connector code here
}

# ステップ1 - アクションのタイトル、サブタイトル、説明、ヘルプ

よいアクションを実行するための最初のステップでは、アクションが何をどのように実行するかを適切に伝え、ユーザーにさらなるサポートを提供します。そのために Workato では、アクションのタイトル、サブタイトル、説明を定義し、アクションのヒントを提供できるようにしています。簡単に言えば、タイトルはアクションのタイトルにし、サブタイトルにはアクションの詳細情報を指定します。したがってアクションの説明には、アクションが実行する内容について、および接続するアプリケーションに関する仕様と説明が含まれます。最後に、ヘルプセグメントでは、アクションをうまく機能させるために必要な追加情報をユーザーに提供します。

このステップの詳細については、当社の SDK リファレンスを参照してください。

# ステップ2 - 入力フィールドの定義

  input_fields: lambda { |object_definitions|
    [
      {
        name: 'folder_path', label: 'Folder', control_type: 'tree',
        tree_options: { selectable_folder: true },
        pick_list: :folders,
        optional: false,
        hint: 'Select path to upload file.',
        toggle_hint: 'Select folder',
        toggle_field: {
          name: 'folder_path',
          type: 'string',
          control_type: 'text', optional: false,
          label: 'Folder path',
          sticky: true,
          toggle_hint: 'Use folder path',
          hint: 'Provide complete path of a folder to upload. Example: <b>/Private/Sample</b>'
        }
      },
      {
        hint: 'Provide filename that you want to upload. Example: <b>Contacts.csv</b>',
        name: 'file_name',
        label: 'File name',
        optional: false
      },
      { name: 'file_content', optional: false }
    ]
  },

このコンポーネントは、オブジェクトのアップロードを試みるユーザーにどのフィールドを表示するかを Workato に指示します。たとえば、オブジェクトを Egnyte にアップロードする場合、ユーザーは、ファイルのアップロード先の folder_path (フォルダーパス)、アップロードするファイルの file_name (ファイル名)、およびアップロードされる file_content (ファイルの内容) を入力する必要があります。

オブジェクトの定義

object_definitions は引数として渡されることに注意してください。Workato では、コネクタービルダーが「object_definitions」キー内でオブジェクトを別々に定義できます。このキーは、オブジェクトの定義が非常に大きいか、オブジェクトの定義を動的に取得できる場合に使用されます。

この詳細については、当社の SDK リファレンスを参照してください。

# ステップ3 - execute キーの定義

execute キーでは、要求の送信先のエンドポイントと、どの HTTP 要求メソッドを使用するかを Workato に通知します。この例では、Post メソッドを使用して要求を /pubapi/v1/fs-content#{file_path}/#{input['file_name']} に送信します。要求には request_body(input['file_content']) メソッドも付加します。

この GET アクションでは、まずユーザーが生成した folder_path をフォーマットします。このためには、URL のエンコードされた値を実際に意図された文字に置き換えます。ここでは、%2F/ に置き換えます。その後、フォーマットされた file_path を API エンドポイントに付加し、Workato、さらには Egnyte に、ファイルディレクトリ内のファイルをアップロードする場所を指示します。また、このためには、この URL に file_name を付加し、アップロードするファイル名を指定します。

最後に、file_content を要求の要求本体に付加します。

  execute: lambda do |connection, input|
    file_path = input['folder_path']&.gsub(/%2F/, '/')

    post("/pubapi/v1/fs-content#{file_path}/#{input['file_name']}").
      request_body(input['file_content'])
  end,

# ステップ4 - 出力フィールドの定義

このセクションでは、トリガーの出力として表示するデータピルを示します。各データピルの name 属性は、execute キーの出力のキーに一致します。

  output_fields: lambda do |_object_definitions|
    [
      { name: 'path' },
      { name: 'checksum' },
      { name: 'group_id' },
      { name: 'entry_id' }
    ]
  end

オブジェクトの定義

object_definitions は引数として渡されることに注意してください。Workato では、コネクタービルダーが「object_definitions」キー内でオブジェクトを別々に定義できます。このキーは、オブジェクトの定義が非常に大きいか、オブジェクトの定義を動的に取得できる場合に使用されます。

この詳細については、当社の SDK リファレンスを参照してください。

# ファイルのアップロードでの複合データ型の使用

API によっては、ファイルをアップロードするために複合データ型を使用する必要がある場合があります。複合データ型の要求を作成する方法については、こちらのガイドを参照してください。


Last updated: 2023/8/31 1:07:14