從 JS 開始。我試圖在標題中簡潔,不能。我在作業表中有一些資料:

我想要并有所成就的是做兩件事
按 id 分組并對數量求和,按產品重新格式化 pr 列,只是一個名稱。我將嘗試在此處使代碼可重現,因此更容易捕獲錯誤(我可能會在不問的情況下解決它,:O,我會留下這個)
//var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
//var sheet = spreadsheet.getSheetByName("SortProductos");
var a = [[ 66 ],[ 66 ],[ 66 ],[ 66 ],[ 66 ],[ 24 ],[ 330 ],[ 155 ],[ 127 ],[ 110 ],[ 272 ],[ 272 ],[ 272 ],[ 272 ],[ 272 ],[ 70 ],[ 78 ]];
var b = [ [ 1 ],[ 1 ],[ 1 ],[ 1 ],[ 1 ],[ 2 ],[ 2 ],[ 1 ],[ 1 ],[ 1 ],[ 1 ],[ 1 ],[ 2 ],[ 1 ],[ 1 ], [ 1 ],[ 1 ] ];
var c = [ [ 'PD-1346' ],[ 'PD-1000-B' ],[ 'PD-1028' ],[ 'PD-711' ],[ 'PD-58' ],[ 'PD-1445' ],[ 'PD-860' ],[ 'PD-648' ],[ 'PD-1483' ],[ 'PD-1044' ],[ 'PD-58' ],[ 'PD-65' ],[ 'PD-1499' ],[ 'PD-368' ],[ 'PD-465' ],[ 'PD-73B' ],[ 'PD-1469' ] ];
var pNameF = [];
for (let i=0; i<c.length;i ) {
var temp = c[i][0];
if (temp.startsWith('PD-')) {
pNameF.push('FRASLE')
}
}
const data = a.map(function(a, indice) {
return {
id: a[0],
qty: b[indice][0],
pName: pNameF[indice][0],
}
})
console.log(data);
const inputVal = [
...data.reduce(
(map, item) => {
const { id: key, qty } = item;
const prev = map.get(key);
if(prev) {
prev.qty = qty
} else {
map.set(key, Object.assign({}, item))
}
return map
},
new Map()
).values()
]
console.log(inputVal)
const inputFinal = [];
for (let i=0; i<inputVal.length; i ) {
let id = inputVal[i][0];
let qty = inputVal[i][1];
let prodN = inputVal[i][2];
inputFinal.push([id, qty, prodN])
}
console.log(inputFinal);
所以,出現了幾個問題:首先,IDK 為什么 arr.map 只捕獲整個單詞的第一個字母而不是整個字串????談論 var = pNameF
但是讓我們忽略這一點,reduce 確實有效,但如果沒有,我必須將其重新轉換為 google 表格的二維陣列,我不能使用 .setValues();
然而 for 說 undefined 我猜這意味著 const inputVal 沒有被填充?但如何?如果我之前記錄它并顯示內容。
我確信有更好的方法來做這一切,但我正在嘗試用我理解的東西來做一些事情,減少是最不被理解的并且映射接近。
uj5u.com熱心網友回復:
問題:
首先:pNameF是一個一維陣列,因此訪問索引然后進一步讓[0]你得到F而不是FRASLE.
要解決此問題,請修改:
pNameF.push('FRASLE')
到:
pNameF.push(['FRASLE'])
[0]或者只是在訪問該值時洗掉。
Next : 您正試影像訪問inputVal二維陣列一樣訪問它,但事實并非如此。它是一個物件陣列。您需要改為訪問每個元素的鍵。
從:
for (let i = 0; i < inputVal.length; i ) {
let id = inputVal[i][0];
let qty = inputVal[i][1];
let prodN = inputVal[i][2];
inputFinal.push([id, qty, prodN])
}
到:
for (let i = 0; i < inputVal.length; i ) {
let id = inputVal[i].id;
let qty = inputVal[i].qty;
let prodN = inputVal[i].pName;
inputFinal.push([id, qty, prodN])
}
腳本輸出:

您現在應該可以使用它來 setValues()
sheet.getRange(1, 1, inputFinal.length, inputFinal[0].length).setValues(inputFinal);

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/411505.html
標籤:
