Zapier - 输入数据排序
Zapier - Input data sorting
事情是这样的:
我在我的 Shopify 商店中使用了一个非常酷的插件,它允许您按照一系列步骤自定义您的产品。
来说明
问题是所有这些信息都没有为 Zapier 排序。本质上它显示为:
问题
它们以“订单项属性值”和“订单项属性名称”的形式出现,粘贴后它们以数组形式出现。
我需要做的是将这些名称与其值相匹配。如果可能的话,可以在 Zapier 的 GUI 中 select。
所以不用这些字段和值
"Line Properties Names" -> "Project Title","Project Description","Ebook Type"....
"Line Items Properties Values" -> "Sherlock Holmes","A story in London..", "Standard Book"...
具有这些字段和值:
"Project Title" -> "Sherlock Holmes"
"Project Description" -> "A story in London.."
"Ebook Type" -> "Standard Ebook"
有可能吗?
感谢您的宝贵时间
更新
为了澄清目的
因此,在此订单中有 3 种不同的产品。用[]分隔。产品中的值可能会有所不同,例如,如果客户决定不填写“项目详细信息”字段,则不会显示项目详细信息键和值。本质上导致产品具有不同数量的键和值。
这是一个示例:(如您所见,第一个产品与第二个产品具有不同的一组值)
输入数据
Input data Values: ["1","ebook1524837342394","Ebook~~//www.shappify-cdn.com/images/282516/127828455/001_Ebook Technical 325x325 (1).png~~ebook","Technical Ebook","Technical 15K - 0.00","All Inclusive Package - 9.00","Cookbook Instant Pot"],["ebook1524837342394"],["Detective Story based in London......","Sherlock Holmes","No Addons","No Package","10000 Words - 0.00","Fiction Book","Ebook~~//www.shappify-cdn.com/images/282516/127828453/001_Ebook Standard 325x325.png~~ebook","ebook1524837304725","1","https://cdn.shopify.com/s/files/1/0012/8814/2906/uploads/7ddee14d6e5d6c5e4396981d1702c375.jpg"]
Input data Keys: ["_master_builder","_builder_id","_builder_info","Ebook Type","Word Count","Upgrade","Project Title"],["_builder_id"],["Project Details","Project Title","Addons","Upgrade","Word Count","Ebook Type","_builder_info","_builder_id","_master_builder","Upload your file here"]
我想做什么
我想将密钥与它们的值相匹配,并能够在 Zapier GUI 上 select 它们。
使用建议代码的当前输出
Output 1stpart
Output 2ndpart
Output 3rdpart
Output 4thpart
预期输出
[{"_master_builder":"1","_builder_id":"ebook1524837342394","_builder_info":"Ebook~~//www.shappify-cdn.com/images/282516/127828455/001_Ebook Technical 325x325 (1).png~~ebook"...}]
感谢你们的帮助
这应该可以通过 for
循环实现。试试这个。
在您的 example 中,将第一个框定义为值,将第二个框定义为键。删除 运行 代码步骤之前的 var inputData...
行。
var inputData = {"keys": ["First", "Second", "Third"],
"values": ["One", "Two", "Three"]
};
//Remove the lines above before pasting in the Code step.
//You will need to configure it in the Zap.
var product = {};
for (var i = 0; i < inputData.keys.length; i++) {
var commonkey = inputData.keys[i];
product[commonkey] = inputData.values[i];
}
console.log(JSON.stringify([product]));
// already available in the zapier scope
output = [product]
啊!所以这比起初看起来有点棘手,但还不错。有两个问题:
- 您的数据以字符串形式传入
- 该字符串由多个数组对象组成,但它本身不是有效的数组对象
所以一旦我们正确地解析出来,它还不错。
// just used for testing outside zapier
// these are comma separated strings
const inputData = {
keys: '_master_builder,_builder_id,_builder_info,Ebook Type,Word Count,Upgrade,Project Title,_builder_id,Project Details,Project Title,Addons,Upgrade,Word Count,Ebook Type,_builder_info,_builder_id,_master_builder,Upload your file here',
values: '1,ebook1524837342394,Ebook~~//www.shappify-cdn.com/images/282516/127828455/001_Ebook Technical 325x325 (1).png~~ebook,Technical Ebook,Technical 15K - 0.00,All Inclusive Package - 9.00,Cookbook Instant Pot,ebook1524837342394,Detective Story based in London......,Sherlock Holmes,No Addons,No Package,10000 Words - 0.00,Fiction Book,Ebook~~//www.shappify-cdn.com/images/282516/127828453/001_Ebook Standard 325x325.png~~ebook,ebook1524837304725,1,https://cdn.shopify.com/s/files/1/0012/8814/2906/uploads/7ddee14d6e5d6c5e4396981d1702c375.jpg'
}
// arrays must be the same length
const zipArrays = (a, b) => {
let res = {}
a.forEach((val, i) => {
res[val] = b[i]
})
return res
}
// have to convert strings to actual arrays
// this will blow up if any of the data has commas in it
const keys = inputData.keys.split(',')
const vals = inputData.values.split(',')
// now we have real arrays
const result = {}
// copy keys onto the result, overwriting old ones
Object.assign(result, zipArrays(keys, vals))
console.log(result)
/*
{ _master_builder: '1',
_builder_id: 'ebook1524837304725',
_builder_info: 'Ebook~~//www.shappify-cdn.com/images/282516/127828453/001_Ebook Standard 325x325.png~~ebook',
'Ebook Type': 'Fiction Book',
'Word Count': '10000 Words - 0.00',
Upgrade: 'No Package',
'Project Title': 'Sherlock Holmes',
'Project Details': 'Detective Story based in London......',
Addons: 'No Addons',
'Upload your file here': 'https://cdn.shopify.com/s/files/1/0012/8814/2906/uploads/7ddee14d6e5d6c5e4396981d1702c375.jpg' }
*/
// return result
照原样,有很多重复的键,所以输出小于输入。如果您想对输出进行不同的分组,您还可以调整此代码以更好地匹配您的输入。
希望对您有所帮助!
事情是这样的:
我在我的 Shopify 商店中使用了一个非常酷的插件,它允许您按照一系列步骤自定义您的产品。
来说明
问题是所有这些信息都没有为 Zapier 排序。本质上它显示为:
问题
它们以“订单项属性值”和“订单项属性名称”的形式出现,粘贴后它们以数组形式出现。
我需要做的是将这些名称与其值相匹配。如果可能的话,可以在 Zapier 的 GUI 中 select。
所以不用这些字段和值
"Line Properties Names" -> "Project Title","Project Description","Ebook Type"....
"Line Items Properties Values" -> "Sherlock Holmes","A story in London..", "Standard Book"...
具有这些字段和值:
"Project Title" -> "Sherlock Holmes"
"Project Description" -> "A story in London.."
"Ebook Type" -> "Standard Ebook"
有可能吗?
感谢您的宝贵时间
更新
为了澄清目的
因此,在此订单中有 3 种不同的产品。用[]分隔。产品中的值可能会有所不同,例如,如果客户决定不填写“项目详细信息”字段,则不会显示项目详细信息键和值。本质上导致产品具有不同数量的键和值。
这是一个示例:(如您所见,第一个产品与第二个产品具有不同的一组值)
输入数据
Input data Values: ["1","ebook1524837342394","Ebook~~//www.shappify-cdn.com/images/282516/127828455/001_Ebook Technical 325x325 (1).png~~ebook","Technical Ebook","Technical 15K - 0.00","All Inclusive Package - 9.00","Cookbook Instant Pot"],["ebook1524837342394"],["Detective Story based in London......","Sherlock Holmes","No Addons","No Package","10000 Words - 0.00","Fiction Book","Ebook~~//www.shappify-cdn.com/images/282516/127828453/001_Ebook Standard 325x325.png~~ebook","ebook1524837304725","1","https://cdn.shopify.com/s/files/1/0012/8814/2906/uploads/7ddee14d6e5d6c5e4396981d1702c375.jpg"]
Input data Keys: ["_master_builder","_builder_id","_builder_info","Ebook Type","Word Count","Upgrade","Project Title"],["_builder_id"],["Project Details","Project Title","Addons","Upgrade","Word Count","Ebook Type","_builder_info","_builder_id","_master_builder","Upload your file here"]
我想做什么
我想将密钥与它们的值相匹配,并能够在 Zapier GUI 上 select 它们。
使用建议代码的当前输出
Output 1stpart
Output 2ndpart
Output 3rdpart
Output 4thpart
预期输出
[{"_master_builder":"1","_builder_id":"ebook1524837342394","_builder_info":"Ebook~~//www.shappify-cdn.com/images/282516/127828455/001_Ebook Technical 325x325 (1).png~~ebook"...}]
感谢你们的帮助
这应该可以通过 for
循环实现。试试这个。
在您的 example 中,将第一个框定义为值,将第二个框定义为键。删除 运行 代码步骤之前的 var inputData...
行。
var inputData = {"keys": ["First", "Second", "Third"],
"values": ["One", "Two", "Three"]
};
//Remove the lines above before pasting in the Code step.
//You will need to configure it in the Zap.
var product = {};
for (var i = 0; i < inputData.keys.length; i++) {
var commonkey = inputData.keys[i];
product[commonkey] = inputData.values[i];
}
console.log(JSON.stringify([product]));
// already available in the zapier scope
output = [product]
啊!所以这比起初看起来有点棘手,但还不错。有两个问题:
- 您的数据以字符串形式传入
- 该字符串由多个数组对象组成,但它本身不是有效的数组对象
所以一旦我们正确地解析出来,它还不错。
// just used for testing outside zapier
// these are comma separated strings
const inputData = {
keys: '_master_builder,_builder_id,_builder_info,Ebook Type,Word Count,Upgrade,Project Title,_builder_id,Project Details,Project Title,Addons,Upgrade,Word Count,Ebook Type,_builder_info,_builder_id,_master_builder,Upload your file here',
values: '1,ebook1524837342394,Ebook~~//www.shappify-cdn.com/images/282516/127828455/001_Ebook Technical 325x325 (1).png~~ebook,Technical Ebook,Technical 15K - 0.00,All Inclusive Package - 9.00,Cookbook Instant Pot,ebook1524837342394,Detective Story based in London......,Sherlock Holmes,No Addons,No Package,10000 Words - 0.00,Fiction Book,Ebook~~//www.shappify-cdn.com/images/282516/127828453/001_Ebook Standard 325x325.png~~ebook,ebook1524837304725,1,https://cdn.shopify.com/s/files/1/0012/8814/2906/uploads/7ddee14d6e5d6c5e4396981d1702c375.jpg'
}
// arrays must be the same length
const zipArrays = (a, b) => {
let res = {}
a.forEach((val, i) => {
res[val] = b[i]
})
return res
}
// have to convert strings to actual arrays
// this will blow up if any of the data has commas in it
const keys = inputData.keys.split(',')
const vals = inputData.values.split(',')
// now we have real arrays
const result = {}
// copy keys onto the result, overwriting old ones
Object.assign(result, zipArrays(keys, vals))
console.log(result)
/*
{ _master_builder: '1',
_builder_id: 'ebook1524837304725',
_builder_info: 'Ebook~~//www.shappify-cdn.com/images/282516/127828453/001_Ebook Standard 325x325.png~~ebook',
'Ebook Type': 'Fiction Book',
'Word Count': '10000 Words - 0.00',
Upgrade: 'No Package',
'Project Title': 'Sherlock Holmes',
'Project Details': 'Detective Story based in London......',
Addons: 'No Addons',
'Upload your file here': 'https://cdn.shopify.com/s/files/1/0012/8814/2906/uploads/7ddee14d6e5d6c5e4396981d1702c375.jpg' }
*/
// return result
照原样,有很多重复的键,所以输出小于输入。如果您想对输出进行不同的分组,您还可以调整此代码以更好地匹配您的输入。
希望对您有所帮助!