我正在使用decodeuricomponent构建自定义函数并使用“try/catch”处理URIError: malformed URI。一切都很好,直到我不得不更改代码以使用 arrayformula(内置函数)。
我已经尝试了多种方法来做到这一点,但没有一个起作用。
else 部分工作正常,但是当它是一个数组时(使用 arrayformula 时始终为 true),将 encodedString.map(row => row.map(cell => unescape(cell))) 返回到所有单元格。
即使我使用 arrayformula,我也需要一个在单元格级别(每个数组位置单独)工作的解决方案。
我的脚本
function stringDecoder(encodedString) {
if(Array.isArray(encodedString)===true){
try{
return encodedString.map(row => row.map(cell => decodeURIComponent(cell)))
}
catch(err){
return encodedString.map(row => row.map(cell => unescape(cell)))
}
}
else{
try{
return decodeURIComponent(encodedString)
}
catch(err){
return unescape(encodedString)
}
}
}
尝试像这样修改循环,以便它将 try/catch 单独应用于每个单元格:
function stringDecoder(encodedString) {
if (Array.isArray(encodedString)) {
return encodedString.map(row => row.map(cell => {
try {
return decodeURIComponent(cell);
} catch (err) {
return unescape(cell);
}
}));
} else {
try {
return decodeURIComponent(encodedString);
} catch (err) {
return unescape(encodedString);
}
}
}