我有 G-AppScript 代码,应该将项目批次作为父“文章代码”的子项,如下图所示:
谷歌表格数据表:
目标结果
我尝试写下面的链接:
G-AppS脚本
function writeDataToFirebase() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var data = sheet.getDataRange().getValues();
var dataToImport = {};
for(var i = 1; i < data.length; i++) {
var ItemCode = data[i][0];
var Batch = data[i][3];
dataToImport[ ItemCode ] = {
ItemDesc:data[i][1],
VenCode:data[i][8],
VenName:data[i][9],
}
for(var i = 1; i < data.length; i++) {
var Batch = data[i][3];
dataToImport[ Batch ] = {
barcode:data[i][2],
ExpDate:data[i][4],
ComPrice:data[i][5],
TaxVal:data[i][6],
PubPrice:data[i][7]
}
}
}
var firebaseUrl = "https://example.firebaseio.com/";
var base = FirebaseApp.getDatabaseByUrl(firebaseUrl);
base.setData("itemsInventory", dataToImport);
}
但我没有将批次作为项目代码“父级”的子级
这就是我得到的结果。
如果您希望批次成为商品编号的子批次,则需要嵌套循环,迭代每个父批次的批次,并将它们推入内部循环内的批次数组中。然后将批处理数组作为键值对插入到dataToImport[ ItemCode]
- 这适用于外循环内的每个商品编号。
下面是实现此功能的代码片段:
function writeDataToFirebase() {
var ss = SpreadsheetApp.openById("XXX");
var sheet = ss.getActiveSheet();
var data = sheet.getDataRange().getValues();
var dataToImport = {};
var allBatches ={};
for(var i = 1; i < data.length; i++) {
allBatches =[];
var ItemCode = data[i][0];
for(var j = i; j < data.length; j++) {
var Batch = data[j][3];
if(data[j][0]==ItemCode)
{
allBatches[Batch] = {
barcode:data[j][2],
ExpDate:data[j][4],
ComPrice:data[j][5],
TaxVal:data[j][6],
PubPrice:data[j][7]
}
}
else
{
break;
}
}
if(ItemCode != data[i-1][0])
{
dataToImport[ ItemCode ] = {
ItemDesc:data[i][1],
VenCode:data[i][8],
VenName:data[i][9],
Batch:allBatches
}
}
}
var base = FirebaseApp.getDatabaseByUrl("XXX")
base.setData("", dataToImport);
}
以及结果的截图:
请注意字典中括号之间的参数allBatches[Batch]
and dataToImport[ItemCode]
必须是数字(不带字母)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)