为什么我的谷歌表格自定义函数不能与 arrayformula 一起使用?

问题描述 投票:0回答:1

我正在使用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)
    }
  }
}
google-sheets google-apps-script try-catch array-formulas
1个回答
0
投票

尝试像这样修改循环,以便它将 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);
    }
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.