[英]How to combine 2 multidimensional arrays replacing some of array1's element with the one from arrray2 using Google Apps Script?
I've been trying to get this one done, without any success.我一直在努力完成这个,但没有成功。
This is data to be placed where there is no formula.这是要放置在没有公式的地方的数据。 So, the idea is to merge these two arrays and place it at once.
所以,想法是合并这两个 arrays 并立即放置。
array1 =
[
["item1","","","details1"],
["item2","","","details2"],
]
This array contains formulas grabbed from the destination range where the incoming data will be placed, but since the formulas are needed,该数组包含从将放置传入数据的目标范围中获取的公式,但由于需要公式,
array2 =
[
["","=iferror(VLOOKUP(A63,'Client List'!$A$1:$S,19,0),"")","=iferror(if(B63="Agency", 'Reference Info'!$C$7, VLOOKUP(A63,'Client List'!$A$1:$T,20,0)),"")",""],
["","=iferror(VLOOKUP(A64,'Client List'!$A$1:$S,19,0),"")","=iferror(if(B64="Agency", 'Reference Info'!$C$7, VLOOKUP(A64,'Client List'!$A$1:$T,20,0)),"")",""]
]
Expected Result预期结果
array2 =
[
["item1","=iferror(VLOOKUP(A63,'Client List'!$A$1:$S,19,0),"")","=iferror(if(B63="Agency", 'Reference Info'!$C$7, VLOOKUP(A63,'Client List'!$A$1:$T,20,0)),"")","details1"],
["item2","=iferror(VLOOKUP(A64,'Client List'!$A$1:$S,19,0),"")","=iferror(if(B64="Agency", 'Reference Info'!$C$7, VLOOKUP(A64,'Client List'!$A$1:$T,20,0)),"")","details2"]
]
This is my attempt, but I can't seem to get to the bottom of it:这是我的尝试,但我似乎无法深入了解它:
let finalRowValues = []
for (let a = 0; a < array2.length; a++) {
for (let n = 0; n < array1.length; n++) {
array2[a].forEach(function(value, j){
if(value == '' && array1[n][j] != ''){
finalRowValues.push(array1[n][j])
} else {
finalRowValues.push(value)
}
})
}
}
Here's a simple way to insert the formula if no value is present:如果没有值,这是插入公式的简单方法:
function myFunction() {
const formulas = [[]]
const values = [[]]
return values.map((row, rowIndex) => row.map((col, colIndex) => col || formulas[rowIndex][colIndex]))
}
This is one of the way's to do it.这是做到这一点的方法之一。
const array1 =
[
["item1","","","details1"],
["item2","","","details2"],
]
const array2 =
[
["",`=iferror(VLOOKUP(A63,'Client List'!$A$1:$S,19,0),"")`,`=iferror(if(B63="Agency", 'Reference Info'!$C$7, VLOOKUP(A63,'Client List'!$A$1:$T,20,0)),"")`,""],
["",`=iferror(VLOOKUP(A64,'Client List'!$A$1:$S,19,0),"")`,`=iferror(if(B64="Agency", 'Reference Info'!$C$7, VLOOKUP(A64,'Client List'!$A$1:$T,20,0)),"")`,""]
]
const result = array1.map((arr, i) => {
const [place1, place2, place3, place4] = arr
if(place2 == ""){
return [place1, array2[i][1], array2[i][2],place4]
} else {
return arr
}
})
console.log(result)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.