首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >App脚本返回主表项目中的array_literal错误

App脚本返回主表项目中的array_literal错误
EN

Stack Overflow用户
提问于 2020-09-28 16:04:07
回答 1查看 174关注 0票数 0

我正在进行一个主表项目,使用本教程中的指导方针:https://youtu.be/SyB4MVkWV3c

基本上,这个脚本在我的文档中的每个工作表(选项卡)中过滤列"E“,每次它用"Pendiente”这个词点击时,都会在"Master“选项卡上列出一些值。目标是在我的主表中列出所有待定的订单,每当订单完全填写时,从任何选项卡中删除"Pendiente“(未决)单元格,这样它就不会显示在我的主选项卡上。

代码语言:javascript
复制
const ss = SpreadsheetApp.getActiveSpreadsheet();
  const ignoreSheets =  ["Master"];
  
  const allSheets = ss.getSheets();
  
  const filteredListOfSheets = allSheets.filter(s => ignoreSheets.indexOf(s.getSheetName()) == -1 )
  
  let formulaArray = filteredListOfSheets.map(s => `filter({'${s.getSheetName()}'!B2:E, "${s.getSheetName()} / Fila "&ROW('${s.getSheetName()}'!C2:C)},(ISNUMBER('${s.getSheetName()}'!C2:C)),'${s.getSheetName()}'!E2:E="Pendiente")`)
  
  let formulaText = "={" + formulaArray.join(";") + "}";
  //console.log(formulaText);
  ss.getSheetByName("Master").getRange("A2").setFormula(formulaText);

这是很好的工作,直到我回到某一点,例如,并删除"pendiente“这个词从任何选项卡(不同于主选项卡)。从此,公式开始显示此错误:

“在array_literal中,数组文字缺少一个或多个行的值”

例如,我知道当有合并的单元格时会出现这种错误,但这不是我的情况。另外,我已经检查过了,所有的选项卡都有相同的列数。由此得出的公式表明:

={filter({'Ventas 17-9‘’!B2:e,"Ventas 17-9/ Fila "&ROW('Ventas 17-9'!C2:C)},( 'Ventas 17-9‘!C2:C),’Ventas 17-9‘!E2:E=“Pendiente”);

奇怪的是,在我开始删除这个"Pendiente“单元之前,脚本工作得很好。也许这和我的共享配置有关吧?此脚本是从Gsuite帐户编写的,电子表格是与非Gsuite用户共享的。

截图:主标签

“示例”选项卡,从中提取信息。

}

EN

回答 1

Stack Overflow用户

发布于 2020-09-29 08:16:31

您将得到该错误,因为公式filter没有在您的一个工作表中找到匹配的情况(如果工作表不包含Pendiente,您将遇到此错误),因此它返回一个占用单个单元格值的N/A

这是一个格式错误的数组,因为在filter匹配搜索的工作表上,您要打印5列(您正在拖动的数据),而对于没有找到Pendiente的列,则只返回一个N/A值。

要解决这个问题,您可以将您的filter公式包装在一个iferror中,它将将N/A值更改为5个值,这些值将与实际匹配筛选器的其他工作表匹配。重要的是,为了避免此错误,您的所有行都有相同的列数。

因此,要解决这个问题,请将脚本的行更改为以下内容(当然,不是0,您可以打印任何想要的内容,但必须在所有5列中打印):

代码语言:javascript
复制
let formulaArray = filteredListOfSheets.map(s => `iferror(filter({'${s.getSheetName()}'!B2:E, "${s.getSheetName()} / Fila "&ROW('${s.getSheetName()}'!C2:C)},(ISNUMBER('${s.getSheetName()}'!C2:C)),'${s.getSheetName()}'!E2:E="Pendiente"),{"","","","",""})`)

参考资料:

IFERROR

过滤器

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64105712

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档