【发布时间】:2020-07-15 16:11:25
【问题描述】:
我不敢相信这没有被提出,但我已经查看了大约 30 个问题,但没有一个提到这个特定场景。
背景故事
网页上有一个随时间增长的数据集。我试图在用户可以在其他列中添加信息的工作表中维护此数据的持久副本。我有一个脚本,用户在浏览器控制台中运行以抓取整个数据集。 (我每次都做整套,因为它使新用户和重复用户的流程统一,并且因为我无法合并现有数据作为停止点/过滤器)然后将抓取的数据粘贴到输入区域我的电子表格将由应用脚本处理。
导入过程旨在从输入中过滤掉现有数据,并将新的唯一数据附加到现有数据的末尾。这允许用户添加的附加信息不受干扰。
我的方法
我正在尽量减少此工作表上的脚本工作量,并依靠公式来完成尽可能多的繁重工作。为此,我决定使用 FILTER() 公式从输入中删除重复数据。我讨厌它,但我还没有找到另一个同样有效的解决方案。
工作表中有一个中间区域保存此公式的输出。因此,用户将数据粘贴到输入范围 > FILTER() 公式动态构建新数据范围 > 脚本旨在将此数据复制到现有数据的末尾。
问题
在 UI 中,Ctrl + Down 快捷键按预期工作,并将光标移动到 FILTER() 输出中数据的末尾。录制宏时,它会按照我的预期创建一个带有getNextDataCell(SpreadsheetApp.Direction.DOWN).activate(); 调用的脚本。问题是执行此脚本会导致光标一直移动到 FILTER() 公式扩展其影响的地方。
幻影数据只能被脚本检测到。我可以从这个范围复制粘贴空白行,它们在所有用户输入的目标中充当空白,但脚本也会检测新位置中的幻像数据。正如标题所示,这也适用于 UNIQUE() 公式,我假设 QUERY 和任何其他从单个单元格生成数据范围的公式。
我可以接受这些单元格的存在,让它们全部复制,然后对我的各种范围进行排序以将所有数据放在一起,但这会带来另一个问题。复制所有这些空白行会导致我的工作表中的行数迅速增加。并且随着所有复制的发生,空白单元格将在某些范围内复合,导致在几次导入中将数以万计的新行添加到工作表中。
真正的问题
有没有办法让 getNextDataCell() 忽略 FILTER 和 QUERY 等公式中的空白行?
编辑说明:我已经删除了次要问题,只专注于让 App Script 忽略空白单元格,因为显然人们认为这太宽泛了。
【问题讨论】:
-
一次只关注一个问题
-
欢迎来到 StackOverFlow,请借此机会参加 tour 并学习如何使用 How to Ask、format code、minimal reproducible example 和 Tag Info
-
@Cooper 我绝对不是 SO 新手。提出的问题都是紧密耦合的,分成 3 个问题没有多大意义。如果我这样做,我会受到 X Y 问题投诉的打击。
标签: google-apps-script google-sheets