Ruby SDK Samples - Bulk Write Operations
require 'ZOHOCRMSDK2_0'
class Bulkwrite
def self.create_bulk_write_job(module_api_name, file_id)
# """
# This method is used to create bulk write job with the uploaded file ID
# :param module_api_name: The API Name of the module.
# :param file_id: The ID of the uploaded file to create BulkWrite Job.
# """
cvid = '30087501'
# Get instance of BulkWriteOperations Class
bwo = ZOHOCRMSDK::BulkWrite::BulkWriteOperations.new
# Get instance of RequestWrapper Class that will contain the request body
request_wrapper = ZOHOCRMSDK::BulkWrite::RequestWrapper.new
# Get instance of CallBack Class
call_back = ZOHOCRMSDK::BulkWrite::CallBack.new
# Set valid callback URL
call_back.url = 'https://www.example.com/callback'
# Set the HTTP method of the callback URL. The allowed value is post.
call_back.method = ZOHOCRMSDK::Util::Choice.new('post')
# The Bulk Read Job's details is posted to this URL on successful completion / failure of the job.
request_wrapper.callback = call_back
# Set the charset of the uploaded file
request_wrapper.character_encoding = 'UTF-8'
# To set the type of operation you want to perform on the bulk write job.
request_wrapper.operation = ZOHOCRMSDK::Util::Choice.new('insert')
# Get instance of Resource Class
resource_ins = ZOHOCRMSDK::BulkWrite::Resource.new
# To set the type of module that you want to import. The value is data.
resource_ins.type = ZOHOCRMSDK::Util::Choice.new('data')
# To set API name of the module that you select for bulk write job.
resource_ins.module = module_api_name
# To set the fileId obtained from file upload API.
resource_ins.file_id = file_id
# True - Ignores the empty values.The default value is false.
resource_ins.ignore_empty = true
# Get instance of FieldMapping Class
field_mapping0 = ZOHOCRMSDK::BulkWrite::FieldMapping.new
# To set API name of the field present in Zoho module object that you want to import.
field_mapping0.api_name = 'Last_Name'
# To set the column index of the field you want to map to the CRM field.
field_mapping0.index = 0
field_mapping1 = ZOHOCRMSDK::BulkWrite::FieldMapping.new
field_mapping1.api_name = 'Email'
field_mapping1.index = 1
field_mapping2 = ZOHOCRMSDK::BulkWrite::FieldMapping.new
field_mapping2.api_name = 'Company'
field_mapping2.index = 2
field_mapping3 = ZOHOCRMSDK::BulkWrite::FieldMapping.new
field_mapping3.api_name = 'Phone'
field_mapping3.index = 3
field_mapping4 = ZOHOCRMSDK::BulkWrite::FieldMapping.new
field_mapping4.api_name = 'Website'
# To set the default value for an empty column in the uploaded file.
default_value = { 'value' => 'https://www.zohoapis.com' }
# To set the default value for an empty column in the uploaded file.
field_mapping4.default_value = default_value
field_mappings = [field_mapping0, field_mapping1, field_mapping2, field_mapping3, field_mapping4]
resource_ins.field_mappings = field_mappings
resource = [resource_ins]
# Set the list of resources to RequestWrapper instance
request_wrapper.resource = resource
# Call create_bulk_write_job method that takes RequestWrapper instance as parameter
response = bwo.create_bulk_write_job(request_wrapper)
unless response.nil?
status_code = response.status_code
# Get the status code from response
print "\n Status Code :" + status_code.to_s
# Check if expected instance is received.
if response.is_expected
# Get object from response
action_response = response.data_object
# Check if expected SuccessResponse instance is received
if action_response.is_a? ZOHOCRMSDK::BulkWrite::SuccessResponse
success_response = action_response
# Get the Code
print 'code:'
print success_response.code.value
# Get the Status
print "\n status:"
print success_response.status.value
# Get the Message
print "\n message:"
print success_response.message.value
# Get the details map
success_response.details.each do |k, v|
print "\n"
print k
print v
print "\n"
end
elsif action_response.is_a? ZOHOCRMSDK::BulkWrite::APIException
api_exception = action_response
# Get the Code
print 'code:'
print api_exception.code.value
# Get the Status
print "\n status:"
print api_exception.status.value
# Get the Message
print "\n message:"
print api_exception.message.value
# Get the details map
api_exception.details.each do |k, v|
print "\n"
print k
print v
print "\n"
end
print "\n"
end
else
response_object = response.data_object
response_object.instance_variables.each do |field|
print field
print "\n"
print response_object.instance_variable_get(field)
end
end
end
end
end
require 'ZOHOCRMSDK2_0'
class Bulkwrite
def self.get_bulk_write_job_details(job_id)
# """
# This method is used to get the details of a bulk write job performed previously.
# :param job_id: The unique ID of the bulk write job.
# """
# """
# example
# job_id = "34770615615003"
# """
# Get instance of BulkWriteOperations Class
bwo = ZOHOCRMSDK::BulkWrite::BulkWriteOperations.new
# Call get_bulk_write_job_details method that takes job_id as parameter
response = bwo.get_bulk_write_job_details(job_id)
unless response.nil?
status_code = response.status_code
# Get the status code from response
print "\n Status Code :" + status_code.to_s
if [204, 304].include? status_code
print(status_code == 204 ? 'No Content' : 'Not Modified')
return
end
#Check if expected instance is received
if response.is_expected
response_wrapper = response.data_object
# Check if expected BulkWriteResponse instance is received
if response_wrapper.is_a? ZOHOCRMSDK::BulkWrite::BulkWriteResponse
bulk_write_response = response_wrapper
# Get the Job Status of the bulkWriteResponse
print "\n Bulk write Job Status: "
print bulk_write_response.status
# Get the CharacterEncoding of the bulkWriteResponse
print "\n Bulk write CharacterEncoding: "
print bulk_write_response.character_encoding
resources = bulk_write_response.resource
# Get the Status of each Resource
# Get the Type of each Resource
# Get the Module of each Resource
# Get the APIName of each FieldMapping
# Get the Index of each FieldMapping
# Get the Format of each FieldMapping
# Get the FindBy of each FieldMapping
# Get the file
# Get the Status of the File
# Get the Name of the File
# Get the AddedCount of the File
# Get the SkippedCount of the File
# Get the UpdatedCount of the File
# Get the TotalCount of the File
resources&.each do |resource|
# Get the Status of each Resource
print "\n Bulk write Resource Status: "
print resource.status.value
# Get the Type of each Resource
print "\n Bulk write Resource Type: "
print resource.type.value
# Get the Module of each Resource
print "\n Bulk write Resource Module: "
print resource.module
field_mappings = resource.field_mappings
# Get the APIName of each FieldMapping
# Get the Index of each FieldMapping
# Get the Format of each FieldMapping
# Get the FindBy of each FieldMapping
field_mappings&.each do |field_mapping|
# Get the APIName of each FieldMapping
print "\n Bulk write Resource FieldMapping Module: "
print field_mapping.api_name
unless field_mapping.index.nil?
# Get the Index of each FieldMapping
print "\n Bulk write Resource FieldMapping Index: "
print field_mapping.index
end
unless field_mapping.format.nil?
# Get the Format of each FieldMapping
print "\n Bulk write Resource FieldMapping Format: "
print field_mapping.format
end
unless field_mapping.find_by.nil?
# Get the FindBy of each FieldMapping
print "\n Bulk write Resource FieldMapping FindBy: "
print field_mapping.find_by
end
field_mapping.default_value&.each do |k, v|
print "\n "
print k
print v
print "\n"
end
end
# Get the file
file = resource.file
unless file.nil?
# Get the Status of the File
print "\n Bulk write Resource File Status: "
# Get the Name of the File
print file.status.value
print "\n Bulk write Resource File Name: "
print file.name
# Get the AddedCount of the File
print "\n Bulk write Resource AddedCount: "
print file.added_count
# Get the SkippedCount of the File
print "\n Bulk write Resource SkippedCount: "
print file.skipped_count
# Get the UpdatedCount of the File
print "\n Bulk write Resource UpdatedCount: "
print file.updated_count
# Get the TotalCount of the File
print "\n Bulk write Resource TotalCount: "
print file.total_count
end
end
# Get the BulkWrite ID
print "\n Bulk write ID: "
print bulk_write_response.id.to_s
callback = bulk_write_response.callback
if callback.nil?
# Get the CallBack Url
print "\n Bulk write CallBack Url: "
print callback.url
# Get the CallBack Method
print "\n Bulk write CallBack Method: "
print callback.method.value
end
result = bulk_write_response.result
unless result.nil?
# Get the DownloadUrl of the Result
print "\n Bulk write DownloadUrl: "
print result.download_url
end
# Get the CreatedBy User instance of the BulkWriteResponse
created_by = bulk_write_response.created_by
# Check if created_by is not None
unless created_by.nil?
# Get the Name of the created_by User
print "\n Bulk write Created By User-ID: "
print created_by.id.to_s
# Get the ID of the created_by User
print "\n Bulk write Created By user-Name:"
print created_by.name
end
# Get the Operation of the BulkWriteResponse
print "\n Bulk write Operation: "
print bulk_write_response.operation
# Get the CreatedTime of the BulkWriteResponse
print "\n Bulk write File CreatedTime: "
print bulk_write_response.created_time
elsif response_wrapper.is_a? ZOHOCRMSDK::BulkWrite::APIException
exception = response_wrapper
# Get the Code
print 'code:'
print exception.code.value
# Get the Status
print "\n status:"
print exception.status.value
# Get the Message
print "\n message:"
print exception.message.value
# Get the Details map
exception.details.each do |k, v|
print "\n"
print k
print v
print "\n"
end
print "\n"
end
else
response_object = response.data_object
response_object.instance_variables.each do |field|
print field
print "\n"
print response_object.instance_variable_get(field)
end
end
end
end
end
require 'ZOHOCRMSDK2_0'
class Bulkwrite
def self.download_bulk_write_result(download_url, destination_folder)
# """
# This method is used to download the result of bulk write job.
# :param download_url: The URL present in the download_url key in the response of Get Bulk Write Job Details.
# :param destination_folder: The absolute path where downloaded file has to be stored.
# """
# """
# example
# download_url = "https://download-accl.zoho.com/v2/crm/6735/bulk-write/347706122009/347706122009.zip"
# destination_folder = "/Users/user_name/Documents"
# """
# Get instance of BulkWriteOperations Class
bwo = ZOHOCRMSDK::BulkWrite::BulkWriteOperations.new
# Call download_bulk_write_result method that takes download_url as parameter
response = bwo.download_bulk_write_result(download_url)
unless response.nil?
status_code = response.status_code
# Get the status code from response
print "\n Status Code :" + status_code.to_s
if [204, 304].include? status_code
print(status_code == 204 ? 'No Content' : 'Not Modified')
return
end
# Check if expected instance is received.
if response.is_expected
# Get object from response
response_handler = response.data_object
# Check if expected FileBodyWrapper instance is received.
if response_handler.is_a? ZOHOCRMSDK::BulkWrite::FileBodyWrapper
file_body_wrapper = response_handler
# Get StreamWrapper instance from the returned FileBodyWrapper instance
stream_wrapper = file_body_wrapper.file
# Open the destination file where the file needs to be written in 'w' mode
File.open(destination_folder + '/' + stream_wrapper.name, 'w') do |f|
f.write(stream_wrapper.stream)
end
# Check if the request returned an exception
elsif response_handler.is_a? ZOHOCRMSDK::BulkWrite::APIException
exception = response_handler
# Get the Code
print "\n code:"
print exception.code.value
# Get the Status
print "\n status:"
print exception.status.value
# Get the Message
print "\n message:"
print exception.message.value
# Get the details map
exception.details.each do |k, v|
print "\n"
print k
print v
print "\n"
end
end
else
response_object = response.data_object
response_object.instance_variables.each do |field|
print field
print "\n"
print response_object.instance_variable_get(field)
end
end
end
end
end