I have a webhook set up to catch all new orders from a Shopify store. Zapier captures all of the information from the order as variables. Anything in the following code with the prefix "inputData" is data extracted directly from the Shopify new order webhook.
I'm trying to reformat this data a bit, convert any PDF files attached to the order to JPEG using ConvertAPI, then submit the order to Printify via their API. API keys have obviously been removed.
As it stands, I am receiving an "Unexpected Token" error from Zapier when I try to test this code. Any advice would be greatly appreciated, thanks in advance.
//input data from shopify (not included in actual code) var inputData = { order_number : "1234", shopify_id : "123456789", line_item_name : 'Test Product 1, Test Product 2, Test Product 3', line_item_sku : "P-2-50-33728-ME01, 21212391028-12345, P-2-50-33726-ME01", line_item_fulfillment : "manual, printify, manual", line_item_properties : '12345,123456789-abcdefg123456789,https://www.google.com/,1,https://www.google.com/google.jpg,https://www.google.com/google.svg,2,12346,123456789-abcdefg123456790,https://www.google.com/,1,https://www.google.com/google.jpg,https://www.google.com/google.svg,2', shipping_fname : "John", shipping_lname : "Thompson", shipping_email : "jthompson@email.com", shipping_phone : "800.555.5555", shipping_country : "United States", shipping_region : "VA", shipping_address1 : "1234 Main St", shipping_address2 : "Apt 2", shipping_city : "Richmond", shipping_zip : "23223", } //prefixes var personalized_prefix = "Prs-" var non_personalized_prefix = "NonPrs-" var custom_image_url_prefix = 'https://fpd-shopify-v2.herokuapp.com/api/fe/line_item_cache_print_pdf/' //create arrays var sku_array = inputData.line_item_sku.split(", "); var properties_array = inputData.line_item_properties.split(","); //count personalized items var personalized_skus = sku_array.filter(function (sku) { return sku[0].toLowerCase() === 'p'; }); //If there are no personalized items, end script if (personalized_skus.length = 0) { throw new Error("No Personalized Items"); } //Begin Image Conversion var image_url = new Array(); var requestOptions = { method: 'POST', redirect: 'follow' }; personalized_skus.forEach(async(personalized_sku, index) => { let pdf_url = custom_image_url_prefix.concat(properties_array[(7 * index) + 1]); const response = await (`httpsdo.convertapi.com//Pdf2Image?ApiKey=[my_key]&File=${pdf_url}&ImageResolutionH=300&ImageResolutionV=300&JpgQuality=100&OutputFormat=jpg&StoreFile=true&Timeout=900`, requestOptions) .then(response => console.log(response)) .then(result => image_url[index] = result) .catch(error => console.log('error', error)) }); //build json for printify order var printify_order = {}; //Shopify order ID and order number printify_order.external_id = personalized_prefix.concat(inputData.shopify_id); printify_order.label = personalized_prefix.concat(inputData.order_number); //add personalized products printify_order.line_items = new Array(); personalized_skus.forEach((personalized_sku, index) => { let p_sku_split = personalized_sku.split("-"); printify_order.line_items[index] = { print_provider_id : p_sku_split[1], blueprint_id : p_sku_split[2], variant_id : p_sku_split[3], print_areas: { front: image_url[index] } } }); //Add shipping information printify_order.shipping_method = 1; printify_order.send_shipping_notification = false; printify_order.address_to = {}; printify_order.address_to.first_name = inputData.shipping_fname; printify_order.address_to.last_name = inputData.shipping_lname; printify_order.address_to.email = inputData.shipping_email; printify_order.address_to.phone = inputData.shipping_phone; printify_order.address_to.country = inputData.shipping_country; printify_order.address_to.region = inputData.shipping_region; printify_order.address_to.address1 = inputData.shipping_address1; printify_order.address_to.address2 = inputData.shipping_address2; printify_order.address_to.city = inputData.shipping_city; printify_order.address_to.zip = inputData.shipping_zip; var json_order = JSON.stringify(printify_order); var requestOptions = { method: 'POST', headers: { Content-type : "application/json", Authorization : "Bearer [api_key]" }, body: json_order, redirect: 'follow' }; fetch("https://api.printify.com/v1/shops/[shop_id]/orders.json", requestOptions) .then(response => response.text()) .then(result => callback(null, result)) .catch(error => callback(null, error));
https://stackoverflow.com/questions/65894920/api-call-from-zapier-javascript-unexpected-token-error January 26, 2021 at 09:58AM
没有评论:
发表评论